That didn't work.
authorArt Cancro <ajc@citadel.org>
Tue, 4 Nov 2008 21:22:18 +0000 (21:22 +0000)
committerArt Cancro <ajc@citadel.org>
Tue, 4 Nov 2008 21:22:18 +0000 (21:22 +0000)
citadel/modules/sieve/serv_sieve.c
citadel/msgbase.c
citadel/sysdep.c
citadel/sysdep_decls.h

index 131b371acf52d0600e99c838b7376bb051365b40..c86c1b0baafabd189f47bcbd1f6815020d9cb702 100644 (file)
@@ -508,9 +508,9 @@ void sieve_do_msg(long msgnum, void *userdata) {
        size_t headers_len = 0;
        int len = 0;
 
-       if (userdata == NULL)
+       if (u == NULL)
        {
-               CtdlLogPrintf(CTDL_EMERG, "Cant process Message <%ld>without Userdata!\n", msgnum);
+               CtdlLogPrintf(CTDL_EMERG, "Can't process message <%ld> without userdata!\n", msgnum);
                return;
        }
 
@@ -535,6 +535,12 @@ void sieve_do_msg(long msgnum, void *userdata) {
        CC->redirect_len = 0;
        CC->redirect_alloc = 0;
 
+       if (u == NULL)
+       {
+               CtdlLogPrintf(CTDL_EMERG, "userdata got clobbz0red!  aaaaaaaaghhh!!!!\n");
+               abort();
+       }
+
        /*
         * libSieve clobbers the stack if it encounters badly formed
         * headers.  Sanitize our headers by stripping nonprintable
@@ -627,14 +633,35 @@ void sieve_do_msg(long msgnum, void *userdata) {
 
        CtdlFreeMessage(msg);
 
+       if (u == NULL)
+       {
+               CtdlLogPrintf(CTDL_EMERG, "userdata got clobbz0red!  aaaaaaaaghhh!!!!\n");
+               abort();
+       }
+
+
+       CtdlLogPrintf(CTDL_DEBUG, "HEADERS-------\n%s\n", my.rfc822headers);
+
        sieve2_setvalue_string(sieve2_context, "allheaders", my.rfc822headers);
        
+       if (u == NULL)
+       {
+               CtdlLogPrintf(CTDL_EMERG, "userdata got clobbz0red!  aaaaaaaaghhh!!!!\n");
+               abort();
+       }
+
        CtdlLogPrintf(CTDL_DEBUG, "Calling sieve2_execute()\n");
        res = sieve2_execute(sieve2_context, &my);
        if (res != SIEVE2_OK) {
                CtdlLogPrintf(CTDL_CRIT, "sieve2_execute() returned %d: %s\n", res, sieve2_errstr(res));
        }
 
+       if (u == NULL)
+       {
+               CtdlLogPrintf(CTDL_EMERG, "userdata got clobbz0red!  aaaaaaaaghhh!!!!\n");
+               abort();
+       }
+
        free(my.rfc822headers);
        my.rfc822headers = NULL;
 
@@ -647,6 +674,12 @@ void sieve_do_msg(long msgnum, void *userdata) {
                CtdlDeleteMessages(CC->room.QRname, &msgnum, 1, "");
        }
 
+       if (u == NULL)
+       {
+               CtdlLogPrintf(CTDL_EMERG, "userdata got clobbz0red!  aaaaaaaaghhh!!!!\n");
+               abort();
+       }
+
        CtdlLogPrintf(CTDL_DEBUG, "Completed sieve processing on msg <%ld>\n", msgnum);
        u->lastproc = msgnum;
 
index e73121577d193345cdcd512a2314ba5c2293f141..819913f47a9e87203212d886ab1dff6edfcda623 100644 (file)
@@ -1794,7 +1794,7 @@ int CtdlOutputPreLoadedMsg(
                                else if (i == 'Y') {
                                        if ((flags & QP_EADDR) != 0) 
                                                mptr = qp_encode_email_addrs(mptr);
-                                       fold_cprintf("CC: %s%s", mptr, nl);
+                                       cprintf("CC: %s%s", mptr, nl);
                                }
                                else if (i == 'P') {
                                        cprintf("Return-Path: %s%s", mptr, nl);
@@ -1824,13 +1824,15 @@ int CtdlOutputPreLoadedMsg(
                                {
                                        if (haschar(mptr, '@') == 0)
                                        {
-                                               fold_cprintf("To: %s@%s%s", mptr, config.c_fqdn, nl);
+                                               cprintf("To: %s@%s", mptr, config.c_fqdn);
+                                               cprintf("%s", nl);
                                        }
                                        else
                                        {
                                                if ((flags & QP_EADDR) != 0) 
                                                        mptr = qp_encode_email_addrs(mptr);
-                                               fold_cprintf("To: %s%s", mptr, nl);
+                                               cprintf("To: %s", mptr);
+                                               cprintf("%s", nl);
                                        }
                                }
                                else if (i == 'T') {
index 975585c0fe1a897edfa8c4e4a7f5e4f72df1094a..0170b4956bafe0770f93748797971dc1aae8c72b 100644 (file)
@@ -722,43 +722,6 @@ void cprintf(const char *format, ...) {
 }   
 
 
-/*
- * fold_cprintf()      Like cprintf() except it can do RFC2822-style header folding.
- */
-void fold_cprintf(const char *format, ...) {   
-       va_list arg_ptr;   
-       char buf[4096];
-       int len;
-       char *bbuf;
-       char *ptr;
-   
-       va_start(arg_ptr, format);   
-       if (vsnprintf(buf, sizeof buf, format, arg_ptr) == -1)
-               buf[sizeof buf - 2] = '\n';
-       va_end(arg_ptr);
-
-       len = strlen(buf);
-       bbuf = buf;
-
-       while (len > 998) {
-               ptr = strchr(&bbuf[900], ',');
-               if (ptr == NULL) {
-                       ptr = bbuf+990;
-               }
-               if ((ptr - bbuf) > 990) {
-                       ptr = bbuf+990;
-               }
-               ++ptr;
-               client_write(bbuf, ptr-bbuf);
-               client_write("\r\n\t", 3);
-               len -= (ptr-bbuf);
-               bbuf = ptr++;
-       }
-
-       client_write(bbuf, len);
-}   
-
-
 /*
  * Read data from the client socket.
  * Return values are:
index cf2b9c3ab5ead46a3e17687f1be35cf14458ce69..8a16f7305beb4915dfea149328c4c428a234118e 100644 (file)
 
 #ifdef __GNUC__
 void cprintf (const char *format, ...) __attribute__((__format__(__printf__,1,2)));
-void fold_cprintf (const char *format, ...) __attribute__((__format__(__printf__,1,2)));
 #else
 void cprintf (const char *format, ...);
-void fold_cprintf (const char *format, ...);
 #endif
 
 void CtdlLogPrintf(enum LogLevel loglevel, const char *format, ...);