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