102 lines
3.1 KiB
Diff
102 lines
3.1 KiB
Diff
--- rsyslog/cfsysline.c.orig 2007-08-16 23:33:00.000000000 +0200
|
|
+++ rsyslog/cfsysline.c 2007-08-16 23:44:10.000000000 +0200
|
|
@@ -573,6 +573,12 @@ finalize_it:
|
|
}
|
|
|
|
|
|
+rsRetVal unregCfSysLineHdlrs(void)
|
|
+{
|
|
+ return llDestroy(&llCmdList);
|
|
+}
|
|
+
|
|
+
|
|
/* process a cfsysline command (based on handler structure)
|
|
* param "p" is a pointer to the command line after the command. Should be
|
|
* updated.
|
|
--- rsyslog/cfsysline.h.orig 2007-08-16 23:33:10.000000000 +0200
|
|
+++ rsyslog/cfsysline.h 2007-08-16 23:44:23.000000000 +0200
|
|
@@ -61,6 +61,7 @@ typedef struct cslCmd_s cslCmd_t;
|
|
|
|
/* prototypes */
|
|
rsRetVal regCfSysLineHdlr(uchar *pCmdName, int bChainingPermitted, ecslCmdHdrlType eType, rsRetVal (*pHdlr)(), void *pData);
|
|
+rsRetVal unregCfSysLineHdlrs(void);
|
|
rsRetVal processCfSysLineCommand(uchar *pCmd, uchar **p);
|
|
rsRetVal cfsyslineInit(void);
|
|
void dbgPrintCfSysLineHandlers(void);
|
|
--- rsyslog/syslogd.c.orig 2007-08-16 23:45:27.000000000 +0200
|
|
+++ rsyslog/syslogd.c 2007-08-17 11:23:54.000000000 +0200
|
|
@@ -3552,7 +3552,7 @@ static void die(int sig)
|
|
/* de-init some modules */
|
|
modExitIminternal();
|
|
|
|
- /*TODO: the module config command handlers must also be freed! */
|
|
+ unregCfSysLineHdlrs();
|
|
|
|
/* TODO: this would also be the right place to de-init the builtin output modules. We
|
|
* do not currently do that, because the module interface does not allow for
|
|
@@ -4259,6 +4259,10 @@ static void init(void)
|
|
/* Close all open log files and free log descriptor array. */
|
|
freeSelectors();
|
|
|
|
+ /* Unload all non-static modules */
|
|
+ dbgprintf("Unloading non-static modules.\n");
|
|
+ modUnloadAndDestructDynamic();
|
|
+
|
|
dbgprintf("Clearing templates.\n");
|
|
tplDeleteNew();
|
|
|
|
--- rsyslog/ommysql.c.orig 2007-08-17 11:02:00.000000000 +0200
|
|
+++ rsyslog/ommysql.c 2007-08-17 11:02:02.000000000 +0200
|
|
@@ -79,6 +79,7 @@ static void closeMySQL(instanceData *pDa
|
|
assert(pData != NULL);
|
|
|
|
if(pData->f_hmysql != NULL) { /* just to be on the safe side... */
|
|
+ mysql_server_end();
|
|
mysql_close(pData->f_hmysql);
|
|
pData->f_hmysql = NULL;
|
|
}
|
|
--- rsyslog/modules.c.orig 2007-08-21 09:43:48.000000000 +0200
|
|
+++ rsyslog/modules.c 2007-08-21 09:07:17.000000000 +0200
|
|
@@ -336,6 +336,31 @@ rsRetVal modUnloadAndDestructAll(void)
|
|
|
|
return iRet;
|
|
}
|
|
+
|
|
+
|
|
+rsRetVal modUnloadAndDestructDynamic(void)
|
|
+{
|
|
+ DEFiRet;
|
|
+ modInfo_t *pMod;
|
|
+ modInfo_t *pModPrev;
|
|
+
|
|
+ pLoadedModulesLast = NULL;
|
|
+
|
|
+ pMod = modGetNxt(NULL);
|
|
+ while(pMod != NULL) {
|
|
+ pModPrev = pMod;
|
|
+ pMod = modGetNxt(pModPrev); /* get next */
|
|
+ /* now we can destroy the previous module */
|
|
+ if(pModPrev->eLinkType != eMOD_LINK_STATIC) {
|
|
+ dbgprintf("Unloading module %s\n", modGetName(pModPrev));
|
|
+ moduleDestruct(pModPrev);
|
|
+ } else {
|
|
+ pLoadedModulesLast = pModPrev;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return iRet;
|
|
+}
|
|
/*
|
|
* vi:set ai:
|
|
*/
|
|
--- rsyslog/modules.h.orig 2007-08-17 11:11:26.000000000 +0200
|
|
+++ rsyslog/modules.h 2007-08-17 11:15:35.000000000 +0200
|
|
@@ -94,6 +94,7 @@ uchar *modGetName(modInfo_t *pThis);
|
|
uchar *modGetStateName(modInfo_t *pThis);
|
|
void modPrintList(void);
|
|
rsRetVal modUnloadAndDestructAll(void);
|
|
+rsRetVal modUnloadAndDestructDynamic(void);
|
|
|
|
#endif /* #ifndef MODULES_H_INCLUDED */
|
|
/*
|