From 09347a0495a9390ce5c015ab25192f7446b189c6 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Wed, 12 Feb 2014 15:24:54 -0500 Subject: [PATCH] NNTP ARTICLE/HEAD/BODY/STAT now return the message-id associated with the message being fetched on the protocol response line. --- citadel/modules/nntp/serv_nntp.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/citadel/modules/nntp/serv_nntp.c b/citadel/modules/nntp/serv_nntp.c index fb81dd9b1..6a75c622a 100644 --- a/citadel/modules/nntp/serv_nntp.c +++ b/citadel/modules/nntp/serv_nntp.c @@ -761,6 +761,7 @@ void nntp_article(const char *cmd) { // At this point we know the message number of the "article" being requested. // We have an awesome API call that does all the heavy lifting for us. + char *fetched_message_id = NULL; CC->redirect_buffer = NewStrBufPlain(NULL, SIZ); int fetch = CtdlOutputMsg(requested_msgnum, MT_RFC822, // output in RFC822 format ... sort of @@ -771,7 +772,7 @@ void nntp_article(const char *cmd) { 0, // no flags yet ... maybe new ones for Path: etc ? NULL, NULL, - NULL // FIXME this is where we grab teh message ID !! + &fetched_message_id // extract the message ID from the message as we go... ); StrBuf *msgtext = CC->redirect_buffer; CC->redirect_buffer = NULL; @@ -783,16 +784,16 @@ void nntp_article(const char *cmd) { } if (acmd == ARTICLE) { - cprintf("220 %ld \r\n", requested_msgnum); + cprintf("220 %ld <%s>\r\n", requested_msgnum, fetched_message_id); } if (acmd == HEAD) { - cprintf("221 %ld \r\n", requested_msgnum); + cprintf("221 %ld <%s>\r\n", requested_msgnum, fetched_message_id); } if (acmd == BODY) { - cprintf("222 %ld \r\n", requested_msgnum); + cprintf("222 %ld <%s>\r\n", requested_msgnum, fetched_message_id); } if (acmd == STAT) { - cprintf("223 %ld \r\n", requested_msgnum); + cprintf("223 %ld <%s>\r\n", requested_msgnum, fetched_message_id); FreeStrBuf(&msgtext); return; } @@ -800,6 +801,7 @@ void nntp_article(const char *cmd) { client_write(SKEY(msgtext)); cprintf(".\r\n"); // this protocol uses a dot terminator FreeStrBuf(&msgtext); + if (fetched_message_id) free(fetched_message_id); } -- 2.30.2