- 01 Jan, 2020 2 commits
-
-
Dridi Boukelmoune authored
The previous tweak paid off, the problem is not an unexpected ReqAcct when this test fails, but a lack of logs during the check.
-
Federico G. Schwindt authored
-
- 31 Dec, 2019 2 commits
-
-
Dridi Boukelmoune authored
The test cases disabling the accept_filter parameter are those involving GET requests with a body that are meant to be cached, and one test case covering OOB data. The rest uses the POST method since the httpready filter will only let syntactically correct GET or HEAD methods pass to the application. Apparently FreeBSD's httpready filter considers that a GET request with a body is syntactically incorrect although this is not specifically said in the manual. The HTTP specification doesn't forbid such requests and they are hard to justify considering the semantics of GET and HEAD, but there are products in the wild relying on that. On the other hand GET\r\n\r\n isn't considered malformed, see r01881.vtc. We don't need the dataready filter on FreeBSD for listen addresses that expect a PROXY protocol header, the httpready filter will effectively work like that if the request doesn't look like a GET or a HEAD.
-
Dridi Boukelmoune authored
Trying to understand why I was seeing setsockopt fail on FreeBSD VTEST boxes and why it failed with an undocumented ENOENT I finally realized that I needed to kldload accf_http beforehand. The ENOENT errno was probably a result of accept_filter code not finding a kernel module for "httpready".
-
- 30 Dec, 2019 7 commits
-
-
Dridi Boukelmoune authored
I couldn't reproduce the failure reported by VTEST but hopefully this will shed some light next time it happens. Better diff with the --word-diff option.
-
Dridi Boukelmoune authored
The change in u00011.vtc is the result of having two commands starting with "pi", breaking auto-completion. Fortunately "pin\t" still does the trick.
-
Poul-Henning Kamp authored
-
Dridi Boukelmoune authored
It was a bit racy in the sense that the logs for c2 could be committed before the c1 logs. I hardened the expectations a bit in the process.
-
Dridi Boukelmoune authored
This adds the errno value to error logs for TCP fast open and accept filters. For FreeBSD errno is cleared prior to calling setsockopt with the hope that it will help understand if it's actually failing with an undocumented ENOENT. Speaking of documentation, the return value is either 0 or -1 for so there's no point in logging that.
-
Dridi Boukelmoune authored
Once all instances of a given test are started all of the remaining tests would free the test data structure, we needed another counter to keep track of ongoing tests so that only the last one to finish would do the single free.
-
Dridi Boukelmoune authored
-
- 29 Dec, 2019 7 commits
-
-
Guillaume Quintard authored
-
Guillaume Quintard authored
-
Guillaume Quintard authored
-
Guillaume Quintard authored
-
Guillaume Quintard authored
-
Guillaume Quintard authored
-
Guillaume Quintard authored
-
- 27 Dec, 2019 5 commits
-
-
Dridi Boukelmoune authored
This is only a matter of leaving the acceptor loop to always free the poolsock before returning from the function. This was initially done in only one place out of three, with no room to exit the accept inner loop in the absence of an incoming connection. With this we may have everything in place to drop the drop_pools debug flag. Refs 656982a5 Closes #3177
-
Dridi Boukelmoune authored
For those that aren't leaked on purpose, that is...
-
Dridi Boukelmoune authored
Upon failure, don't destroy the underlying director implementation. When the deletion code was split in c671bb66 in order to be reused in 61529854, it mistakenly included the director implementation. Instead, it's really the caller's job to tear down the backend if it couldn't be added. Since vbe_destroy operates on a director, it is split in two to avoid reintroducing the previous "undo" code duplication. Refs #3176
-
Dridi Boukelmoune authored
Otherwise at this point nothing is undone. And backend creation while a VCL is stuck in the COOLING state should be unlikely enough that we can assume the happy path by default. Refs #3176
-
Federico G. Schwindt authored
Fixed in 7ff636dc.
-
- 26 Dec, 2019 3 commits
-
-
Dridi Boukelmoune authored
-
Dridi Boukelmoune authored
When a VCL is in the COOLING state it is supposed to delete the director that was being added, but at the same time when a VBE backend fails to be added as a director it would also undo itself. This is in general a code path very hard to reach because either this happens in a worker and the opportunistic check always kicks in to hide the problem or this is done asynchronously (e.g. non-blocking lookups to create dynamic backends) and the race window is very small. In order to solve this the opportunistic check is skipped in VTC mode. The test coverage with vmod_debug is done synchronously to make things easier, but for this reason vbe_destroy can no longer expect to only run in the CLI thread. This is inspired by a similar patch by Martin for a different branch, since VRT_AddDirector deletes the backend upon failure, everything needs to be set up beforehand. We have to tolerate backend creation attempts in a COOLING VCL because in the asynchronous case the VCL temperature will change before COLD events are dispatched so there's no way to prevent a race. Closes #3176
-
Dridi Boukelmoune authored
Refs #3176
-
- 24 Dec, 2019 3 commits
-
-
Guillaume Quintard authored
if version is trunk, change it to the current date and add a flag file so that packages can be suffixed with -weekly/.weekly depending on the platform
-
Martin Blix Grydeland authored
VRT_delete_backend() sets be->cooled to non-zero as the only place where that is done. Assert that it is zero on entry as a check that VRT_delete_backend isn't called multiple times.
-
Martin Blix Grydeland authored
Several functions (VBE_Poll and vbe_destroy) tests be->cooled == 0 to determine which of the two lists backends and cool_backends a specific instance currently lives on. If the flag is in the process of being changed, then the wrong list head may be used and will result in strange bugs.
-
- 23 Dec, 2019 4 commits
-
-
Dridi Boukelmoune authored
We don't need randomness where we could have determinism.
-
Dridi Boukelmoune authored
Except in r02275.vtc until the code it refers to stops referring to subroutines as methods. While I was searching for relevant tests cases I also broke some long lines. Refs 17457b48
-
Dridi Boukelmoune authored
Refs 17457b48
-
Dridi Boukelmoune authored
-
- 21 Dec, 2019 1 commit
-
-
Nils Goroll authored
While, in most of the code, we now use SA_*_ADDR and format the address/port when needed, for the client ip and port, there still exist formatted strings as session attributes. I recently came across this in a different context and wondered if we should remove these string session attributes, but as we use them multiple times for each request, that would only imply additional overhead for repeated string formatting. So I think we should keep them for now, but we might want to consider to add to struct suckaddr optional formatted strings to avoid the duplicated formatting which already happens. This commit adds a regression test. Motivated by #3173
-
- 20 Dec, 2019 6 commits
-
-
Dridi Boukelmoune authored
Martin entrusted me with those changes after I pointed out that [core] was not a great prefix considering that VSL records already have the notion of a prefix. I opted for: - an actionable "vsl:" prefix for core notice messages - a prefix naming scheme mapping to manual pages As a result I changed the documentation a bit. Better diff with --word-diff --ignore-all-space options.
-
Guillaume Quintard authored
-
Guillaume Quintard authored
-
Martin Blix Grydeland authored
Log a notice message when delaying a conditional fetch and the stale template object is still streaming.
-
Martin Blix Grydeland authored
This VSL tag will be used for informational messages related to exceptional handling of requests.
-
Martin Blix Grydeland authored
Wait for the stale object to become fully fetched, so that we can catch fetch errors, before we unbusy the new object. This serves two purposes. First it helps with request coalescing, and stops long chains of IMS-updated short-TTL objects all streaming from a single slow body fetch. Second it makes sure that all the object attributes are complete when we copy them (this would be an issue for ie OA_GZIPBITS). This patch OBE's r01646.vtc, and slightly patches r01648.vtc to expect a 503 instead of a 200 and a broken connection on the failing client. Fixes: #3089
-