2003-05-13 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Added
a note to the comment block for this function noting that uids
MUST be in sorted order.
* providers/imap/camel-imap-folder.c (imap_expunge_uids_online):
Sort the uids before splitting them into UID set chunks. The code
that splits the uid array into sets expects the uids to be in
sorted order. Fixes bug #42854.
* providers/imap/camel-imap-command.c (imap_command_start):
Re-enable camel_verbose_debug logging.
svn path=/trunk/; revision=21173
2003-05-12 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_helo): If
host->h_name is NULL or an empty string, default back to using the
IP address rather than the hostname in the EHLO command.
svn path=/trunk/; revision=21159
2003-05-01 Jeffrey Stedfast <fejj@ximian.com>
Workaround for POS mailers like the one in bug #42045.
* camel-mime-utils.c (header_decode_date): Make sure the numeric
timezone is between -1200 and 1200, otherwise it is invalid.
* broken-date-parser.c (get_tzone): Make sure the numeric timezone
is between -1200 and 1200, otherwise it is invalid.
svn path=/trunk/; revision=21048
* Makefile.am (camel_lock_helper_SOURCES): Remove camel-lock.c
from here because it upsets automake 1.6 for some reason
(camel_lock_helper_LDADD): Add camel-lock.o here
svn path=/trunk/; revision=21033
2003-04-29 Jeremy Katz <katzj@redhat.com>
* providers/imap/camel-imap-folder.c (parse_fetch_response):
body_len needs to be a size_t instead of int
svn path=/trunk/; revision=21027
2003-04-23 Not Zed <NotZed@Ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_helo): only free the
host if it was set. removes a run-time warning.
svn path=/trunk/; revision=20949
2003-04-22 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (imap_connect_online): #if 0
out some code that parsed the namespaces since the results aren't
used and they generate debugging output.
svn path=/trunk/; revision=20936
2003-04-23 Not Zed <NotZed@Ximian.com>
* camel-session.c (get_service): oops, the service owns the url
after we construct it.
svn path=/trunk/; revision=20931
2003-04-22 Not Zed <NotZed@Ximian.com>
** Should fix#41629, #41448, et al.
* tests/folder/test10.c: a new torture test for object bag
creation/unreffing.
* camel-url.c (camel_url_copy): new function to copy a url.
* camel-object.c (camel_object_bag_new): add arguments for key
copy and key free functions. Fixed all callers.
(camel_object_bag_destroy): fix a memleak, free the bag key.
(camel_object_bag_get, camel_object_bag_reserve)
(camel_object_bag_abort, save_bag, save_object): Make the key a
void type, rather than char *.
(camel_object_bag_add): As above, and also copy the key.
(camel_object_bag_remove_unlocked): free the key using
bag->free_key.
* camel-session.c (register_provider)
(camel_session_destroy_provider, get_service): Changed to use an
object bag instead of a hash table for the service 'cache'.
(service_cache_remove): Removed, no longer required.
svn path=/trunk/; revision=20930
2003-04-21 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_parse_status): Don't set seen_eof1
here anymore once we get a trust metric.
(gpg_ctx_new): Init seen_eof1 to TRUE here.
(gpg_ctx_set_ostream): Change seen_eof1 to FALSE here this way we
only ever have to set this if we are expecting output.
(gpg_ctx_parse_status): Don't set seen_eof1 for importing either.
(gpg_ctx_op_step): Only FD_SET() those fd's that we have not yet
finished reading.
svn path=/trunk/; revision=20922
2003-04-17 Not Zed <NotZed@Ximian.com>
** for #40989
* camel-text-index.c (text_index_delete): delete the block
file/key file directly, not just its files.
* providers/local/camel-local-folder.c (local_delete): implement,
just delete the index file if it exists.
camel-store-delete-folder will delete other data (maybe it all
should be done here).
* camel-block-file.c (camel_key_file_finalise): keep lock around
decrementing key file use count.
(camel_key_file_delete): new function to delete the key file (&
close it off).
(key_file_use): if we've been deleted, always fail.
(camel_block_file_finalise): only close the file if its a valid
fd.
(block_file_use): if we've been deleted, always fail.
(camel_block_file_delete): delete the block file & close.
(struct _CamelBlockFilePrivate): fix the !ENABLE_THREADS case to
still compile this.
svn path=/trunk/; revision=20894
2003-04-16 Jeffrey Stedfast <fejj@ximian.com>
* camel-url-scanner.c (camel_url_web_end): Urls are unlikely to
end with punctuation or closing braces, so strip any of those off
the end of the url. Fixes bug #41461.
* tests/mime-filter/data/html.1.out: Removed a trailing \n at the
end of the file, this is incorrect (since out input file does not
contain one).
* camel-mime-filter-tohtml.c (html_convert): Only output a <br> if
we found an eoln in the input. Along the same lines, don't write a
'\n' to the output buffer unless we've encountered that eoln in
the input. Fixes bug #41407.
svn path=/trunk/; revision=20882
2003-04-17 Not Zed <NotZed@Ximian.com>
* camel-multipart-signed.c (parse_content): Dont assume adding 1
to line length will go to the next line. e.g. for dos lines that
end in \r\n. Fix for #41163.
(parse_boundary): util function to help above.
svn path=/trunk/; revision=20874
2003-04-15 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_verify): The gpg child process exiting
does not necessarily mean that we've ready everything that we can
from its pipes, so don't use gpg_ctx_op_exited() as a loop-exit
condition. If for some reason the gpg child process does exit (due
to an error), gpg_ctx_op_step() will eventually fail (as soon as
it has finished reading any data in the pipes) and cause the loop
to be terminated anyway. This fixes truncation of the gpg --verify
stderr output that Evolution displays as the "validity report"
(for lack of a better description).
(gpg_ctx_op_step): Removed some debugging printf's
(gpg_ctx_get_diagnostics): Use a bitfield to decide if we've
already flushed the diagnostics stream, much simpler (plus we have
plenty of bits to spare so might as well use them).
(gpg_ctx_new): Fixed another logic bug which determined whether or
not we should convert the gpg output from the locale charset into
UTF-8.
svn path=/trunk/; revision=20865
2003-04-10 Not Zed <NotZed@Ximian.com>
* tests/mime-filter/data: filter data test cases.
* tests/mime-filter/test-tohtml.c: New test for html filter.
** See bug #40969
* camel-mime-filter-tohtml.c (html_convert): Change the logic
slightly, scan a whole line within the main loop.
svn path=/trunk/; revision=20799
2003-04-09 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_get_utf8_diagnostics): Removed. I
just realised that we ALWAYS want to get gpg's stderr in UTF-8, so
the better solution (plus less code duplication) is to just have
the diagnostics buffer be a CamelStreamMem with a charset filter.
(gpg_ctx_new): Setup a filter stream to convert our gpg stderr
diagnostics into UTF-8 if needed.
(gpg_ctx_free): Unref the diagnostcis stream.
(gpg_ctx_parse_status): Flush the diagnostics stream if we are
going to use the data in an exception.
(gpg_ctx_op_step): Use camel_stream_write() to append to the
diagnostics stream rather than appending the buffer to a
GByteArray like we used to do.
(gpg_ctx_op_step): Flush the diagnostics stream here too.
(gpg_verify): Use a const char *diagnostics string here, forcing a
slight rearrangement of calls - use the const char *dignostics
before we gpg_ctx_free, otherwise we'll be passing free'd memory
off to the cipher_validity.
(gpg_ctx_get_diagnostics): Do the work here to flush the
diagnostics stream and nul-terminate the buffer. Also return const
now, instead of strdupping. No need for that.
(gpg_ctx_parse_status): Convert the user hint to UTF-8.
svn path=/trunk/; revision=20798
2003-04-09 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_get_utf8_diagnostics): Changed my
mind a bit on how I wanted this to work. Instead of aborting on an
illegal sequence, do like we do with camel-mime-filter-charset and
just skip over invalid sequences. Also, in the noop failure case,
close the iconv_t so we don't leak it.
svn path=/trunk/; revision=20796
2003-04-09 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-utils.c (imap_body_decode): Save the
content size in a temp variable until after we've successfully
parsed all of the body_type_1part expr. Also fixed a type-o in the
body_type_mpart case that caused the parser to fail.
(imap_parse_body): On failure to parse the body, as we iterate
through the child nodes, set their children/parent/next nodes to
NULL so that content_info_free() won't double-free any of the
other nodes we have already free'd (or are about to free).
svn path=/trunk/; revision=20795
2003-04-09 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_get_utf8_diagnostics): New function
to get the UTF-8 version of the diagnostics (if the locale isn't
already UTF-8 safe).
(gpg_verify): Use the utf-8 diagnostics here. Also fixed a memleak
in the exception case.
svn path=/trunk/; revision=20792
2003-04-08 Jeffrey Stedfast <fejj@ximian.com>
Fixes for bug #40778. Probably others as well.
* providers/imap/camel-imap-utils.c (parse_params): Return 0 on
success, or -1 on fail. The other small utility functions should
probably do the same, but I was too lazy to fix them. Setting
inptr to NULL is just lame.
(imap_body_decode): New function to correctly parse a BODY
response.
(imap_parse_body): Rewritten to use the above function.
svn path=/trunk/; revision=20773
2003-04-08 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_helo): Make sure
host->h_name is not an empty string too? Apparently for one user
his resolved hostname is "". Go figure. Probably a broken system,
but easy enough to work around.
svn path=/trunk/; revision=20768
2003-04-08 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-store.c (pop3_try_authenticate): If
store->engine->line is NULL, use _("Unknown error") as the error
string instead.
svn path=/trunk/; revision=20765
2003-04-08 Not Zed <NotZed@Ximian.com>
* camel-folder-summary.c (camel_folder_summary_load): use
g_strerror, and use errno directly rather than ferrno().
(summary_header_load): set errno when we get a version mismatch.
svn path=/trunk/; revision=20739
2003-03-28 Jeffrey Stedfast <fejj@ximian.com>
* camel-sasl-gssapi.c (gssapi_challenge): If we are using the
heimdal krb5 implementation, don't free outbuf ever. Seems to
segfault if we do.
svn path=/trunk/; revision=20624
2003-03-31 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-enriched.c (enriched_to_html): Use strncasecmp
for matching the nofill and /nofill tags. Also fixed to handle
enriched tags that require <param> tags.
svn path=/trunk/; revision=20603
2003-03-28 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-store.c (get_folder): remove unused
var.
* providers/imap/camel-imap-utils.c (imap_parse_list_response):
moved an unused var to the #if 0'd out block.
* providers/imap/camel-imap-store.c
(parse_list_response_as_folder_info): remove unused vars.
* camel-index-control.c (main): deifne camel_init() before using
it.
* camel-vee-store.c (vee_get_folder): removed unused var.
* camel-stream-mem.c (stream_write): warning -> fixme.
* camel-stream-filter.c (_CamelStreamFilterPrivate): Add a ; to
the end of the struct definition.
* camel-store.c (camel_store_delete_folder): remove unused var.
(camel_store_rename_folder): "
(camel_store_unsubscribe_folder): "
* camel-mime-part.c (write_to_stream): Changed warning into a
TODO.
(construct_from_parser): removed warning, the code was fixed.
* camel-mime-message.c (construct_from_parser): Remove the
warning, the code was fixed.
* camel-mime-filter-enriched.c (camel_mime_filter_enriched_new):
Remove unused var.
* camel-medium.c (camel_medium_get_header): Removed warning, and
changed docs to reflect it.
* camel-gpg-context.c (gpg_ctx_parse_status): handle MODE_EXPORT
as a noop (warning).
* camel-folder.c (get_message_user_tag): changed a warning into a
fixme (its not that important).
(camel_folder_get_message_user_tag): "
* camel-data-cache.c (data_cache_finalise): removed unused vars.
(data_cache_expire): "
svn path=/trunk/; revision=20556
2003-03-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-sasl-gssapi.c (gssapi_challenge): Get rid of debug
printf's that are no longer needed. In the case of errors, don't
release the outbuf gss_buffer_t since it shouldn't be set. Also
g_free (str) when we are done with it.
svn path=/trunk/; revision=20551
2003-03-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_encode_phrase_merge_words): When we
remove a node from the list, make sure to g_list_free_1().
(header_encode_phrase_merge_words): Don't use
CAMEL_FOLD_PREENCODED as the upper-bound for merged-word length if
the merged-word will not be an rfc2047 encoded word. Instead, use
CAMEL_FOLD_SIZE-8 (which is the value we use in other places for
determining upper-bound lengths). Solves bug #38659.
svn path=/trunk/; revision=20549
* camel-url.c (append_url_encoded): Like camel_url_encode, but
works directly on an existing GString.
(camel_url_to_string, output_param): Use it.
(camel_url_encode): Likewise. Remove "escape_unsafe" arg since the
"unsafe" chars are the ones that should *always* be escaped, and
the places we were passing FALSE were wrong.
(camel_url_decode): replace with a new version
* camel-file-utils.c (camel_file_util_safe_filename): Remove extra
arg to camel_url_encode.
* tests/misc/url.c (main): Add tests of basic URL parsing and
unparsing
svn path=/trunk/; revision=20545
2003-03-28 Not Zed <NotZed@Ximian.com>
*
camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser):
Do a more thorough check for html marked as text/plain. Check
that the text starts with <html or <!doctype. More complete fix
for #16817.
svn path=/trunk/; revision=20544
2003-03-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-sasl-gssapi.c (camel_sasl_gssapi_finalize): Pass in the
addresses of the second args to the delete/release functions.
svn path=/trunk/; revision=20517
2003-03-27 Not Zed <NotZed@Ximian.com>
* camel-object.c (camel_object_bag_list): Ignore whether or not
the bag is currently reserved. We'll miss the new potential
object, but only 1. Should address #40103.
svn path=/trunk/; revision=20514
2003-03-25 Jeffrey Stedfast <fejj@ximian.com>
* camel-service.c (camel_gethostbyaddr): Don't use setv when we
don't need the stdarg interface.
(camel_gethostbyname): Same.
svn path=/trunk/; revision=20506
2003-03-24 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder-search.c (search_user_tag): This expression can
never return an array. We must always return a string value.
svn path=/trunk/; revision=20487
2003-03-24ÃÂ Timo SirainenÃÂ <tss@iki.fi>
* camel-imap-command.c (imap_read_untagged) Integer overflow fix.
If server sent a huge literal length, only a few bytes of memory
was allocated to it, but server could write as much data there as
it wanted.
svn path=/trunk/; revision=20484
2003-03-21 Jeffrey Stedfast <fejj@ximian.com>
Camel part of the fix for Lewing's bug #39204. Second half of the
patch should also fix it so that text/plain parts that are
detected as being text/html are rendered as html (not that I agree
with this mind you, but corporate customers want this "feature").
* camel-mime-part-utils.c
(simple_data_wrapper_construct_from_parser): If the part is
text/html and doesn't have a charset and we are able to find a
charset in the meta tags of the html content, set the charset
param on the content-type.
(camel_mime_part_construct_content_from_parser): After setting the
content object on the mime part, re-set the content-type of the
content object back to the one from the parser (as it may contain
changes from the original - see changes made to the ct in
simple_data_wrapper_construct_from_parser for details).
svn path=/trunk/; revision=20463
2003-03-21 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-ssl.c (camel_certdb_nss_cert_get): continue
reading the cert file until we've read it all or get a non-EINTR
errno.
svn path=/trunk/; revision=20457
2003-03-20 Jeffrey Stedfast <fejj@ximian.com>
* camel-sasl.c: Plug in GSSAPI support.
* camel-sasl-gssapi.[c,h]: Various fixes to make it compile (fixed
type-o's mostly).
svn path=/trunk/; revision=20438
raw 8-bit Subject data.)
* camel-mime-utils.c (header_decode_mailbox): Take a charset arg
and pass it to header_decode_string.
(header_decode_address): Take a charset arg and pass it to
header_decode_mailbox.
(header_mailbox_decode): Likewise.
(header_address_decode): Take a charset arg and pass it to
header_decode_address.
* camel-folder-summary.c (summary_format_address): Take a charset
arg and pass to header_address_decode.
(message_info_new, camel_message_info_new_from_header): Pass
charset to summary_format_address
* camel-internet-address.c (internet_decode): Update for
header_address_decode change. (Unfortunately we don't have a
charset to pass here.)
* camel-mime-message.c (camel_mime_message_build_mbox_from): Move
this here from camel-mbox-summary since the same functionality is
needed by evolution-mail too (and update for header_address_decode
change)
* providers/local/camel-mbox-summary.c
(camel_mbox_summary_build_from): Moved to CamelMimeMessage
svn path=/trunk/; revision=20430
2003-03-17 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part.c (process_header): Removed unused variable left
over from my previous fix.
* providers/smtp/camel-smtp-transport.c (smtp_send_to): Don't pass
'has_8bit_parts' to smtp_data() anymore.
(smtp_data): No longer takes 'has_8bit_parts' argument. Ignore
whether or not the message has 8bit parts when deciding what the
required encoding type we need to enforce. Fixes bug #39744.
svn path=/trunk/; revision=20312
2003-03-13 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part.c (process_header): Use
header_contentid_decode() as this new function should be safer
than the hack that we had before.
* camel-mime-utils.c (header_contentid_decode): New function to
try and parse a content-id string in such a way as to work around
some of the known bugs in other MIME implementations. Try to be as
"safe" as we can - ie. don't allow for more than 1 @ (since the
mailer uses "@@@%d" as a fake content-id value for parts without
content-ids) and don't allow for invalid content-type chars.
svn path=/trunk/; revision=20295