The networker and RSS client each start up their own threads
authorArt Cancro <ajc@citadel.org>
Sun, 17 Feb 2008 05:18:31 +0000 (05:18 +0000)
committerArt Cancro <ajc@citadel.org>
Sun, 17 Feb 2008 05:18:31 +0000 (05:18 +0000)
as well, so they also need private CitContext structures.

citadel/modules/network/serv_network.c
citadel/modules/rssclient/serv_rssclient.c
citadel/sysdep.c

index ee0152ced83bb86f3f1008d2fab1faee949342c0..4fc32f9107ac34f67238000a5158a889be681bda 100644 (file)
@@ -2029,6 +2029,13 @@ void *network_do_queue(void *args) {
        static time_t last_run = 0L;
        struct RoomProcList *ptr;
        int full_processing = 1;
+       struct CitContext networkerCC;
+
+       /* Give the networker its own private CitContext */
+       memset(&networkerCC, 0, sizeof(struct CitContext));
+       networkerCC.internal_pgm = 1;
+       networkerCC.cs_pid = 0;
+       pthread_setspecific(MyConKey, (void *)&networkerCC );
 
        /*
         * Run the full set of processing tasks no more frequently
@@ -2194,7 +2201,6 @@ CTDL_MODULE_INIT(network)
                CtdlRegisterProtoHook(cmd_snet, "SNET", "Set network config");
                CtdlRegisterProtoHook(cmd_netp, "NETP", "Identify as network poller");
                CtdlRegisterProtoHook(cmd_nsyn, "NSYN", "Synchronize room to node");
-//             CtdlRegisterSessionHook(network_do_queue, EVT_TIMER);
                CtdlRegisterRoomHook(network_room_handler);
                CtdlRegisterCleanupHook(destroy_network_queue_room);
        }
index 00fe598f1063346044d25f978649b44e77bdec09..78afc9b875a3a39ab50f5955021aa57ed8c56af7 100644 (file)
@@ -591,14 +591,15 @@ void *rssclient_scan(void *args) {
        static time_t last_run = 0L;
        static int doing_rssclient = 0;
        struct rssnetcfg *rptr = NULL;
+       struct CitContext rssclientCC;
+
+       /* Give this thread its own private CitContext */
+       memset(&rssclientCC, 0, sizeof(struct CitContext));
+       rssclientCC.internal_pgm = 1;
+       rssclientCC.cs_pid = 0;
+       pthread_setspecific(MyConKey, (void *)&rssclientCC );
 
        CtdlThreadAllocTSD();
-       /*
-        * Run RSS client no more frequently than once every n seconds
-        */
-//     if ( (time(NULL) - last_run) < config.c_net_freq ) {
-//             return;
-//     }
 
        /*
         * This is a simple concurrency check to make sure only one rssclient run
@@ -635,7 +636,6 @@ CTDL_MODULE_INIT(rssclient)
        if (threading)
        {
 #ifdef HAVE_EXPAT
-//             CtdlRegisterSessionHook(rssclient_scan, EVT_TIMER);
                CtdlThreadSchedule ("RSS Client", CTDLTHREAD_BIGSTACK, rssclient_scan, NULL, 0);
 #else
                lprintf(CTDL_INFO, "This server is missing the Expat XML parser.  RSS client will be disabled.\n");
index 164cafd5a70e2e530d888cb2b4df3695d5fb057e..c55c0ca6906e760c6363adf7f6f8810ada6148cf 100644 (file)
@@ -141,6 +141,7 @@ void vlprintf(enum LogLevel loglevel, const char *format, va_list arg_ptr)
                /* Promote to time_t; types differ on some OSes (like darwin) */
                unixtime = tv.tv_sec;
                localtime_r(&unixtime, &tim);
+/*
                if (CC->cs_pid != 0) {
                        sprintf(buf,
                                "%04d/%02d/%02d %2d:%02d:%02d.%06ld [%3d] ",
@@ -155,6 +156,11 @@ void vlprintf(enum LogLevel loglevel, const char *format, va_list arg_ptr)
                                tim.tm_mday, tim.tm_hour, tim.tm_min,
                                tim.tm_sec, (long)tv.tv_usec);
                }
+FIXME temp i want to see CC */
+                       sprintf(buf,
+                               "%2d:%02d:%02d.%06ld 0x%08lx ",
+                               tim.tm_hour, tim.tm_min,
+                               tim.tm_sec, (long)tv.tv_usec, CC);
                vsnprintf(buf2, SIZ, format, arg_ptr);   
 
                fprintf(stderr, "%s%s", buf, buf2);