Re: [VOTE] Release Apache httpd 2.4.29 as GA

2017-11-08 Thread Jan Ehrhardt
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

2017-11-08 Thread Yann Ylavic
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

2017-11-08 Thread William A Rowe Jr
Just to clarify one aspect you asked about;

On Tue, Nov 7, 2017 at 8:36 PM, Daniel Ruggeri  wrote:
>
> 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

2017-11-08 Thread Eric Covener
> 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

2017-11-08 Thread Steffen



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