diff options
author | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-08-30 05:29:52 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-08-30 05:29:52 +0800 |
commit | a036c22b744939540ce776e76826f215cf7d81a2 (patch) | |
tree | 18e4f90d1cf20d4a9b1433c909d1b903d39be650 /camel/camel-smime-context.c | |
parent | 4572ee60ec1d8e854fc76fa09f1d670db3e896b7 (diff) | |
download | gsoc2013-evolution-a036c22b744939540ce776e76826f215cf7d81a2.tar gsoc2013-evolution-a036c22b744939540ce776e76826f215cf7d81a2.tar.gz gsoc2013-evolution-a036c22b744939540ce776e76826f215cf7d81a2.tar.bz2 gsoc2013-evolution-a036c22b744939540ce776e76826f215cf7d81a2.tar.lz gsoc2013-evolution-a036c22b744939540ce776e76826f215cf7d81a2.tar.xz gsoc2013-evolution-a036c22b744939540ce776e76826f215cf7d81a2.tar.zst gsoc2013-evolution-a036c22b744939540ce776e76826f215cf7d81a2.zip |
fix smime the same way...
svn path=/trunk/; revision=12520
Diffstat (limited to 'camel/camel-smime-context.c')
-rw-r--r-- | camel/camel-smime-context.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/camel/camel-smime-context.c b/camel/camel-smime-context.c index 8f944841fe..46ecf5c3a7 100644 --- a/camel/camel-smime-context.c +++ b/camel/camel-smime-context.c @@ -272,7 +272,7 @@ signed_data (CamelSMimeContext *ctx, const char *userid, gboolean signing_time, } static void -smime_sign_restore (CamelMimePart *mime_part, GSList *encodings) +smime_sign_restore (CamelMimePart *mime_part, GSList **encodings) { CamelDataWrapper *wrapper; @@ -288,14 +288,19 @@ smime_sign_restore (CamelMimePart *mime_part, GSList *encodings) CamelMimePart *part = camel_multipart_get_part (CAMEL_MULTIPART (wrapper), i); smime_sign_restore (part, encodings); - encodings = encodings->next; + *encodings = (*encodings)->next; } } else { CamelMimePartEncodingType encoding; - encoding = GPOINTER_TO_INT (encodings->data); - - camel_mime_part_set_encoding (mime_part, encoding); + if (CAMEL_IS_MIME_MESSAGE (wrapper)) { + /* restore the message parts' subparts */ + smime_sign_restore (CAMEL_MIME_PART (wrapper), encodings); + } else { + encoding = GPOINTER_TO_INT ((*encodings)->data); + + camel_mime_part_set_encoding (mime_part, encoding); + } } } @@ -319,14 +324,19 @@ smime_sign_prepare (CamelMimePart *mime_part, GSList **encodings) } else { CamelMimePartEncodingType encoding; - encoding = camel_mime_part_get_encoding (mime_part); - - /* FIXME: find the best encoding for this part and use that instead?? */ - /* the encoding should really be QP or Base64 */ - if (encoding != CAMEL_MIME_PART_ENCODING_BASE64) - camel_mime_part_set_encoding (mime_part, CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE); - - *encodings = g_slist_append (*encodings, GINT_TO_POINTER (encoding)); + if (CAMEL_IS_MIME_MESSAGE (wrapper)) { + /* prepare the message parts' subparts */ + smime_sign_prepare (CAMEL_MIME_PART (wrapper), encodings); + } else { + encoding = camel_mime_part_get_encoding (mime_part); + + /* FIXME: find the best encoding for this part and use that instead?? */ + /* the encoding should really be QP or Base64 */ + if (encoding != CAMEL_MIME_PART_ENCODING_BASE64) + camel_mime_part_set_encoding (mime_part, CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE); + + *encodings = g_slist_append (*encodings, GINT_TO_POINTER (encoding)); + } } } @@ -343,7 +353,7 @@ smime_sign (CamelCMSContext *ctx, CamelMimeMessage *message, NSSCMSEncoderContext *ecx; SECItem output = { 0, 0, 0 }; CamelStream *stream; - GSList *encodings = NULL; + GSList *list, *encodings = NULL; GByteArray *buf; cmsg = signed_data (CAMEL_SMIME_CONTEXT (ctx), userid, signing_time, detached, ex); @@ -363,7 +373,8 @@ smime_sign (CamelCMSContext *ctx, CamelMimeMessage *message, smime_sign_prepare (CAMEL_MIME_PART (message), &encodings); camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), stream); - smime_sign_restore (CAMEL_MIME_PART (message), encodings); + list = encodings; + smime_sign_restore (CAMEL_MIME_PART (message), &list); g_slist_free (encodings); buf = CAMEL_STREAM_MEM (stream)->buffer; |