Hi,
I found a memory leak in subversion/neon when neon is build
with ssl support:
subversion: (session.c.patch, against the svn 1.0.x branch)
this patch adds the missing ne_sock_exit() call to svn_ra_dav__open.
neon: (the patch is against neon 0.24.5)
this fixes ne_sock_exit() to cleanup ssl stuff when build with ssl support.
-- 
Martin
Added misssing ssl cleanup in case neon is build with ssl support.
*** ne_socket.c_org	Fri Mar 26 13:07:50 2004
--- ne_socket.c	Sun Apr 18 15:10:58 2004
***************
*** 258,267 ****
--- 258,278 ----
  #endif /* EGD_PATH */
  
      NE_DEBUG(NE_DBG_SOCKET, "No entropy source found; could not seed PRNG.\n");
      return -1;
  }
+ 
+ static void exit_ssl()
+ {
+     /* clean up (memory) allocations by SSL_library_init(),
+        an SSL_library_exit() wouldn't be bad... */
+     EVP_cleanup(); 
+ 
+     /* clean up (memory) allocations by SSL_load_error_strings */
+     ERR_free_strings();
+ }
+ 
  #endif /* NEON_SSL */
  
  #ifdef USE_CHECK_IPV6
  static int ipv6_disabled = 0;
  
***************
*** 327,336 ****
--- 338,351 ----
      return 0;
  }
  
  void ne_sock_exit(void)
  {
+ #ifdef NEON_SSL
+     exit_ssl();
+ #endif
+ 
  #ifdef WIN32
      WSACleanup();
  #endif
      init_result = 0;
  }
Added missing shutdown call for the neon library.
* subversion/libsvn_ra_dav/session.c
  (cleanup_neon): new method.
  (svn_ra_dav__open): added apr_pool_cleanup_register of
  cleanup_neon().
Index: subversion/libsvn_ra_dav/session.c
===================================================================
--- subversion/libsvn_ra_dav/session.c	(revision 9415)
+++ subversion/libsvn_ra_dav/session.c	(working copy)
@@ -38,6 +38,13 @@
 #include "ra_dav.h"
 
 
+/* a cleanup routine attached to the pool that uninitializes neon. */
+static apr_status_t cleanup_neon(void *v)
+{
+  ne_sock_exit();
+  return APR_SUCCESS;
+}
+
 /* a cleanup routine attached to the pool that contains the RA session
    baton. */
 static apr_status_t cleanup_session(void *sess)
@@ -559,6 +566,10 @@
                               "Network socket initialization failed");
     }
 
+  /* make sure we will cleanup neon. */
+  apr_pool_cleanup_register(pool, 0, cleanup_neon,
+    apr_pool_cleanup_null);
+
   /* we want to know if the repository is actually somewhere else */
   /* ### not yet: http_redirect_register(sess, ... ); */
 
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Apr 18 17:13:22 2004