Re: [VOTE] Release Apache httpd 2.4.29 as GA
Steffen in gmane.comp.apache.devel (Thu, 19 Oct 2017 23:15:32 +0200): >I said before: In Apache.dsw is now project xml removed, it is not >building out of the box with current released apr-util. With coming >apr-util 1.6.1 it should be possible to build. > >With the expat/xml changes in apr-util and httpd, it is now a hard job >for most win users to build. https://www.mail-archive.com/dev@apr.apache.org/msg27344.html -- Jan
Re: [Bug 61551] Event MPM workers stuck in Gracefully Finishing with no connections left
On Sun, Oct 1, 2017 at 2:50 PM,wrote: > https://bz.apache.org/bugzilla/show_bug.cgi?id=61551 > > --- Comment #18 from Eric Covener --- > > Maybe a bit premature to ask mod_Security to make a change API wise. > > Looks like a process_connection() hook could complete without changing > the state and there is no catch-all for that in process_socket(). Yann, > probably up your alley how we could ditch that connection. Hard for > mod_security to know we expect it to do anything (set it to linger? How about > allowing errors returned by process_connection? I came up to the same solution, how about: Index: server/mpm/event/event.c === --- server/mpm/event/event.c(revision 1814399) +++ server/mpm/event/event.c(working copy) @@ -1010,8 +1010,8 @@ static void process_socket(apr_thread_t *thd, apr_ * otherwise write, should set the sense appropriately. */ apr_atomic_inc32(_count); -ap_run_process_connection(c); -if (cs->pub.state != CONN_STATE_SUSPENDED) { +rc = ap_run_process_connection(c); +if (rc || cs->pub.state != CONN_STATE_SUSPENDED) { cs->pub.state = CONN_STATE_LINGER; } apr_atomic_dec32(_count); @@ -1018,12 +1018,23 @@ static void process_socket(apr_thread_t *thd, apr_ } else if (cs->pub.state == CONN_STATE_READ_REQUEST_LINE) { read_request: -ap_run_process_connection(c); +rc = ap_run_process_connection(c); -/* state will be updated upon return - * fall thru to either wait for readability/timeout or - * do lingering close +/* State will be updated upon successful return: fall thru to either + * wait for readability/timeout, do write completion or lingering + * close. But forcibly close the connection if the run failed (handler + * raised an error for it) or the state is something unexpected at the + * MPM level (meaning that no module handled it and we can't do much + * here; note that if a handler wants mpm_event to keep POLLIN for the + * rest of the request line it should use CHECK_REQUEST_LINE_READABLE + * and not simply return OK with the initial READ_REQUEST_LINE state). */ +if (rc || (cs->pub.state != CONN_STATE_CHECK_REQUEST_LINE_READABLE + && cs->pub.state != CONN_STATE_WRITE_COMPLETION + && cs->pub.state != CONN_STATE_SUSPENDED + && cs->pub.state != CONN_STATE_LINGER)) { +cs->pub.state = CONN_STATE_LINGER; +} } if (cs->pub.state == CONN_STATE_WRITE_COMPLETION) { ? It shouldn't break anything since no module/handler can currently return any other state without mpm_event to simply forget about the connection (leak it). I also don't see why we should continue if some process_connection hook failed. That should address the mod_security case I think. Thoughts?
Re: [VOTE] Release httpd 2.5.0-alpha
Just to clarify one aspect you asked about; On Tue, Nov 7, 2017 at 8:36 PM, Daniel Ruggeriwrote: > > https://dist.apache.org/repos/dist/dev/httpd/ is also http://httpd.apache.org/dev/dist/ as you can see from the contents of that URL (this is automatic, as is www.apache.org/dist/httpd from the https://dist.apache.org/repos/dist/release/httpd). > * I created two scripts[2] to automate the tagging of SVN and minor file > modifications associated with a release as well as the push of the > tarballs/signatures to the repo mirror. Unfortunately, I lack the karma > to commit to site/trunk. How do I obtain this karma? So svn cp'ing the files from /repos/dist/dev/httpd to release/httpd causes mirrors to sync once a vote passes. We don't mirror the /dev/dist/ contents. In terms of updating the site after a vote passes, you should have that karma as a member of httpd-pmc, so not sure what's going on there. Perhaps open an infra ticket? > * The documentation mentioned to AP_SERVER_DEVBUILD_BOOLEAN to 0 for the > tagged release. I assume this still holds true for an alpha release. Yes
Re: [VOTE] Release httpd 2.5.0-alpha
> Till now I was assuming that we should get a trunk and a 2.5.0-alfa repo. No, not expected yet.
Re: [VOTE] Release httpd 2.5.0-alpha
I still see only a trunk repo in svn, which is now labeled as 2.5.0-alfa, and I see the tags/2.5.0-alfa repo. Till now I was assuming that we should get a trunk and a 2.5.0-alfa repo. Does not build on windows, for example .mak files are missing and cmake/dsp. etc not up to date. Attached difference between 2.4.29 and 2.5.0-alfa (except the /doc dir). The deps file has the old apr and apr-util. I noticed already some "strange" diffs, for example mod_proxy_http2.c : 2.4.29: 23 #include "mod_proxy_http2.h" 24 #include "h2_request.h" <=== 25 #include "h2_proxy_util.h" 2.5.0-alfa: 23 #include "mod_proxy_http2.h" 24 #include "h2.h" <== 25 #include "h2_proxy_util.h On Wednesday 08/11/2017 at 05:28, Daniel Ruggeri wrote: Hi, all; Please find the proposed 2.5.0-alpha release tarballs and signatures at the following location. This release candidate was tagged from trunk as of r1814469: https://dist.apache.org/repos/dist/dev/httpd/ I'd like to call a vote to release this alpha candidate. Please do note - this is my first attempt at cutting a release and mistakes are likely. Therefore, I'll let the vote run at least 10 days (possibly more as I will be traveling to Dublin next week) and will greatly appreciate any additional scrutiny the release tarball can be given. Some notes to share after having executed the process for the first time: * I'm not 100% sure on the proper syntax for an alpha candidate with the release.sh[1] script. I used "./release.sh --tag 2.5.0-alpha alpha httpd-2.5 2.5.0 'drugg...@primary.net". This seems to have produced desired results. * I created two scripts[2] to automate the tagging of SVN and minor file modifications associated with a release as well as the push of the tarballs/signatures to the repo mirror. Unfortunately, I lack the karma to commit to site/trunk. How do I obtain this karma? * I'd like to make some updates to the documentation[3] about how to produce releases to point out the existence of the new scripts and make the process more clear. Same note about karma to site/ applies. * The documentation mentioned to AP_SERVER_DEVBUILD_BOOLEAN to 0 for the tagged release. I assume this still holds true for an alpha release. * Blockers for automation really only seem to live around credential management (svn password and keyring passphrase) and the conducting of the vote itself over email. Kudos to everyone involved for putting together the scripting that already exists! * I'd like to create yet another script that does a pre-flight check for a machine to ensure that the host it is run on has the dependencies all of the above scripts need. Thing is, other than java for the docs build and gpg... I'm not sure what those other things may be (or even if there are any). Pointers welcome. [1] http://svn.apache.org/repos/asf/httpd/site/trunk/tools/release.sh [2] http://people.apache.org/~druggeri/scripts/ [3] http://httpd.apache.org/dev/release.html P.S. I'll be in Dublin next week if anyone would like to catch up! -- Daniel Ruggeri -- F:\Temp\httpd-2.4.29 : F:\Temp\httpd-2.5.0-alpha -- includes differing files .\acinclude.m4 different (F:\Temp\httpd-2.4.29 is more recent) .\apache-apr2.dsw different (F:\Temp\httpd-2.4.29 is more recent) .\apache.dswdifferent (F:\Temp\httpd-2.4.29 is more recent) .\buildbin.dsp different (F:\Temp\httpd-2.4.29 is more recent) .\buildconf different (F:\Temp\httpd-2.4.29 is more recent) .\changes different (F:\Temp\httpd-2.5.0-alpha is more recent) .\cmakelists.txtdifferent (F:\Temp\httpd-2.5.0-alpha is more recent) .\configure different (F:\Temp\httpd-2.5.0-alpha is more recent) .\configure.in different (F:\Temp\httpd-2.5.0-alpha is more recent) .\httpd.specdifferent (F:\Temp\httpd-2.5.0-alpha is more recent) .\install different (F:\Temp\httpd-2.4.29 is more recent) .\installbin.dspdifferent (F:\Temp\httpd-2.4.29 is more recent) .\layoutdifferent (F:\Temp\httpd-2.5.0-alpha is more recent) .\libhttpd.dsp different (F:\Temp\httpd-2.4.29 is more recent) .\license different (F:\Temp\httpd-2.5.0-alpha is more recent) .\makefile.in different (F:\Temp\httpd-2.4.29 is more recent) .\makefile.win different (F:\Temp\httpd-2.4.29 is more recent) .\nwgnumakefile different (F:\Temp\httpd-2.4.29 is more recent) .\readmedifferent (F:\Temp\httpd-2.4.29 is more recent) .\readme.cmake different (F:\Temp\httpd-2.4.29 is more recent) .\build\config_vars.sh.in different (F:\Temp\httpd-2.4.29 is more recent) .\build\fastgen.sh different (F:\Temp\httpd-2.5.0-alpha is more recent) .\build\install.sh different (F:\Temp\httpd-2.5.0-alpha is more recent) .\build\installwinconf.awk different (F:\Temp\httpd-2.4.29 is more recent) .\build\instdso.sh different (F:\Temp\httpd-2.5.0-alpha is more recent) .\build\ltmain.sh different (F:\Temp\httpd-2.5.0-alpha is more recent) .\build\make_exports.awk