typedef struct __roomlists {
RoomProcList *rplist;
-}roomlists;
+} roomlists;
+
+
/*
* When we do network processing, it's accomplished in two passes; one to
* gather a list of rooms and one to actually do them. It's ok that rplist
struct RoomProcList *rplist = NULL;
-
-/*
- * Check the use table. This is a list of messages which have recently
- * arrived on the system. It is maintained and queried to prevent the same
- * message from being entered into the database multiple times if it happens
- * to arrive multiple times by accident.
- */
-int network_usetable(struct CtdlMessage *msg)
-{
- StrBuf *msgid;
- struct CitContext *CCC = CC;
- time_t now;
-
- /* Bail out if we can't generate a message ID */
- if ((msg == NULL) || CM_IsEmpty(msg, emessageId))
- {
- return(0);
- }
-
- /* Generate the message ID */
- msgid = NewStrBufPlain(CM_KEY(msg, emessageId));
- if (haschar(ChrPtr(msgid), '@') == 0) {
- StrBufAppendBufPlain(msgid, HKEY("@"), 0);
- if (!CM_IsEmpty(msg, eNodeName)) {
- StrBufAppendBufPlain(msgid, CM_KEY(msg, eNodeName), 0);
- }
- else {
- FreeStrBuf(&msgid);
- return(0);
- }
- }
- now = time(NULL);
- if (CheckIfAlreadySeen("Networker Import",
- msgid,
- now, 0,
- eCheckUpdate,
- CCC->cs_pid, 0) != 0)
- {
- FreeStrBuf(&msgid);
- return(1);
- }
- FreeStrBuf(&msgid);
-
- return(0);
-}
-
-
-
/*
* Send the *entire* contents of the current room to one specific network node,
* ignoring anything we know about which messages have already undergone
/* Grab the configuration line we're looking for */
begin_critical_section(S_NETCONFIGS);
pRNCFG = CtdlGetNetCfgForRoom(CCC->room.QRnumber);
- if ((pRNCFG == NULL) ||
- (pRNCFG->NetConfigs[ignet_push_share] == NULL))
+ if ((pRNCFG == NULL) || (pRNCFG->NetConfigs[ignet_push_share] == NULL))
{
return -1;
}
sc.RNCfg->NetConfigs[ignet_push_share] = DuplicateOneGenericCfgLine(pCfgLine);
sc.Users[ignet_push_share] = NewStrBufPlain(NULL,
StrLength(pCfgLine->Value[0]) +
- StrLength(pCfgLine->Value[1]) + 10);
- StrBufAppendBuf(sc.Users[ignet_push_share],
- pCfgLine->Value[0],
- 0);
- StrBufAppendBufPlain(sc.Users[ignet_push_share],
- HKEY(","),
- 0);
-
- StrBufAppendBuf(sc.Users[ignet_push_share],
- pCfgLine->Value[1],
- 0);
+ StrLength(pCfgLine->Value[1]) + 10
+ );
+ StrBufAppendBuf(sc.Users[ignet_push_share], pCfgLine->Value[0], 0);
+ StrBufAppendBufPlain(sc.Users[ignet_push_share], HKEY(","), 0);
+ StrBufAppendBuf(sc.Users[ignet_push_share], pCfgLine->Value[1], 0);
CalcListID(&sc);
end_critical_section(S_NETCONFIGS);
sc.the_netmap = CtdlReadNetworkMap();
/* Send ALL messages */
- num_spooled = CtdlForEachMessage(MSGS_ALL, 0L, NULL, NULL, NULL,
- network_spool_msg, &sc);
+ num_spooled = CtdlForEachMessage(MSGS_ALL, 0L, NULL, NULL, NULL, network_spool_msg, &sc);
/* Concise cleanup because we know there's only one node in the sc */
DeleteGenericCfgLine(NULL/*TODO*/, &sc.RNCfg->NetConfigs[ignet_push_share]);
}
-
-/*
- * Bounce a message back to the sender
- */
-void network_bounce(struct CtdlMessage *msg, char *reason)
-{
- struct CitContext *CCC = CC;
- char buf[SIZ];
- char bouncesource[SIZ];
- char recipient[SIZ];
- recptypes *valid = NULL;
- char force_room[ROOMNAMELEN];
- static int serialnum = 0;
- long len;
-
- QNM_syslog(LOG_DEBUG, "entering network_bounce()\n");
-
- if (msg == NULL) return;
-
- snprintf(bouncesource, sizeof bouncesource, "%s@%s", BOUNCESOURCE, CtdlGetConfigStr("c_nodename"));
-
- /*
- * Give it a fresh message ID
- */
- len = snprintf(buf, sizeof(buf),
- "%ld.%04lx.%04x@%s",
- (long)time(NULL),
- (long)getpid(),
- ++serialnum,
- CtdlGetConfigStr("c_fqdn")
- );
-
- CM_SetField(msg, emessageId, buf, len);
-
- /*
- * FIXME ... right now we're just sending a bounce; we really want to
- * include the text of the bounced message.
- */
- CM_SetField(msg, eMesageText, reason, strlen(reason));
- msg->cm_format_type = 0;
-
- /*
- * Turn the message around
- */
- CM_FlushField(msg, eRecipient);
- CM_FlushField(msg, eDestination);
-
- len = snprintf(recipient, sizeof(recipient), "%s@%s",
- msg->cm_fields[eAuthor],
- msg->cm_fields[eNodeName]);
-
- CM_SetField(msg, eAuthor, HKEY(BOUNCESOURCE));
- CM_SetField(msg, eNodeName, CtdlGetConfigStr("c_nodename"), strlen(CtdlGetConfigStr("c_nodename")));
- CM_SetField(msg, eMsgSubject, HKEY("Delivery Status Notification (Failure)"));
-
- Netmap_AddMe(msg, HKEY("unknown_user"));
-
- /* Now submit the message */
- valid = validate_recipients(recipient, NULL, 0);
- if (valid != NULL) if (valid->num_error != 0) {
- free_recipients(valid);
- valid = NULL;
- }
- if ( (valid == NULL) || (!strcasecmp(recipient, bouncesource)) )
- {
- strcpy(force_room, CtdlGetConfigStr("c_aideroom"));
- }
- else {
- strcpy(force_room, "");
- }
- if ( (valid == NULL) && IsEmptyStr(force_room) ) {
- strcpy(force_room, CtdlGetConfigStr("c_aideroom"));
- }
- CtdlSubmitMsg(msg, valid, force_room, 0);
-
- /* Clean up */
- if (valid != NULL) free_recipients(valid);
- CM_Free(msg);
- QNM_syslog(LOG_DEBUG, "leaving network_bounce()\n");
-}
-
-
-
/*
* network_do_queue()
*
last_run = time(NULL);
}
destroy_network_queue_room(RL.rplist);
- SaveChangedConfigs();
+ // SaveChangedConfigs(); // FIXME FOOFOO SAVE CHANGED THIS AACACACACCKK
}