+ char *ptr;
+
+ /* Step 1: consolidate files in the outbound queue into one file per neighbor node */
+ dp = opendir(ctdl_netout_dir);
+ if (dp == NULL) return;
+ while (d = readdir(dp), d != NULL) {
+ if (
+ (strcmp(d->d_name, "."))
+ && (strcmp(d->d_name, ".."))
+ && (strchr(d->d_name, '@') != NULL)
+ ) {
+ safestrncpy(nexthop, d->d_name, sizeof nexthop);
+ ptr = strchr(nexthop, '@');
+ if (ptr) *ptr = 0;
+
+ snprintf(filename,
+ sizeof filename,
+ "%s/%s",
+ ctdl_netout_dir,
+ d->d_name
+ );
+
+ CtdlLogPrintf(CTDL_DEBUG, "Consolidate %s to %s\n", filename, nexthop);
+ if (network_talking_to(nexthop, NTT_CHECK)) {
+ CtdlLogPrintf(CTDL_DEBUG,
+ "Currently online with %s - skipping for now\n",
+ nexthop
+ );
+ }
+ else {
+ network_talking_to(nexthop, NTT_ADD);
+ snprintf(cmd, sizeof cmd, "/bin/cat %s >>%s/%s && /bin/rm -f %s",
+ filename,
+ ctdl_netout_dir, nexthop,
+ filename
+ );
+ CtdlLogPrintf(CTDL_DEBUG, "\033[31m%s\033[0m\n", cmd);
+ system(cmd);
+ network_talking_to(nexthop, NTT_REMOVE);
+ }
+ }
+ }
+ closedir(dp);
+
+ /* Step 2: delete any files in the outbound queue that were for neighbors who no longer exist */