diff --git a/libbalsa/autocrypt.c b/libbalsa/autocrypt.c index 6c6c5f5a7..1d35459e9 100644 --- a/libbalsa/autocrypt.c +++ b/libbalsa/autocrypt.c @@ -196,12 +196,11 @@ autocrypt_from_message(LibBalsaMessage *message, GError **error) { const gchar *from_addr; - GMimeHeaderList *headers; - GMimeHeaderIter iter; AutocryptData *autocrypt = NULL; + const gchar *autocrypt_hdr; g_return_if_fail(LIBBALSA_IS_MESSAGE(message) && (message->headers != NULL) && (message->headers->from != NULL) && - (message->headers->content_type != NULL) && GMIME_IS_OBJECT(message->mime_msg) && (autocrypt_db != NULL)); + (message->headers->content_type != NULL) && (autocrypt_db != NULL)); // FIXME - we should ignore spam - how can we detect it? @@ -231,30 +230,28 @@ autocrypt_from_message(LibBalsaMessage *message, g_debug("message from '%s', date %ld", from_addr, message->headers->date); /* scan for Autocrypt headers */ - headers = g_mime_object_get_header_list(GMIME_OBJECT(message->mime_msg)); - if (g_mime_header_list_get_iter(headers, &iter)) { - do { - if ((g_ascii_strcasecmp(g_mime_header_iter_get_name(&iter), "Autocrypt") == 0) && - (g_mime_header_iter_get_value(&iter) != NULL)) { - AutocryptData *new_data; - - new_data = parse_autocrypt_header(g_mime_header_iter_get_value(&iter)); - if (new_data != NULL) { - if (autocrypt == NULL) { - autocrypt = new_data; - } else { - g_info("more than one valid Autocrypt header, ignore message"); - autocrypt_free(autocrypt); - autocrypt_free(new_data); - return; - } - } else { - /* ignore message with broken Autocrypt header */ - autocrypt_free(autocrypt); - return; - } - } - } while (g_mime_header_iter_next(&iter)); + + autocrypt_hdr = libbalsa_message_get_user_header(message, "Autocrypt"); + if (autocrypt_hdr != NULL) { + AutocryptData *new_data; + + new_data = parse_autocrypt_header(autocrypt_hdr); + if (new_data != NULL) { + if (autocrypt == NULL) { + autocrypt = new_data; + } else { + g_info("more than one valid Autocrypt header, ignore message"); + autocrypt_free(autocrypt); + autocrypt_free(new_data); + + return; + } + } else { + /* ignore message with broken Autocrypt header */ + autocrypt_free(autocrypt); + + return; + } } /* check if addr matches From: - ignore otherwise */