2003-06-16 Not Zed <NotZed@Ximian.com>
** See bug #44322
* providers/imap/camel-imap-command.c (imap_command_strdup_vprintf):
If we are outputting a folder name, make sure we calculate buffer
size based on the raw/utf7 version
** See bug #44121
* camel-multipart-signed.c (signed_get_part): If we can't parse
the content, but we have a stream, just use that as the content.
svn path=/trunk/; revision=21454
2003-06-05 Jeffrey Stedfast <fejj@ximian.com>
Fix for bug #40788.
* providers/pop3/camel-pop3-engine.c (camel_pop3_engine_new): Now
takes a flags argument. Currently there is only 1 flag which can
be used to disable Pop3 server extensions.
(get_capabilities): Don't check for Pop3 server extensions if the
DISABLE_EXTENSIONS flag is set on the engine.
(camel_pop3_engine_iterate): If we get a response that is neither
+OK nor -ERR, default to treating it like a -ERR.
* providers/pop3/camel-pop3-store.c (connect_to_server): Check for
the disable_extensions param.
* providers/pop3/camel-pop3-provider.c: Define a checkbox to
disable all POP3 extension support.
svn path=/trunk/; revision=21438
2003-06-11 Jeffrey Stedfast <fejj@ximian.com>
Partial fix for bug #44457.
* camel-mime-part-utils.c
(simple_data_wrapper_construct_from_parser): Make sure to set
rawtext to FALSE if we successfully convert the text to UTF-8.
* camel-data-wrapper.c (camel_data_wrapper_init): Default the
value of rawtext to TRUE instead of FALSE. This way if the mailer
decides to try displaying a non-textual part as text, it knows
that it needs to convert the content to UTF-8.
svn path=/trunk/; revision=21420
2003-06-04 Jeffrey Stedfast <fejj@ximian.com>
* camel-uid-cache.c (camel_uid_cache_new): Create the directory
with mode 0777 and the cache file itself with mode 0666. Let the
user's umask filter the permissions. Instead of saving the fd on
the Cache object, instead save the filename. Use camel_read()
instead of expecting read() to just always work without getting an
EINTR/etc.
(maybe_write_uid): Don't do anything if cache->fd == -1, this
means an error has occured in a previous callback. Replace the 2
calls to write() with camel_write() and check their return
values. If either of them fails, set cache->fd to -1 (GHashTable
doesn't give us a way to abort foreach'ing thru the table).
(camel_uid_cache_save): Save to a temp file instead of overwriting
the original. Do proper error checking, etc. Also added some
smarts about whether to try and overwrite the old cache even if we
haven't successfully saved all the uids in the cache.
(camel_uid_cache_destroy): Free the cache->filename, no longer
need to close (cache->fd).
svn path=/trunk/; revision=21416
2003-06-09 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-message.c (find_best_encoding): Add the
CAMEL_BESTENC_TEXT bit to enctype if the part is a text part.
* camel-mime-filter-bestenc.c
(camel_mime_filter_bestenc_get_best_encoding): If we have any
nul-bytes or if the content is non-text and contains any 8bit
octets, we need to use base64. Fixes bug #44344.
svn path=/trunk/; revision=21409
2003-06-01 Jeffrey Stedfast <fejj@ximian.com>
* broken-date-parser.c (d): Turn off debugging.
* providers/pop3/camel-pop3-engine.c (get_capabilities): Move the
code that prepends the 'password' authtype to the auth list so
that we don't add it again when regetting the capabilities.
svn path=/trunk/; revision=21360
2003-05-27 Jeffrey Stedfast <fejj@ximian.com>
This should finish fixing all variations of bug #42854, which,
funnily enough specified "copying" as the scenario for reproducing
this bug, but somehow I found/fixed it only for expunging for some
reason? I can't even guess as to how this happened. Oh well,
expunging needed fixing either way.
* providers/imap/camel-imap-folder.c (imap_transfer_online): Sort
the uids here too (just like I had fixed for expunge a week or so
ago).
(imap_transfer_resyncing): Sort them here too.
(imap_search_by_uids): Sort here too, even though I don't think it
is necessary. Can't hurt.
(imap_expunge_uids_offline): Might as well sort here too.
svn path=/trunk/; revision=21341
2003-05-22 Jeffrey Stedfast <fejj@ximian.com>
* camel-object.c (camel_object_bag_destroy): Lets try this
again. We don't actually want to free the key here, because
camel_object_bag_remove() does that for us. This should fix bug
#43406 properly.
svn path=/trunk/; revision=21327
2003-05-20 Jeffrey Stedfast <fejj@ximian.com>
* camel-object.c (camel_object_bag_destroy): Create a second
GPtrArray for the keys. We don't want to use bag->free_key() on
the object. Fixes bug #43406.
svn path=/trunk/; revision=21300
2003-05-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder-summary.c (camel_folder_summary_load): Only display
a warning if errno != EINVAL (EINVAL means there was a version
mismatch, so we don't really need to warn here since we are
supposed to be able to handle this situation).
(perform_content_info_load): Turn off debugging message.
(summary_assign_uid): Turn off uid-clash warning.
(camel_folder_summary_decode_token): Turn off debug messages.
(summary_header_load): Turn off version-mismatch warning.
svn path=/trunk/; revision=21284
2003-05-15 Not Zed <NotZed@Ximian.com>
* camel-mime-utils.c (header_decode_word): Simplistic quick-fix
for #42710. Add a charset argument. If the data is 8 bit, try to
decode into the passed in charset (i.e. the message header?), at
worst, fall back to latin1, similarly to header_decode_text.
Fixed all callers to pass in a charset if available, or NULL.
svn path=/trunk/; revision=21202
2003-05-13 Jeffrey Stedfast <fejj@ximian.com>
* providers/local/camel-local-folder.c (local_delete): Only delete
the index if it is non-NULL. Fixes bug #42763.
svn path=/trunk/; revision=21193
2003-05-14 Not Zed <NotZed@Ximian.com>
** See bug #42540
* camel-service.c (camel_gethostbyname): pre-initialise the error
return to invalid, so if we cancel, we definetly get a bad result.
Also, for a valid return against result, not herr.
(camel_gethostbyaddr): Likewise.
svn path=/trunk/; revision=21187
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