]> git.notmuchmail.org Git - notmuch/blobdiff - mime-node.c
configure: session key handling in gmime maps to built_with("session_key")
[notmuch] / mime-node.c
index c3d5cb9b47595ad2a43606e8faf08b8a0e28283d..ae3ebef624d5d1383baf0e2f7c39547f6f73dbfe 100644 (file)
@@ -199,12 +199,8 @@ node_decrypt_and_verify (mime_node_t *node, GMimeObject *part,
     GMimeMultipartEncrypted *encrypteddata = GMIME_MULTIPART_ENCRYPTED (part);
 
     node->decrypt_attempted = true;
-    node->decrypted_child = g_mime_multipart_encrypted_decrypt
-#if (GMIME_MAJOR_VERSION < 3)
-       (encrypteddata, cryptoctx, &decrypt_result, &err);
-#else
-        (encrypteddata, GMIME_DECRYPT_NONE, NULL, &decrypt_result, &err);
-#endif
+    if (! node->decrypted_child)
+       node->decrypted_child = _notmuch_crypto_decrypt (cryptoctx, encrypteddata, &decrypt_result, &err);
     if (! node->decrypted_child) {
        fprintf (stderr, "Failed to decrypt part: %s\n",
                 err ? err->message : "no error explanation given");
@@ -214,13 +210,15 @@ node_decrypt_and_verify (mime_node_t *node, GMimeObject *part,
     node->decrypt_success = true;
     node->verify_attempted = true;
 
-    /* This may be NULL if the part is not signed. */
-    node->sig_list = g_mime_decrypt_result_get_signatures (decrypt_result);
-    if (node->sig_list) {
-       g_object_ref (node->sig_list);
-       set_signature_list_destructor (node);
+    if (decrypt_result) {
+       /* This may be NULL if the part is not signed. */
+       node->sig_list = g_mime_decrypt_result_get_signatures (decrypt_result);
+       if (node->sig_list) {
+           g_object_ref (node->sig_list);
+           set_signature_list_destructor (node);
+       }
+       g_object_unref (decrypt_result);
     }
-    g_object_unref (decrypt_result);
 
  DONE:
     if (err)
@@ -276,7 +274,7 @@ _mime_node_create (mime_node_t *parent, GMimeObject *part)
            fprintf (stderr, "Warning: %s (%s).\n", notmuch_status_to_string (status),
                     protocol ? protocol : "NULL");
        if (!cryptoctx)
-           return NULL;
+           return node;
     }
 #endif