]> code.citadel.org Git - citadel.git/blobdiff - webcit/messages.c
Noted with a comment where we need to handle ENT0 errors
[citadel.git] / webcit / messages.c
index 0c1c444ad0797447599577ce300e28dbf55963bb..feaf5db329371b53bafbd3c06bcc0b3c70de94e8 100644 (file)
@@ -399,6 +399,8 @@ void embed_message(void) {
        StrBuf *CmdBuf = NULL;
 
        msgnum = StrBufExtract_long(WCC->Hdr->HR.ReqLine, 0, '/');
+       if (msgnum <= 0) return;
+
        switch (WCC->Hdr->HR.eReqType)
        {
        case eGET:
@@ -1125,6 +1127,7 @@ void post_message(void)
                                }
                                dont_post = lbstr("postseq");
                        } else {
+                               /* FIXME this does not work!  It just displays an empty screen */
                                syslog(9, "%s:%d: server post error: %s\n", __FILE__, __LINE__, ChrPtr(Buf) + 4);
                                AppendImportantMessage(ChrPtr(Buf) + 4, StrLength(Buf) - 4);
                                if (save_to_drafts) gotoroom(WCC->CurRoom.name);
@@ -1403,6 +1406,8 @@ void display_enter(void)
                                if (which == l_subj)
                                {
                                        StrBuf *subj = NewStrBuf();
+                                       StrBuf *FlatSubject;
+
                                        if (!strcasecmp(bstr("replying_mode"), "forward")) {
                                                if (strncasecmp(ChrPtr(Line) + 5, "Fw:", 3)) {
                                                        StrBufAppendBufPlain(subj, HKEY("Fw: "), 0);
@@ -1416,7 +1421,10 @@ void display_enter(void)
                                        StrBufAppendBufPlain(subj, 
                                                             ChrPtr(Line) + 5, 
                                                             StrLength(Line) - 5, 0);
-                                       PutBstr(HKEY("subject"), subj);
+                                       FlatSubject = NewStrBufPlain(NULL, StrLength(subj));
+                                       StrBuf_RFC822_to_Utf8(FlatSubject, subj, NULL, NULL);
+
+                                       PutBstr(HKEY("subject"), FlatSubject);
                                }
 
                                else if (which == l_wefw)
@@ -1441,7 +1449,12 @@ void display_enter(void)
                                }
 
                                else if (which == l_from) {
+                                       StrBuf *FlatFrom;
                                        from = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
+                                       FlatFrom = NewStrBufPlain(NULL, StrLength(from));
+                                       StrBuf_RFC822_to_Utf8(FlatFrom, from, NULL, NULL);
+                                       FreeStrBuf(&from);
+                                       from = FlatFrom;
                                        for (i=0; i<StrLength(from); ++i) {
                                                if (ChrPtr(from)[i] == ',')
                                                        StrBufPeek(from, NULL, i, ' ');
@@ -1461,7 +1474,12 @@ void display_enter(void)
                                }
                                
                                else if (which == l_rfca) {
+                                       StrBuf *FlatRFCA;
                                        rfca = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
+                                       FlatRFCA = NewStrBufPlain(NULL, StrLength(rfca));
+                                       StrBuf_RFC822_to_Utf8(FlatRFCA, rfca, NULL, NULL);
+                                       FreeStrBuf(&rfca);
+                                       rfca = FlatRFCA;
                                }
                        }