X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fserv_smtp.c;h=8a7a3147c54749255e969ca12875d64f43321fc0;hb=326128b8e98e473237ffe46c95aa5ae81896864b;hp=ce80fa44fe41ac6ea6b9bf9b75b9036b0a5680df;hpb=960a05d9c8debb309d1a1ff0aa719124f2c1a1e1;p=citadel.git diff --git a/citadel/serv_smtp.c b/citadel/serv_smtp.c index ce80fa44f..8a7a3147c 100644 --- a/citadel/serv_smtp.c +++ b/citadel/serv_smtp.c @@ -438,15 +438,19 @@ void smtp_rcpt(char *argbuf) { * (This is kind of ugly. IGnet should be done using clean server-to-server * code instead of the old style spool.) */ -void smtp_deliver_ignet(struct CtdlMessage *msg, char *user, char *room) { +void smtp_deliver_ignet(struct CtdlMessage *msg, char *user, char *dest) { struct ser_ret smr; char *hold_R, *hold_D; FILE *fp; + char filename[256]; + static int seq = 0; + + lprintf(9, "smtp_deliver_ignet(msg, %s, %s)\n", user, dest); hold_R = msg->cm_fields['R']; hold_D = msg->cm_fields['D']; msg->cm_fields['R'] = user; - msg->cm_fields['D'] = room; + msg->cm_fields['D'] = dest; serialize_message(&smr, msg); @@ -454,7 +458,10 @@ void smtp_deliver_ignet(struct CtdlMessage *msg, char *user, char *room) { msg->cm_fields['D'] = hold_D; if (smr.len != 0) { - fp = fopen(tmpnam("./network/spoolin/"), "wb"); + sprintf(filename, "./network/spoolin/%s.%04x.%04x", + dest, getpid(), ++seq); + lprintf(9, "spool file name is <%s>\n", filename); + fp = fopen(filename, "wb"); if (fp != NULL) { fwrite(smr.ser, smr.len, 1, fp); fclose(fp); @@ -534,7 +541,9 @@ int smtp_message_delivery(struct CtdlMessage *msg) { /* Delivery over the local Citadel network (IGnet) */ if (!strcasecmp(dtype, "ignet")) { - smtp_deliver_ignet(msg, user, room); + extract(user, buf, 1); + extract(node, buf, 2); + smtp_deliver_ignet(msg, user, node); } /* Remote delivery */