char msg4_content_encoding[256] = "";
int msg4_content_length = 0;
struct vnote *vnote_from_body = NULL;
+ int vnote_inline = 0; /* 1 = MSG4 gave us a text/x-vnote top level */
relevant_partnum[0] = '\0';
serv_printf("MSG4 %ld", msgnum); /* we need the mime headers */
&& ( !strcasecmp(msg4_content_encoding, "7bit"))
&& (!strcasecmp(mime_content_type, "text/vnote"))
) {
- /* shouldn't we do something here? */
+ vnote_inline = 1;
}
}
- //case 2:
- //Data = NewStrBufPlain(NULL, msg4_content_length * 2);
- //if (msg4_content_length > 0) {
- //StrBuf_ServGetBLOBBuffered(Data, msg4_content_length);
- //phase ++;
- //}
- //else {
- //StrBufAppendBuf(Data, Buf, 0);
- //StrBufAppendBufPlain(Data, "\r\n", 1, 0);
- //}
- //case 3:
- //StrBufAppendBuf(Data, Buf, 0);
+ case 2:
+ if (vnote_inline) {
+ Data = NewStrBufPlain(NULL, msg4_content_length * 2);
+ if (msg4_content_length > 0) {
+ StrBuf_ServGetBLOBBuffered(Data, msg4_content_length);
+ phase ++;
+ }
+ else {
+ StrBufAppendBuf(Data, Buf, 0);
+ StrBufAppendBufPlain(Data, "\r\n", 1, 0);
+ }
+ }
+ case 3:
+ if (vnote_inline) {
+ StrBufAppendBuf(Data, Buf, 0);
+ }
}
}
FreeStrBuf(&Buf);
/* If MSG4 didn't give us the part we wanted, but we know that we can find it
* as one of the other MIME parts, attempt to load it now.
*/
- if ((Data == NULL) && (!IsEmptyStr(relevant_partnum))) {
+ if ((!vnote_inline) && (!IsEmptyStr(relevant_partnum))) {
Data = load_mimepart(msgnum, relevant_partnum);
}
{
char buf[1024];
char *pch;
+ char boundary[256];
+ static int seq = 0;
+
+ snprintf(boundary, sizeof boundary, "Citadel--Multipart--%s--%04x--%04x",
+ ChrPtr(WC->serv_info->serv_fqdn),
+ getpid(),
+ ++seq
+ );
serv_puts("ENT0 1|||4");
serv_getln(buf, sizeof buf);
if (buf[0] == '4') {
+ /* Remember, serv_printf() appends an extra newline */
+ serv_printf("Content-type: multipart/alternative; "
+ "boundary=\"%s\"\n", boundary);
+ serv_printf("This is a multipart message in MIME format.\n");
+ serv_printf("--%s", boundary);
+
+ serv_puts("Content-type: text/plain; charset=utf-8");
+ serv_puts("Content-Transfer-Encoding: 7bit");
+ serv_puts("");
+ serv_puts(v->body);
+ serv_puts("");
+
+ serv_printf("--%s", boundary);
serv_puts("Content-type: text/vnote");
serv_puts("");
pch = vnote_serialize(v);
serv_puts(pch);
free(pch);
+ serv_printf("--%s--", boundary);
serv_puts("000");
}
}