[gmime-devel] changes to message headers being ignored



Hey all,

When creating a message object from a stream, (e.g parsing a mime file),
then changing a header such as subject and regenerating the mime again,
the generated mime doesn't reflect the changes
unless message->mime_part->headers stream is manually set to NULL.

code to reproduce:

<code>

void print_mime(GMimeMessage *m)
{
    GMimeStream *stdout_stream = g_mime_stream_fs_new(0);
    g_mime_object_write_to_stream((GMimeObject *)m, stdout_stream);
}

int main(int argc, char **argv)
{
    GMimeMessage *message;
    GMimeParser  *parser;
    GMimeStream  *stream;

    g_mime_init(0);

    const char *mime = "From: foo example com";
	
    stream = g_mime_stream_mem_new_with_buffer(mime, strlen(mime));	
    parser = g_mime_parser_new_with_stream (stream);
    message = g_mime_parser_construct_message (parser);

    printf("mime 0\n");
    print_mime(message);

    printf("-----------\n");
    g_mime_message_set_sender(message, "bar example com");

    printf("mime 1\n");
    print_mime(message);
    printf("-----------\n");

    g_mime_header_list_set_stream(message->mime_part->headers, NULL);

    printf("mime 2\n");
    print_mime(message);
    printf("-----------\n");

    return 0;
}
</code>

output:
mime 0
From: foo example com
-----------
mime 1
From: foo example com
-----------
mime 2
From: bar example com
MIME-Version: 1.0

as you see, only after calling
g_mime_header_list_set_stream(message->mime_part->headers, NULL)
we get the expected result.

maybe this should be added somewhere in message_write_to_stream() in
gmime/gmime-message.c

(P.S as always, tested with 2.4 and 2.6)

Best Regards,
Eddie.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]