/* Now submit the message */
valid = validate_recipients(recps, NULL, 0);
free(recps);
- CtdlSubmitMsg(msg, valid, NULL);
+ CtdlSubmitMsg(msg, valid, NULL, 0);
CtdlFreeMessage(msg);
free_recipients(valid);
}
/* Now submit the message */
valid = validate_recipients(recps, NULL, 0);
free(recps);
- CtdlSubmitMsg(msg, valid, NULL);
+ CtdlSubmitMsg(msg, valid, NULL, 0);
free_recipients(valid);
/* Do not call CtdlFreeMessage(msg) here; the caller will free it. */
}
CC->redirect_alloc = SIZ;
safestrncpy(CC->preferred_formats, "text/plain", sizeof CC->preferred_formats);
- CtdlOutputPreLoadedMsg(msg, MT_CITADEL, HEADERS_NONE, 0, 0);
+ CtdlOutputPreLoadedMsg(msg, MT_CITADEL, HEADERS_NONE, 0, 0, 0);
striplt(CC->redirect_buffer);
fprintf(sc->digestfp, "\n%s\n", CC->redirect_buffer);
msg->cm_fields['R'] = strdup(nptr->name);
valid = validate_recipients(nptr->name, NULL, 0);
- CtdlSubmitMsg(msg, valid, "");
+ CtdlSubmitMsg(msg, valid, "", 0);
free_recipients(valid);
}
CtdlLogPrintf(CTDL_DEBUG, "Path is %s\n", msg->cm_fields['P']);
bang = num_tokens(msg->cm_fields['P'], '!');
if (bang > 1) for (i=0; i<(bang-1); ++i) {
- extract_token(buf, msg->cm_fields['P'],
- i, '!', sizeof buf);
+ extract_token(buf, msg->cm_fields['P'], i, '!', sizeof buf);
+ CtdlLogPrintf(CTDL_DEBUG, "Compare <%s> to <%s>\n",
+ buf, mptr->remote_nodename) ;
if (!strcasecmp(buf, mptr->remote_nodename)) {
send = 0;
+ CtdlLogPrintf(CTDL_DEBUG, "Not sending to %s\n",
+ mptr->remote_nodename);
+ }
+ else {
+ CtdlLogPrintf(CTDL_DEBUG, "Sending to %s\n", mptr->remote_nodename);
}
}
if ( (valid == NULL) && IsEmptyStr(force_room) ) {
strcpy(force_room, config.c_aideroom);
}
- CtdlSubmitMsg(msg, valid, force_room);
+ CtdlSubmitMsg(msg, valid, force_room, 0);
/* Clean up */
if (valid != NULL) free_recipients(valid);
/* save the message into a room */
if (PerformNetprocHooks(msg, target_room) == 0) {
msg->cm_flags = CM_SKIP_HOOKS;
- CtdlSubmitMsg(msg, recp, target_room);
+ CtdlSubmitMsg(msg, recp, target_room, 0);
}
CtdlFreeMessage(msg);
free_recipients(recp);
void network_poll_node(char *node, char *secret, char *host, char *port) {
int sock;
char buf[SIZ];
+ char err_buf[SIZ];
+ char connected_to[SIZ];
if (network_talking_to(node, NTT_CHECK)) return;
network_talking_to(node, NTT_ADD);
if (sock_getln(sock, buf, sizeof buf) < 0) goto bail;
CtdlLogPrintf(CTDL_DEBUG, ">%s\n", buf);
+ /* Check that the remote is who we think it is and warn the Aide if not */
+ extract_token (connected_to, buf, 1, ' ', sizeof connected_to);
+ if (strcmp(connected_to, node))
+ {
+ snprintf (err_buf, sizeof(err_buf), "Connected to node \"%s\" but I was expecting to connect to node \"%s\".", connected_to, node);
+ aide_message(err_buf, "IGNet Networking error.");
+ }
+
/* Identify ourselves */
snprintf(buf, sizeof buf, "NETP %s|%s", config.c_nodename, secret);
CtdlLogPrintf(CTDL_DEBUG, "<%s\n", buf);
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 );
+ CtdlFillPrivateContext(&networkerCC, "network");
+ citthread_setspecific(MyConKey, (void *)&networkerCC );
/*
* Run the full set of processing tasks no more frequently
char secret[256];
char nexthop[256];
+ char err_buf[SIZ];
/* Authenticate */
extract_token(node, cmdbuf, 0, '|', sizeof node);
v = is_valid_node(nexthop, secret, node);
if (v != 0) {
- CtdlLogPrintf(CTDL_WARNING, "Unknown node <%s>\n", node);
+ snprintf (err_buf, sizeof(err_buf), "Unknown node <%s>\n", node);
+ CtdlLogPrintf(CTDL_WARNING, err_buf);
cprintf("%d authentication failed\n",
ERROR + PASSWORD_REQUIRED);
+ aide_message(err_buf, "IGNet Networking.");
return;
}
if (strcasecmp(pass, secret)) {
- CtdlLogPrintf(CTDL_WARNING, "Bad password for network node <%s>", node);
+ snprintf (err_buf, sizeof(err_buf), "Bad password for network node <%s>", node);
+ CtdlLogPrintf(CTDL_WARNING, err_buf);
cprintf("%d authentication failed\n", ERROR + PASSWORD_REQUIRED);
+ aide_message(err_buf, "IGNet Networking.");
return;
}