Hi All,
I am using proxy_http to proxy my request to tomcat from apache. But in non-blocking call it is not working properly(timeout issue). I am using the default timeout i:e 60 sec.
When writev returns -1 with errorno==4101, it should wait and then again try for write.
while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK)
&& (sock->timeout > 0)) _____ code snippet from sendrecv.c
In debugging I have checked that sock->timeout is equal to 0. Therefore this condition is failed and request failed.
When default timeout is 60sec then why does sock->timeout becomes 0 ??
On further debugging, I came to know the reqtimeout_eor function is setting timeout to 0.
static apr_status_t reqtimeout_eor(ap_filter_t *f, apr_bucket_brigade *bb)
{
if (!APR_BRIGADE_EMPTY(bb) && AP_BUCKET_IS_EOR(APR_BRIGADE_LAST(bb))) {
reqtimeout_con_cfg *ccfg = f->ctx;
ccfg->timeout_at = 0;
}
return ap_pass_brigade(f->next, bb);
}
I am not able to understand why this function is setting to 0.
Can somebody help me to understand the issue ?
Thanks
Hemant