You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2011/11/23 16:57:02 UTC
svn commit: r1205463 - /tomcat/native/trunk/native/src/network.c
Author: mturk
Date: Wed Nov 23 15:57:01 2011
New Revision: 1205463
URL: http://svn.apache.org/viewvc?rev=1205463&view=rev
Log:
Use unmanaged pools for sockets. This will allow detached sockets but will require that each socket is closed
Modified:
tomcat/native/trunk/native/src/network.c
Modified: tomcat/native/trunk/native/src/network.c
URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/network.c?rev=1205463&r1=1205462&r2=1205463&view=diff
==============================================================================
--- tomcat/native/trunk/native/src/network.c (original)
+++ tomcat/native/trunk/native/src/network.c Wed Nov 23 15:57:01 2011
@@ -180,11 +180,15 @@ TCN_IMPLEMENT_CALL(jlong, Socket, create
apr_int32_t f, t;
UNREFERENCED(o);
- TCN_ASSERT(pool != 0);
GET_S_FAMILY(f, family);
GET_S_TYPE(t, type);
- TCN_THROW_IF_ERR(apr_pool_create(&c, p), c);
+ if (p == NULL) {
+ TCN_THROW_IF_ERR(apr_pool_create_unmanaged(&c), c);
+ }
+ else {
+ TCN_THROW_IF_ERR(apr_pool_create(&c, p), c);
+ }
a = (tcn_socket_t *)apr_pcalloc(c, sizeof(tcn_socket_t));
TCN_CHECK_ALLOCATED(a);
@@ -222,11 +226,6 @@ TCN_IMPLEMENT_CALL(void, Socket, destroy
UNREFERENCED_STDARGS;
TCN_ASSERT(sock != 0);
- if (!tcn_global_pool) {
- /* Socket will be destroyed by the cleanup
- */
- return;
- }
as = s->sock;
s->sock = NULL;
apr_pool_cleanup_kill(s->pool, s, sp_socket_cleanup);
@@ -387,7 +386,7 @@ TCN_IMPLEMENT_CALL(jlong, Socket, accept
UNREFERENCED(o);
TCN_ASSERT(sock != 0);
- TCN_THROW_IF_ERR(apr_pool_create(&p, s->child), p);
+ TCN_THROW_IF_ERR(apr_pool_create_unmanaged(&p), p);
if (s->net->type == TCN_SOCKET_APR) {
TCN_ASSERT(s->sock != NULL);
a = (tcn_socket_t *)apr_pcalloc(p, sizeof(tcn_socket_t));
@@ -413,8 +412,7 @@ TCN_IMPLEMENT_CALL(jlong, Socket, accept
}
return P2J(a);
cleanup:
- if (tcn_global_pool && p && s->sock)
- apr_pool_destroy(p);
+ apr_pool_destroy(p);
return 0;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org