Re: [VOTE] Release libapreq2-2.16

2021-03-10 Thread Yann Ylavic
On Wed, Mar 10, 2021 at 5:05 PM Joe Orton  wrote:
>
> I would like to call a VOTE over the next week to release this candidate
> tarball as v2.16:

[X] +1: It's not just good, it's good enough!


Re: event.c assert failed

2021-03-10 Thread Stefan Eissing
FTR: this has been resolved by fixing my own mistake. ;-)

> Am 08.03.2021 um 13:59 schrieb Stefan Eissing :
> 
> 
> 
>> Am 08.03.2021 um 13:49 schrieb Yann Ylavic :
>> 
>> Hi Stefan,
>> 
>>> 
>>> I see an crash and log entries:
>>> 
>>> [mpm_event:error] [pid 28031:tid 4595580416] (9)Bad file descriptor: 
>>> AH00468: error closing socket
>>> [core:crit] [pid 28031:tid 4595580416] AH00102: [Mon Mar 08 11:32:48 2021] 
>>> file event.c, line 565, assertion "0" failed
>>> 
>>> when a client opens a connection and closes it right away, not sending 
>>> anything. My tls modules sees EOF in the in filter and returns it, setting 
>>> c->aborted = 1.
>>> 
>>> I am not sure what the failed assertion is about. Is there a double close 
>>> of the socket? Seems I do handle the connection state in such a case not 
>>> quite as it is expected.
>> 
>> Hmm, if you breakpoint on apr_socket_close(), do you see it called
>> multiple times?
>> (I wonder if it could be the ones in core_create_conn() if/when
>> apr_socket_addr_get() fails..).
> 
> Seems to happen on server shutdown and it looks as if the socket is in 
> lingering close. I try to get more info what is happening...
> ...
> [Mon Mar 08 13:56:49.158001 2021] [tls:trace3] [pid 78522:tid 
> 123145423650816] tls_filter.c(648): [client 127.0.0.1:53402] bb_dump(132): 
> filter_conn_output(FLUSH EOC)
> [Mon Mar 08 13:56:49.158004 2021] [tls:trace2] [pid 78522:tid 
> 123145423650816] tls_filter.c(724): (53)Software caused connection abort: 
> [client 127.0.0.1:53402] tls_filter_conn_output: passed 0 bytes
> [Mon Mar 08 13:56:49.162077 2021] [core:trace3] [pid 78521:tid 
> 123145421504512] request.c(361): [client 127.0.0.1:53403] request authorized 
> without authentication by access_checker_ex hook: /
> [Mon Mar 08 13:56:49.273972 2021] [core:trace4] [pid 78518:tid 4427951616] 
> mpm_common.c(558): mpm child 78527 (gen 0/slot 3) started
> [Mon Mar 08 13:56:49.274139 2021] [mpm_event:error] [pid 78522:tid 
> 4427951616] (9)Bad file descriptor: AH00468: error closing socket
> [Mon Mar 08 13:56:49.274616 2021] [core:crit] [pid 78522:tid 4427951616] 
> AH00102: [Mon Mar 08 12:56:49 2021] file event.c, line 565, assertion "0" 
> failed
> [Mon Mar 08 13:56:49.275632 2021] [mpm_event:debug] [pid 78527:tid 
> 123145420967936] event.c(2611): AH02471: start_threads: Using kqueue 
> (wakeable)
> [Mon Mar 08 13:56:49.291162 2021] [core:trace4] [pid 78518:tid 4427951616] 
> mpm_common.c(558): mpm child 78520 (gen 0/slot 0) exited
> [Mon Mar 08 13:56:49.291199 2021] [core:trace4] [pid 78518:tid 4427951616] 
> mpm_common.c(558): mpm child 78521 (gen 0/slot 1) exited
> [Mon Mar 08 13:56:49.291213 2021] [core:notice] [pid 78518:tid 4427951616] 
> AH00052: child pid 78522 exit signal Abort trap (6)
> [Mon Mar 08 13:56:49.291217 2021] [core:trace4] [pid 78518:tid 4427951616] 
> mpm_common.c(558): mpm child 78522 (gen 0/slot 2) exited
> [Mon Mar 08 13:56:49.291222 2021] [core:trace4] [pid 78518:tid 4427951616] 
> mpm_common.c(558): mpm child 78527 (gen 0/slot 3) exited
> [Mon Mar 08 13:56:49.291342 2021] [core:info] [pid 78518:tid 4427951616] 
> AH00096: removed PID file 
> /Users/sei/projects/abetterinternet/mod_tls/test/gen/apache/logs/httpd.pid 
> (pid=78518)
> [Mon Mar 08 13:56:49.291359 2021] [mpm_event:notice] [pid 78518:tid 
> 4427951616] AH00491: caught SIGTERM, shutting down
> [Mon Mar 08 13:56:49.301655 2021] [core:trace4] [pid 78518] 
> mpm_common.c(454): end of generation 0
> 



Re: [VOTE] Release libapreq2-2.16

2021-03-10 Thread Steve Hay
On Wed, 10 Mar 2021 at 16:07, Joe Orton  wrote:
>
> On Wed, Mar 10, 2021 at 04:05:16PM +, Joe Orton wrote:
> > Hi, I've prepared a candidate release tarball for libapreq2 v2.15 here:
>
> You can see I'm still an amateur at this - should read ^^ v2.16
>

Many thanks for rolling out this release.

Community vote: +1

Tested on Windows 10 with:
- VS2013 Update 5 x86, httpd 2.2.34, perl 5.32.1, mod_perl 2.0.11
- VS2019 v16.7.3 x64, httpd 2.4.46, perl 5.33.6, mod_perl 2.0.11

One failure for both:

t\apreq\cgi.t  (Wstat: 2304 Tests: 31 Failed: 0)
  Non-zero exit status: 9
  Parse errors: Bad plan.  You planned 71 tests but ran 31.

which is the same "Odd number of elements in hash assignment at
t\apreq\cgi.t line 197." failure as I saw in 2.15.

Diffing 2.15 with 2.16 looks good, in particular with the expected
differences in META.yml, which I hope will fix the MetaCPAN indexing
problem.


Re: [VOTE] Release libapreq2-2.16

2021-03-10 Thread Ruediger Pluem



On 3/10/21 5:05 PM, Joe Orton wrote:
> Hi, I've prepared a candidate release tarball for libapreq2 v2.15 here:
> 
> https://dist.apache.org/repos/dist/dev/httpd/libapreq/
> 
> This release is to address an issue blocking the upload to CPAN.
> 
> I would like to call a VOTE over the next week to release this candidate 
> tarball as v2.16:
> 
> [X] +1: It's not just good, it's good enough!
> [ ] +0: Let's have a talk.
> [ ] -1: There's trouble in paradise. Here's what's wrong.
> 

Regards

Rüdiger


Re: [VOTE] Release libapreq2-2.16

2021-03-10 Thread Joe Orton
On Wed, Mar 10, 2021 at 04:05:16PM +, Joe Orton wrote:
> Hi, I've prepared a candidate release tarball for libapreq2 v2.15 here:

You can see I'm still an amateur at this - should read ^^ v2.16 



[VOTE] Release libapreq2-2.16

2021-03-10 Thread Joe Orton
Hi, I've prepared a candidate release tarball for libapreq2 v2.15 here:

https://dist.apache.org/repos/dist/dev/httpd/libapreq/

This release is to address an issue blocking the upload to CPAN.

I would like to call a VOTE over the next week to release this candidate 
tarball as v2.16:

[ ] +1: It's not just good, it's good enough!
[ ] +0: Let's have a talk.
[ ] -1: There's trouble in paradise. Here's what's wrong.

MD5, SHA-256, and SHA-512 checksums for the tarball are as follows:

c0f4fbeee7514ea22a038933d0075f8e  libapreq2-2.16.tar.gz
e04c855a3ea070b8863569fbae02fe828f534ac88755b23e24d3863cc9598349  
libapreq2-2.16.tar.gz
aa9e751a3f0d6a9cb587aa1c5408e8d9a073560860d7f653776196fe3739516df16abe943c9cb0460cfb9b68a2d79ad651cfd5e4a30a2ca34d6dc3ced73f628c
  libapreq2-2.16.tar.gz

The release is prepared from:
https://svn.apache.org/repos/asf/httpd/apreq/branches/v2.16 at r1887420

Regards, Joe



Re: svn commit: r1887415 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.h mod_proxy_ajp.c mod_proxy_balancer.c mod_proxy_hcheck.c

2021-03-10 Thread jean-frederic clere

On 10/03/2021 12:24, Ruediger Pluem wrote:



On 3/10/21 11:36 AM, jfcl...@apache.org wrote:

Author: jfclere
Date: Wed Mar 10 10:36:46 2021
New Revision: 1887415

URL: http://svn.apache.org/viewvc?rev=1887415&view=rev
Log:
Add CPING to health check logic.

Modified:
 httpd/httpd/trunk/modules/proxy/mod_proxy.h
 httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c
 httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c
 httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c




Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c
URL: 
http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c?rev=1887415&r1=1887414&r2=1887415&view=diff
==
--- httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c Wed Mar 10 10:36:46 2021



@@ -613,6 +615,39 @@ static int hc_get_backend(const char *pr
  return hc_determine_connection(ctx, hc, &(*backend)->addr, ptemp);
  }
  
+static apr_status_t hc_check_cping(baton_t *baton)

+{
+int status;
+sctx_t *ctx = baton->ctx;
+proxy_worker *hc = baton->hc;
+proxy_conn_rec *backend = NULL;
+apr_pool_t *ptemp = baton->ptemp;
+request_rec *r;
+apr_interval_time_t timeout;
+
+if (!ajp_handle_cping_cpong) {
+return APR_ENOTIMPL;
+}
+
+ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, baton->ctx->s, "HCCPING 
starting");
+if ((status = hc_get_backend("HCCPING", &backend, hc, ctx, baton->ptemp)) 
!= OK) {
+return backend_cleanup("HCCPING", backend, ctx->s, status);
+}
+if ((status = ap_proxy_connect_backend("HCCPING", backend, hc, ctx->s)) != 
OK) {
+return backend_cleanup("HCCPING", backend, ctx->s, status);
+}
+r = create_request_rec(ptemp, ctx->s, baton->balancer, "CPING");
+if ((status = ap_proxy_connection_create_ex("HCCPING", backend, r)) != OK) 
{
+return backend_cleanup("HCCPING", backend, ctx->s, status);
+}
+set_request_connection(r, backend->connection);
+
+timeout = apr_time_from_sec(10); /* 10 seconds */


I don't like hardcoded timeouts. How about hc->s->ping_timeout instead?
This would require to copy the setting from the worker if present in 
hc_get_hcworker where we should copy the timeout field as
well from my point of view. We could make a cascaded choice here then:

hc->s->ping_timeout, hc->s->conn_timeout, hc->s->timeout, 
apr_socket_timeout_get(backend->sock)


Oops I will fix that ASAP thanks, I committed too early :-(




+status = ajp_handle_cping_cpong(backend->sock, r, timeout);
+ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, baton->ctx->s, "HCCPING done %d", 
status);
+return backend_cleanup("HCCPING", backend, ctx->s, status);
+}
+
  static apr_status_t hc_check_tcp(baton_t *baton)
  {
  int status;


Regards

Rüdiger




--
Cheers

Jean-Frederic


Re: svn commit: r1887415 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.h mod_proxy_ajp.c mod_proxy_balancer.c mod_proxy_hcheck.c

2021-03-10 Thread Ruediger Pluem



On 3/10/21 11:36 AM, jfcl...@apache.org wrote:
> Author: jfclere
> Date: Wed Mar 10 10:36:46 2021
> New Revision: 1887415
> 
> URL: http://svn.apache.org/viewvc?rev=1887415&view=rev
> Log:
> Add CPING to health check logic.
> 
> Modified:
> httpd/httpd/trunk/modules/proxy/mod_proxy.h
> httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c
> httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c
> httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c
> 

> Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c?rev=1887415&r1=1887414&r2=1887415&view=diff
> ==
> --- httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c (original)
> +++ httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c Wed Mar 10 10:36:46 
> 2021

> @@ -613,6 +615,39 @@ static int hc_get_backend(const char *pr
>  return hc_determine_connection(ctx, hc, &(*backend)->addr, ptemp);
>  }
>  
> +static apr_status_t hc_check_cping(baton_t *baton)
> +{
> +int status;
> +sctx_t *ctx = baton->ctx;
> +proxy_worker *hc = baton->hc;
> +proxy_conn_rec *backend = NULL;
> +apr_pool_t *ptemp = baton->ptemp;
> +request_rec *r;
> +apr_interval_time_t timeout;
> +
> +if (!ajp_handle_cping_cpong) {
> +return APR_ENOTIMPL;
> +}
> +
> +ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, baton->ctx->s, "HCCPING 
> starting");
> +if ((status = hc_get_backend("HCCPING", &backend, hc, ctx, 
> baton->ptemp)) != OK) {
> +return backend_cleanup("HCCPING", backend, ctx->s, status);
> +}
> +if ((status = ap_proxy_connect_backend("HCCPING", backend, hc, ctx->s)) 
> != OK) {
> +return backend_cleanup("HCCPING", backend, ctx->s, status);
> +}
> +r = create_request_rec(ptemp, ctx->s, baton->balancer, "CPING");
> +if ((status = ap_proxy_connection_create_ex("HCCPING", backend, r)) != 
> OK) {
> +return backend_cleanup("HCCPING", backend, ctx->s, status);
> +}
> +set_request_connection(r, backend->connection);
> +
> +timeout = apr_time_from_sec(10); /* 10 seconds */

I don't like hardcoded timeouts. How about hc->s->ping_timeout instead?
This would require to copy the setting from the worker if present in 
hc_get_hcworker where we should copy the timeout field as
well from my point of view. We could make a cascaded choice here then:

hc->s->ping_timeout, hc->s->conn_timeout, hc->s->timeout, 
apr_socket_timeout_get(backend->sock)

> +status = ajp_handle_cping_cpong(backend->sock, r, timeout);
> +ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, baton->ctx->s, "HCCPING done 
> %d", status);
> +return backend_cleanup("HCCPING", backend, ctx->s, status);
> +}
> +
>  static apr_status_t hc_check_tcp(baton_t *baton)
>  {
>  int status;

Regards

Rüdiger


Re: svn commit: r1887415 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.h mod_proxy_ajp.c mod_proxy_balancer.c mod_proxy_hcheck.c

2021-03-10 Thread jean-frederic clere

On 10/03/2021 11:36, jfcl...@apache.org wrote:

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c
URL:http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c?rev=1887415&r1=1887414&r2=1887415&view=diff
==
--- httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c Wed Mar 10 10:36:46 
2021
@@ -1087,6 +1087,8 @@ static void push2table(const char *input
  }
  ap_unescape_url(key);
  ap_unescape_url(val);
+/* hcuri, worker name, balancer name, at least  are escaped when 
building the form, so twice */
+ap_unescape_url(val);
  if (allowed == NULL) { /* allow all */
  apr_table_set(params, key, val);


I noted the problem with worker URL: ajp://[0:0:0:0:0:0:0:1]:8081

In fact the worker encoded in the form to:


So it get encoded twice, as well as hcuri and balancer name.
Does it make more sense to remove the encoding while building the form?


--
Cheers

Jean-Frederic


Re: svn commit: r1887390 - /httpd/httpd/branches/2.4.x/modules/http/http_etag.c

2021-03-10 Thread ste...@eissing.org
Ha! Misery loves company, it seems... ;-)

More constructive: with modern computers that fast, should we add a dependency 
of log-tags to the default build targets? or at least "install" or somesuch?

The machines are made to serve!

> Am 09.03.2021 um 19:15 schrieb yla...@apache.org:
> 
> Author: ylavic
> Date: Tue Mar  9 18:15:22 2021
> New Revision: 1887390
> 
> URL: http://svn.apache.org/viewvc?rev=1887390&view=rev
> Log:
> Fix APLOGNO(10258) missing from r1887384.
> 
> Modified:
>httpd/httpd/branches/2.4.x/modules/http/http_etag.c
> 
> Modified: httpd/httpd/branches/2.4.x/modules/http/http_etag.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/http/http_etag.c?rev=1887390&r1=1887389&r2=1887390&view=diff
> ==
> --- httpd/httpd/branches/2.4.x/modules/http/http_etag.c (original)
> +++ httpd/httpd/branches/2.4.x/modules/http/http_etag.c Tue Mar  9 18:15:22 
> 2021
> @@ -133,7 +133,7 @@ static char *make_digest_etag(request_re
> }
> 
> if ((status = apr_file_seek(fd, APR_END, &len)) != APR_SUCCESS) {
> -ap_log_rerror(APLOG_MARK, APLOG_ERR, status, r, APLOGNO()
> +ap_log_rerror(APLOG_MARK, APLOG_ERR, status, r, APLOGNO(10258)
>   "Make etag: could not seek");
> if (er->pathname) {
> apr_file_close(fd);
> 
>