]> code.citadel.org Git - citadel.git/blobdiff - citadel/file_ops.c
Memleak: free the nttlist (network host list) on exit
[citadel.git] / citadel / file_ops.c
index ada1a78141a11a6e7ee583e5c12885091872531b..e4453cbdbdc3b97f055403caa48dc0a467f57e7c 100644 (file)
@@ -1,8 +1,5 @@
 /* 
- * $Id$
- *
  * Server functions which handle file transfers and room directories.
- *
  */
 
 #include "sysdep.h"
@@ -51,9 +48,9 @@
 /*
  * network_talking_to()  --  concurrency checker
  */
+static char *nttlist = NULL;
 int network_talking_to(char *nodename, int operation) {
 
-       static char *nttlist = NULL;
        char *ptr = NULL;
        int i;
        char buf[SIZ];
@@ -105,6 +102,14 @@ int network_talking_to(char *nodename, int operation) {
        return(retval);
 }
 
+void cleanup_nttlist(void)
+{
+        begin_critical_section(S_NTTLIST);
+       if (nttlist != NULL)
+               free(nttlist);
+       nttlist = NULL;
+        end_critical_section(S_NTTLIST);
+}
 
 
 
@@ -827,7 +832,8 @@ CTDL_MODULE_INIT(file_ops)
                CtdlRegisterProtoHook(cmd_nuop, "NUOP", "Open a network spool file for upload");
                CtdlRegisterProtoHook(cmd_oimg, "OIMG", "Open an image file for download");
                CtdlRegisterProtoHook(cmd_uimg, "UIMG", "Upload an image file");
+               CtdlRegisterCleanupHook(cleanup_nttlist);
        }
         /* return our Subversion id for the Log */
-       return "$Id$";
+       return "file_ops";
 }