]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/network/serv_network.c
Citadel Networker: add per facility debug logging 'networkclient'
[citadel.git] / citadel / modules / network / serv_network.c
index 234a7722f0f1923773b0d0c066a9dac152935359..dc61feb47a93b4c60c20b9a589d1e6af5018cb20 100644 (file)
@@ -112,7 +112,7 @@ int GetNetworkedRoomNumbers(const char *DirName, HashList *DirList)
        struct dirent *d;
        struct dirent *filedir_entry;
        long RoomNR;
-       long Count;
+       long Count = 0;
                
        filedir = opendir (DirName);
        if (filedir == NULL) {
@@ -306,7 +306,7 @@ void network_queue_interesting_rooms(struct ctdlroom *qrbuf, void *data) {
                ptr->namelen = ROOMNAMELEN - 1;
 
        memcpy (ptr->name, qrbuf->QRname, ptr->namelen);
-       ptr->name[ptr->namelen] = 0;
+       ptr->name[ptr->namelen] = '\0';
        ptr->QRNum = qrbuf->QRnumber;
 
        for (i = 0; i < ptr->namelen; i++)
@@ -314,6 +314,7 @@ void network_queue_interesting_rooms(struct ctdlroom *qrbuf, void *data) {
                ptr->lcname[i] = tolower(ptr->name[i]);
        }
 
+       ptr->lcname[ptr->namelen] = '\0';
        ptr->key = hashlittle(ptr->lcname, ptr->namelen, 9872345);
        ptr->next = RP->rplist;
        RP->rplist = ptr;
@@ -326,6 +327,8 @@ void network_queue_room(struct ctdlroom *qrbuf, void *data) {
        int i;
        struct RoomProcList *ptr;
 
+       if (qrbuf->QRdefaultview == VIEW_QUEUE)
+               return;
        ptr = (struct RoomProcList *) malloc(sizeof (struct RoomProcList));
        if (ptr == NULL) return;
 
@@ -334,15 +337,16 @@ void network_queue_room(struct ctdlroom *qrbuf, void *data) {
                ptr->namelen = ROOMNAMELEN - 1;
 
        memcpy (ptr->name, qrbuf->QRname, ptr->namelen);
-       ptr->name[ptr->namelen] = 0;
+       ptr->name[ptr->namelen] = '\0';
        ptr->QRNum = qrbuf->QRnumber;
 
        for (i = 0; i < ptr->namelen; i++)
        {
                ptr->lcname[i] = tolower(ptr->name[i]);
        }
-
+       ptr->lcname[ptr->namelen] = '\0';
        ptr->key = hashlittle(ptr->lcname, ptr->namelen, 9872345);
+
        begin_critical_section(S_RPLIST);
        ptr->next = rplist;
        rplist = ptr;
@@ -524,7 +528,8 @@ void network_do_queue(void) {
        end_critical_section(S_RPLIST);
 
        RL.RoomsInterestedIn = NewHash(1, lFlathash);
-       if (!GetNetworkedRoomNumbers(ctdl_netcfg_dir, RL.RoomsInterestedIn))
+       if (full_processing &&
+           (GetNetworkedRoomNumbers(ctdl_netcfg_dir, RL.RoomsInterestedIn)==0))
        {
                doing_queue = 0;
                DeleteHash(&RL.RoomsInterestedIn);
@@ -537,8 +542,10 @@ void network_do_queue(void) {
        /*
         * Load the network map and filter list into memory.
         */
-       the_netmap = read_network_map();
-       load_network_filter_list();
+       if (!server_shutting_down)
+               the_netmap = read_network_map();
+       if (!server_shutting_down)
+               load_network_filter_list();
 
        /* 
         * Go ahead and run the queue
@@ -548,7 +555,7 @@ void network_do_queue(void) {
                CtdlForEachRoom(network_queue_interesting_rooms, &RL);
        }
 
-       if (RL.rplist != NULL) {
+       if ((RL.rplist != NULL) && (!server_shutting_down)) {
                RoomProcList *ptr, *cmp;
                ptr = RL.rplist;
                syslog(LOG_DEBUG, "network: running outbound queue\n");
@@ -597,6 +604,7 @@ void network_do_queue(void) {
        if (full_processing) {
                last_run = time(NULL);
        }
+       DeleteHash(&RL.RoomsInterestedIn);
        destroy_network_queue_room(RL.rplist);
        doing_queue = 0;
 }