Logging: add commands to runtime view/enable/disable logging
[citadel.git] / citadel / modules / network / serv_networkclient.c
index 51db451989d96192576a3a7aad7998fdb11687c1..1a027ea2384e8ed481398cec9f6104e895118c6b 100644 (file)
@@ -91,22 +91,26 @@ struct CitContext networker_client_CC;
 #define NODE ChrPtr(((AsyncNetworker*)IO->Data)->node)
 #define N ((AsyncNetworker*)IO->Data)->n
 
+int NetworkClientDebugEnabled = 0;
+
+#define DBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (NetworkClientDebugEnabled != 0))
+
 #define EVN_syslog(LEVEL, FORMAT, ...) \
-       syslog(LEVEL, \
+       DBGLOG(LEVEL) syslog(LEVEL, \
               "IO[%ld]CC[%d]NW[%s][%ld]" FORMAT, \
               IO->ID, CCID, NODE, N, __VA_ARGS__)
 
 #define EVNM_syslog(LEVEL, FORMAT) \
-       syslog(LEVEL, \
+       DBGLOG(LEVEL) syslog(LEVEL, \
               "IO[%ld]CC[%d]NW[%s][%ld]" FORMAT, \
               IO->ID, CCID, NODE, N)
 
 #define EVNCS_syslog(LEVEL, FORMAT, ...) \
-       syslog(LEVEL, "IO[%ld]NW[%s][%ld]" FORMAT, \
+       DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld]NW[%s][%ld]" FORMAT, \
               IO->ID, NODE, N, __VA_ARGS__)
 
 #define EVNCSM_syslog(LEVEL, FORMAT) \
-       syslog(LEVEL, "IO[%ld]NW[%s][%ld]" FORMAT, \
+       DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld]NW[%s][%ld]" FORMAT, \
               IO->ID, NODE, N)
 
 
@@ -159,6 +163,10 @@ void DeleteNetworker(void *vptr)
        FreeStrBuf(&NW->Url);
        FreeStrBuf(&NW->IO.ErrMsg);
        FreeAsyncIOContents(&NW->IO);
+       if (NW->HostLookup.VParsedDNSReply != NULL) {
+               NW->HostLookup.DNSReplyFree(NW->HostLookup.VParsedDNSReply);
+               NW->HostLookup.VParsedDNSReply = NULL;
+       }
        free(NW);
 }
 
@@ -1029,8 +1037,10 @@ void network_do_clientqueue(void)
                free(working_ignetcfg);
 }
 
-
-
+void LogDebugEnableNetworkClient(const int n)
+{
+       NetworkClientDebugEnabled = n;
+}
 /*
  * Module entry point
  */
@@ -1041,6 +1051,8 @@ CTDL_MODULE_INIT(network_client)
                CtdlFillSystemContext(&networker_client_CC, "CitNetworker");
                
                CtdlRegisterSessionHook(network_do_clientqueue, EVT_TIMER);
+               CtdlRegisterDebugFlagHook(HKEY("networkclient"), LogDebugEnableNetworkClient, &NetworkClientDebugEnabled);
+
        }
-       return "network_client";
+       return "networkclient";
 }