You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by je...@apache.org on 2008/09/25 03:47:23 UTC
svn commit: r698796 - in /httpd/flood/trunk: CHANGES flood_net_ssl.c
flood_net_ssl.h flood_socket_keepalive.c
Author: jerenkrantz
Date: Wed Sep 24 18:47:23 2008
New Revision: 698796
URL: http://svn.apache.org/viewvc?rev=698796&view=rev
Log:
Fix HTTP keepalives over SSL.
* flood_net_ssl.c
(ssl_check_socket): Implement.
* flood_net_ssl.h
(ssl_check_socket): Declare.
* flood_socket_keepalive.c
(ksock_check_socket, ksock_close_socket): Declare helper macros.
(keepalive_begin_conn): Use helper function to call appropriate checker.
(keepalive_end_conn): Use helper to close socket.
Modified:
httpd/flood/trunk/CHANGES
httpd/flood/trunk/flood_net_ssl.c
httpd/flood/trunk/flood_net_ssl.h
httpd/flood/trunk/flood_socket_keepalive.c
Modified: httpd/flood/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/flood/trunk/CHANGES?rev=698796&r1=698795&r2=698796&view=diff
==============================================================================
--- httpd/flood/trunk/CHANGES (original)
+++ httpd/flood/trunk/CHANGES Wed Sep 24 18:47:23 2008
@@ -1,5 +1,8 @@
Changes since 1.0:
+* Fix HTTP keepalives over SSL.
+ [Justin Erenkrantz]
+
* Support building against installed Ubuntu APR packages.
[Justin Erenkrantz]
Modified: httpd/flood/trunk/flood_net_ssl.c
URL: http://svn.apache.org/viewvc/httpd/flood/trunk/flood_net_ssl.c?rev=698796&r1=698795&r2=698796&view=diff
==============================================================================
--- httpd/flood/trunk/flood_net_ssl.c (original)
+++ httpd/flood/trunk/flood_net_ssl.c Wed Sep 24 18:47:23 2008
@@ -318,6 +318,11 @@
return APR_SUCCESS;
}
+apr_status_t ssl_check_socket(ssl_socket_t *s, apr_pool_t *pool)
+{
+ return check_socket(s->socket, pool);
+}
+
#else /* FLOOD_HAS_OPENSSL */
apr_status_t ssl_init_socket(apr_pool_t *pool)
@@ -345,4 +350,9 @@
return APR_ENOTIMPL;
}
+apr_status_t ssl_check_socket(ssl_socket_t *s, apr_pool_t *pool)
+{
+ return APR_ENOTIMPL;
+}
+
#endif /* FLOOD_HAS_OPENSSL */
Modified: httpd/flood/trunk/flood_net_ssl.h
URL: http://svn.apache.org/viewvc/httpd/flood/trunk/flood_net_ssl.h?rev=698796&r1=698795&r2=698796&view=diff
==============================================================================
--- httpd/flood/trunk/flood_net_ssl.h (original)
+++ httpd/flood/trunk/flood_net_ssl.h Wed Sep 24 18:47:23 2008
@@ -30,5 +30,6 @@
void ssl_close_socket(ssl_socket_t *s);
apr_status_t ssl_write_socket(ssl_socket_t *s, request_t *r);
apr_status_t ssl_read_socket(ssl_socket_t *s, char *buf, apr_size_t *buflen);
+apr_status_t ssl_check_socket(ssl_socket_t *s, apr_pool_t *pool);
#endif /* __flood_net_socket_h */
Modified: httpd/flood/trunk/flood_socket_keepalive.c
URL: http://svn.apache.org/viewvc/httpd/flood/trunk/flood_socket_keepalive.c?rev=698796&r1=698795&r2=698796&view=diff
==============================================================================
--- httpd/flood/trunk/flood_socket_keepalive.c (original)
+++ httpd/flood/trunk/flood_socket_keepalive.c Wed Sep 24 18:47:23 2008
@@ -40,6 +40,15 @@
ksock->ssl ? ssl_write_socket(ksock->s, req) : \
write_socket(ksock->s, req)
+#define ksock_check_socket(ksock, pool) \
+ ksock->ssl ? ssl_check_socket(ksock->s, pool) : \
+ check_socket(ksock->s, pool)
+
+#define ksock_close_socket(ksock) \
+ ksock->ssl ? ssl_close_socket(ksock->s) : \
+ close_socket(ksock->s)
+
+
typedef struct {
void *s;
apr_pollfd_t *p;
@@ -78,7 +87,7 @@
if (!ksock->reopen_socket && ksock->s) {
apr_status_t e;
- e = check_socket(ksock->s, pool);
+ e = ksock_check_socket(ksock, pool);
if (e != APR_SUCCESS) {
ksock->reopen_socket = 1;
}
@@ -544,7 +553,7 @@
keepalive_socket_t *ksock = (keepalive_socket_t *)sock;
if (resp->keepalive == 0) {
- ksock->ssl ? ssl_close_socket(ksock->s) : close_socket(ksock->s);
+ ksock_close_socket(ksock);
ksock->reopen_socket = 1; /* we just closed it */
}