[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apr-dev
Subject:    Re: [PATCH] APR blocking read()
From:       Ryan Phillips <ryan-apr () trolocsis ! com>
Date:       2007-04-25 4:49:21
Message-ID: 20070425044921.GC46804 () zeus ! kimaker ! com
[Download RAW message or body]

Ryan Phillips <ryan-apr@trolocsis.com> said:
> I ran into a problem today with apache blocking on a read.  When
> ap_http_filter was getting called with AP_MODE_EATCRLF and block=APR_NONBLOCKREAD
> the bucket brigade was blocking (see socket_bucket_read).
> 
> I am not 100% sure how the bucket brigades are supposed to work on a
> nonblocking read, but please critique this patch.  The patch applies to APR.
> 

I should mention the behavior I saw...

Apache is listening on two ports (80 and 443, 443 is a vhost),  the SSL socket
would work perfectly fine, but port 80 would just connect and stall... no
data returned to the client.  I tracked the problem down to the keepalive
check.  If I disabled keepalive then both ports worked ok, but with
keepalive enabled, then port 80 would connect, but no data returned back to
the client.

The non-blocking call to the brigade to eat whitespace kept hanging.  I
believe the right fix is not to clear the APR_INCOMPLETE_WRITE flag when
timeout == 0.

Thoughts?

Regards,
Ryan
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic