Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Apache: CVS

svn commit: r703998 - in /httpd/httpd/trunk: CHANGES modules/proxy/proxy_util.c

 

 

Apache cvs RSS feed   Index | Next | Previous | View Threaded


rpluem at apache

Oct 13, 2008, 3:06 AM

Post #1 of 1 (55 views)
Permalink
svn commit: r703998 - in /httpd/httpd/trunk: CHANGES modules/proxy/proxy_util.c

Author: rpluem
Date: Mon Oct 13 03:06:28 2008
New Revision: 703998

URL: http://svn.apache.org/viewvc?rev=703998&view=rev
Log:
* Make the connection timeout to backends work by temporarily setting the
socket to non blocking mode.

Submitted by: Matt Stevenson <mavricknzwork yahoo.com>
Reviewed by: rpluem

Modified:
httpd/httpd/trunk/CHANGES
httpd/httpd/trunk/modules/proxy/proxy_util.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=703998&r1=703997&r2=703998&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Mon Oct 13 03:06:28 2008
@@ -2,6 +2,10 @@
Changes with Apache 2.3.0
[ When backported to 2.2.x, remove entry from this file ]

+ *) mod_proxy: Make the connection timeout to backends work by temporarily
+ setting the socket to non blocking mode.
+ [Matt Stevenson <mavricknzwork yahoo.com>]
+
*) Worker MPM: Crosscheck that idle workers are still available before using
them and thus preventing an overflow of the worker queue which causes
a SegFault. PR 45605 [Denis Ustimenko <denusk gmail.com>]

Modified: httpd/httpd/trunk/modules/proxy/proxy_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/proxy_util.c?rev=703998&r1=703997&r2=703998&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/proxy_util.c (original)
+++ httpd/httpd/trunk/modules/proxy/proxy_util.c Mon Oct 13 03:06:28 2008
@@ -2358,6 +2358,17 @@
"proxy: %s: fam %d socket created to connect to %s",
proxy_function, backend_addr->family, worker->hostname);

+ /*
+ * Temporarily set the socket to non blocking to make connection
+ * timeouts (set via connectiontimeout) work.
+ */
+ if ((rv = apr_socket_opt_set(newsock, APR_SO_NONBLOCK, 1))
+ != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_ERR, rv, s,
+ "apr_socket_opt_set(SO_NONBLOCK): Failed to set"
+ " the socket to non blocking mode");
+ }
+
/* make the connection out of the socket */
rv = apr_socket_connect(newsock, backend_addr);

@@ -2374,6 +2385,13 @@
continue;
}

+ if ((rv = apr_socket_opt_set(newsock, APR_SO_NONBLOCK, 0))
+ != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_ERR, rv, s,
+ "apr_socket_opt_set(SO_NONBLOCK): Failed to set"
+ " the socket to blocking mode");
+ }
+
/* Set a timeout on the socket */
if (worker->timeout_set == 1) {
apr_socket_timeout_set(newsock, worker->timeout);

Apache cvs RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.