No more cleanup hooks. The OS can reclaim memory better than we can. We want to...
[citadel.git] / citadel / serv_extensions.c
index 28b739779cd14007f96843feedc5cf36114fb2c0..cc594ce655f1a839a636245fa1aaf8116a71c450 100644 (file)
@@ -2,7 +2,7 @@
  * Citadel Extension Loader
  * Originally written by Brian Costello <btx@calyx.net>
  *
- * Copyright (c) 1987-2017 by the citadel.org team
+ * Copyright (c) 1987-2021 by the citadel.org team
  *
  * This program is open source software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License, version 3.
@@ -110,7 +110,7 @@ XmsgFunctionHook *XmsgHookTable = NULL;
 
 /*
  * RoomFunctionHook extensions are used for hooks which impliment room
- * processing functions when new messages are added EG. SIEVE.
+ * processing functions when new messages are added.
  */
 typedef struct RoomFunctionHook RoomFunctionHook;
 struct RoomFunctionHook {
@@ -128,9 +128,6 @@ struct SearchFunctionHook {
 };
 SearchFunctionHook *SearchFunctionHookTable = NULL;
 
-CleanupFunctionHook *CleanupHookTable = NULL;
-CleanupFunctionHook *EVCleanupHookTable = NULL;
-
 ServiceFunctionHook *ServiceHookTable = NULL;
 
 typedef struct ProtoFunctionHook ProtoFunctionHook;
@@ -147,7 +144,6 @@ HashList *ProtoHookList = NULL;
 
 
 static StrBuf *portlist = NULL;
-
 static StrBuf *errormessages = NULL;
 
 
@@ -168,9 +164,7 @@ ConstStr ErrPortShort = { HKEY("We couldn't bind all ports you configured to be
 ConstStr ErrPortWhere = { HKEY("\"Admin->System Preferences->Network\".\n\nThe failed ports and sockets are: ")};
 ConstStr ErrPortHint  = { HKEY("If you want Citadel to provide you with that functionality, "
                               "check the output of \"netstat -lnp\" on Linux, or \"netstat -na\" on BSD"
-                              " and stop the program that binds these ports.\n You should eventually remove "
-                              " their initscripts in /etc/init.d so that you won't get this trouble once more.\n"
-                              " After that goto \"Administration -> Shutdown Citadel\" to make Citadel restart & retry to bind this port.\n")};
+                              " and disable the program that binds these ports.\n")};
 
 
 void LogPrintMessages(long err)
@@ -280,134 +274,6 @@ void CtdlRegisterProtoHook(void (*handler) (char *), char *cmd, char *desc)
        syslog(LOG_DEBUG, "extensions: registered server command %s (%s)", cmd, desc);
 }
 
-void CtdlDestroyProtoHooks(void)
-{
-
-       DeleteHash(&ProtoHookList);
-}
-
-
-void CtdlRegisterCleanupHook(void (*fcn_ptr) (void))
-{
-
-       CleanupFunctionHook *newfcn;
-
-       newfcn = (CleanupFunctionHook *)
-           malloc(sizeof(CleanupFunctionHook));
-       newfcn->next = CleanupHookTable;
-       newfcn->h_function_pointer = fcn_ptr;
-       CleanupHookTable = newfcn;
-
-       syslog(LOG_DEBUG, "extensions: registered a new cleanup function");
-}
-
-
-void CtdlUnregisterCleanupHook(void (*fcn_ptr) (void))
-{
-       CleanupFunctionHook *cur, *p, *last;
-       last = NULL;
-       cur = CleanupHookTable;
-       while (cur != NULL)
-       {
-               if (fcn_ptr == cur->h_function_pointer)
-               {
-                       syslog(LOG_DEBUG, "extensions: unregistered cleanup function");
-                       p = cur->next;
-
-                       free(cur);
-                       cur = NULL;
-
-                       if (last != NULL)
-                               last->next = p;
-                       else 
-                               CleanupHookTable = p;
-                       cur = p;
-               }
-               else {
-                       last = cur;
-                       cur = cur->next;
-               }
-       }
-}
-
-
-void CtdlDestroyCleanupHooks(void)
-{
-       CleanupFunctionHook *cur, *p;
-
-       cur = CleanupHookTable;
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed cleanup function");
-               p = cur->next;
-               free(cur);
-               cur = p;
-       }
-       CleanupHookTable = NULL;
-}
-
-void CtdlRegisterEVCleanupHook(void (*fcn_ptr) (void))
-{
-
-       CleanupFunctionHook *newfcn;
-
-       newfcn = (CleanupFunctionHook *)
-           malloc(sizeof(CleanupFunctionHook));
-       newfcn->next = EVCleanupHookTable;
-       newfcn->h_function_pointer = fcn_ptr;
-       EVCleanupHookTable = newfcn;
-
-       syslog(LOG_DEBUG, "extensions: registered a new cleanup function");
-}
-
-
-void CtdlUnregisterEVCleanupHook(void (*fcn_ptr) (void))
-{
-       CleanupFunctionHook *cur, *p, *last;
-       last = NULL;
-       cur = EVCleanupHookTable;
-       while (cur != NULL)
-       {
-               if (fcn_ptr == cur->h_function_pointer)
-               {
-                       syslog(LOG_DEBUG, "extensions: unregistered cleanup function");
-                       p = cur->next;
-
-                       free(cur);
-                       cur = NULL;
-
-                       if (last != NULL)
-                               last->next = p;
-                       else 
-                               EVCleanupHookTable = p;
-                       cur = p;
-               }
-               else {
-                       last = cur;
-                       cur = cur->next;
-               }
-       }
-}
-
-
-void CtdlDestroyEVCleanupHooks(void)
-{
-       CleanupFunctionHook *cur, *p;
-
-       cur = EVCleanupHookTable;
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed cleanup function");
-               p = cur->next;
-               cur->h_function_pointer();
-               free(cur);
-               cur = p;
-       }
-       EVCleanupHookTable = NULL;
-}
-
-
-
 
 void CtdlRegisterSessionHook(void (*fcn_ptr) (void), int EventType, int Priority)
 {
@@ -461,21 +327,6 @@ void CtdlUnregisterSessionHook(void (*fcn_ptr) (void), int EventType)
        }
 }
 
-void CtdlDestroySessionHooks(void)
-{
-       SessionFunctionHook *cur, *p;
-
-       cur = SessionHookTable;
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed session function");
-               p = cur->next;
-               free(cur);
-               cur = p;
-       }
-       SessionHookTable = NULL;
-}
-
 
 void CtdlRegisterUserHook(void (*fcn_ptr) (ctdluser *), int EventType)
 {
@@ -522,21 +373,6 @@ void CtdlUnregisterUserHook(void (*fcn_ptr) (struct ctdluser *), int EventType)
        }
 }
 
-void CtdlDestroyUserHooks(void)
-{
-       UserFunctionHook *cur, *p;
-
-       cur = UserHookTable;
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed user function");
-               p = cur->next;
-               free(cur);
-               cur = p;
-       }
-       UserHookTable = NULL;
-}
-
 
 void CtdlRegisterMessageHook(int (*handler)(struct CtdlMessage *, recptypes *), int EventType)
 {
@@ -581,21 +417,6 @@ void CtdlUnregisterMessageHook(int (*handler)(struct CtdlMessage *, recptypes *)
        }
 }
 
-void CtdlDestroyMessageHook(void)
-{
-       MessageFunctionHook *cur, *p;
-
-       cur = MessageHookTable; 
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed message function (type %d)", cur->eventtype);
-               p = cur->next;
-               free(cur);
-               cur = p;
-       }
-       MessageHookTable = NULL;
-}
-
 
 void CtdlRegisterRoomHook(int (*fcn_ptr)(struct ctdlroom *))
 {
@@ -639,22 +460,6 @@ void CtdlUnregisterRoomHook(int (*fcn_ptr)(struct ctdlroom *))
 }
 
 
-void CtdlDestroyRoomHooks(void)
-{
-       RoomFunctionHook *cur, *p;
-
-       cur = RoomHookTable;
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed room function");
-               p = cur->next;
-               free(cur);
-               cur = p;
-       }
-       RoomHookTable = NULL;
-}
-
-
 void CtdlRegisterDeleteHook(void (*handler)(char *, long) )
 {
        DeleteFunctionHook *newfcn;
@@ -697,22 +502,6 @@ void CtdlUnregisterDeleteHook(void (*handler)(char *, long) )
 }
 
 
-void CtdlDestroyDeleteHooks(void)
-{
-       DeleteFunctionHook *cur, *p;
-
-       cur = DeleteHookTable;
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed delete function");
-               p = cur->next;
-               free(cur);
-               cur = p;                
-       }
-       DeleteHookTable = NULL;
-}
-
-
 void CtdlRegisterFixedOutputHook(char *content_type, void (*handler)(char *, int) )
 {
        FixedOutputHook *newfcn;
@@ -756,21 +545,6 @@ void CtdlUnregisterFixedOutputHook(char *content_type)
        }
 }
 
-void CtdlDestroyFixedOutputHooks(void)
-{
-       FixedOutputHook *cur, *p;
-
-       cur = FixedOutputTable; 
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed fixed output function for %s", cur->content_type);
-               p = cur->next;
-               free(cur);
-               cur = p;
-               
-       }
-       FixedOutputTable = NULL;
-}
 
 /* returns nonzero if we found a hook and used it */
 int PerformFixedOutputHooks(char *content_type, char *content, int content_length)
@@ -831,22 +605,6 @@ void CtdlUnregisterXmsgHook(int (*fcn_ptr) (char *, char *, char *, char *), int
 }
 
 
-void CtdlDestroyXmsgHooks(void)
-{
-       XmsgFunctionHook *cur, *p;
-
-       cur = XmsgHookTable;
-       while (cur != NULL)
-       {
-               syslog(LOG_DEBUG, "extensions: destroyed x-msg function (priority %d)", cur->order);
-               p = cur->next;
-               free(cur);
-               cur = p;
-       }
-       XmsgHookTable = NULL;
-}
-
-
 void CtdlRegisterServiceHook(int tcp_port,
                             char *sockpath,
                             void (*h_greeting_function) (void),
@@ -856,9 +614,7 @@ void CtdlRegisterServiceHook(int tcp_port,
 {
        ServiceFunctionHook *newfcn;
        char *message;
-       char error[SIZ];
 
-       strcpy(error, "");
        newfcn = (ServiceFunctionHook *) malloc(sizeof(ServiceFunctionHook));
        message = (char*) malloc (SIZ + SIZ);
        
@@ -871,7 +627,7 @@ void CtdlRegisterServiceHook(int tcp_port,
        newfcn->ServiceName = ServiceName;
 
        if (sockpath != NULL) {
-               newfcn->msock = ctdl_uds_server(sockpath, CtdlGetConfigInt("c_maxsessions"), error);
+               newfcn->msock = ctdl_uds_server(sockpath, CtdlGetConfigInt("c_maxsessions"));
                snprintf(message, SIZ, "extensions: unix domain socket '%s': ", sockpath);
        }
        else if (tcp_port <= 0) {       /* port -1 to disable */
@@ -881,10 +637,7 @@ void CtdlRegisterServiceHook(int tcp_port,
                return;
        }
        else {
-               newfcn->msock = ctdl_tcp_server(CtdlGetConfigStr("c_ip_addr"),
-                                             tcp_port,
-                                             CtdlGetConfigInt("c_maxsessions"), 
-                                             error);
+               newfcn->msock = ctdl_tcp_server(CtdlGetConfigStr("c_ip_addr"), tcp_port, CtdlGetConfigInt("c_maxsessions"));
                snprintf(message, SIZ, "extensions: TCP port %s:%d: (%s) ", 
                         CtdlGetConfigStr("c_ip_addr"), tcp_port, ServiceName);
        }
@@ -895,7 +648,7 @@ void CtdlRegisterServiceHook(int tcp_port,
                syslog(LOG_INFO, "%s", message);
        }
        else {
-               AddPortError(message, error);
+               AddPortError(message, "failed");
                strcat(message, "FAILED.");
                syslog(LOG_ERR, "%s", message);
                free(newfcn);
@@ -972,39 +725,6 @@ void CtdlShutdownServiceHooks(void)
 }
 
 
-void CtdlDestroyServiceHook(void)
-{
-       const char *Text;
-       ServiceFunctionHook *cur, *p;
-
-       cur = ServiceHookTable;
-       while (cur != NULL)
-       {
-               if (cur->msock != -1)
-               {
-                       close(cur->msock);
-                       Text = "Closed";
-               }
-               else
-               {
-                       Text = " Not closing again";
-               }
-
-               if (cur->sockpath) {
-                       syslog(LOG_INFO, "extensions: %s UNIX domain socket %s", Text, cur->sockpath);
-                       unlink(cur->sockpath);
-               } else if (cur->tcp_port) {
-                       syslog(LOG_INFO, "extensions: %s TCP port %d", Text, cur->tcp_port);
-               } else {
-                       syslog(LOG_INFO, "extensions: destroyed service \"%s\"", cur->ServiceName);
-               }
-               p = cur->next;
-               free(cur);
-               cur = p;
-       }
-       ServiceHookTable = NULL;
-}
-
 void CtdlRegisterSearchFuncHook(void (*fcn_ptr)(int *, long **, const char *), char *name)
 {
        SearchFunctionHook *newfcn;
@@ -1050,18 +770,6 @@ void CtdlUnregisterSearchFuncHook(void (*fcn_ptr)(int *, long **, const char *),
        }
 }
 
-void CtdlDestroySearchHooks(void)
-{
-        SearchFunctionHook *cur, *p;
-
-       cur = SearchFunctionHookTable;
-       SearchFunctionHookTable = NULL;
-        while (cur != NULL) {
-               p = cur->next;
-               free(cur);
-               cur = p;
-       }
-}
 
 void CtdlModuleDoSearch(int *num_msgs, long **search_msgs, const char *search_string, const char *func_name)
 {