2002-03-26 Not Zed <NotZed@Ximian.com>
* camel-text-index.c (text_index_normalise): Changed to use just
g_utf8_strdown instead of utf8_normalise, to match the indexing
code. utf8_normalise is just far too expensive (saves approx 25%
total processing).
svn path=/trunk/; revision=16250
2002-03-25 Not Zed <NotZed@Ximian.com>
* camel-text-index.c (text_index_add_name): When we add a new
name, up all of the cache limits, because we're probably going to
be adding more.
(text_index_sync): Drop the cache limits back down again, we dont
need them when looking words up.
** MERGE camel_index branch.
* camel-text-index.[ch]: Added files i forgot to add (eep nearly
lost all this work!)
* camel-block-file.c (sync_nolock): Fix an infinite loop in syncing.
svn path=/trunk/; revision=16242
2002-03-21 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder-summary.c (camel_message_info_new_from_header): Use
the date in the received header for the received_date.
svn path=/trunk/; revision=16225
2002-03-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_encode_param): Fix this to work
right. We need to convert the input buffer to the charset we claim
in the encoded param (duh).
svn path=/trunk/; revision=16214
2002-03-18 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c
(connect_to_server_wrapper): Updated to use the same logic as the
POP code.
svn path=/trunk/; revision=16203
2002-03-18 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-store.c (connect_to_server): No longer
takes a stls_supported argument since we no longer need it with
the new logic.
(connect_to_server_wrapper): New logic: First try connecting to
the SSL port (995 by default), if that fails with
SERVICE_UNAVAILABLE, then we attempt to connect (to port 110 by
default) and try to use STARTTLS.
svn path=/trunk/; revision=16202
2002-03-13 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_auth): Added a
work-around for SMTP servers that can't read the RFCs and thus
implement SASL incorrectly. Oh well, that's life in the world of
mail clients I guess.
svn path=/trunk/; revision=16152
2002-03-13 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Quote
the USER and PASS arguments since some people have spaces in their
user-names and/or passwords.
svn path=/trunk/; revision=16144
2002-03-12 Jeffrey Stedfast <fejj@ximian.com>
* camel-digest-store.c (camel_digest_store_new): Now takes a url
argument.
* camel-digest-folder.c (digest_add_multipart): Fixed some memory
corruption and also modified to use CAMEL_IS_MIME_MESSAGE() rather
than comparing content-type strings.
(digest_get_message): Fixed a logic blooper.
* camel-folder-summary.c (camel_message_info_new_from_header): Set
the date fields of the CamelMessageInfo as well. This may even fix
some filter-related bugs where the user was trying to compare
dates.
svn path=/trunk/; revision=16126
2002-03-11 Jeffrey Stedfast <fejj@ximian.com>
* camel-digest-store.c: A pretty empty store implementation to be
the parent store of a CamelDigestFolder.
* camel-digest-folder.c: Updated to reference it's parent store.
svn path=/trunk/; revision=16113
2002-03-11 Jeffrey Stedfast <fejj@ximian.com>
* camel-digest-folder.c (camel_digest_folder_new): Allow any leaf
part to be a message/rfc822 part.
(digest_get_uids): Recurse the mime structure and add all
message/rfc822 parts and use a uid scheme similar to IMAP's mime
part naming convention.
(digest_get_message): Decode the uid to get the correct mime part.
svn path=/trunk/; revision=16111
* camel-mime-utils.c: Change the order of the mailing list magic
patterns so that the more mailing-list specific ones are on the
top.
svn path=/trunk/; revision=16101
2002-03-11 Jeffrey Stedfast <fejj@ximian.com>
These fixes should fix bug #21737.
* providers/smtp/camel-smtp-transport.c
(connect_to_server_wrapper): Same as with the POP code.
* providers/pop3/camel-pop3-store.c (connect_to_server_wrapper):
Slight restructuring of the if-statements for the USE_SSL_ALWAYS
case so that we can't possibly return TRUE unless we really did
connect successfully.
svn path=/trunk/; revision=16097
implementation so that callers don't need to care which one is
being used.
* camel-tcp-stream-openssl.c: Implement CamelTcpStreamSSL, not
CamelTcpStreamOpenSSL. Rename methods as well. Replace the
camel-tcp-stream-openssl.h include with camel-tcp-stream-ssl.h.
* camel-tcp-stream-openssl.h: Gone.
* camel-tcp-stream-ssl.c: Add a note explaining that this
implementation is only used for NSS, and that OpenSSL's
implementation is in another file. (Should probably do some CVS
renaming magic at some point.)
* camel-http-stream.c (http_connect): Remove OpenSSL refs; the
previously-NSS-specific code works for both now.
* camel-remote-store.c: Likewise.
* providers/smtp/camel-smtp-transport.c: Likewise.
* providers/pop3/camel-pop3-store.c: Likewise.
* Makefile.am (libcamelinclude_HEADERS): Remove
camel-tcp-stream-openssl.h
svn path=/trunk/; revision=16093
* camel-tcp-stream.c (camel_tcp_stream_get_socket): Remove this:
it couldn't be generically used, because different subclasses
returned entirely different types of data.
(camel_tcp_stream_get_local_address,
camel_tcp_stream_get_remote_address): Add these to replace what
get_socket was being used for.
(camel_tcp_address_new, camel_tcp_address_free): Utility functions
for get_{local,remote}_address.
* providers/smtp/camel-smtp-transport.c: Change localaddr to a
CamelTcpAddress *.
(connect_to_server): Call camel_tcp_stream_get_local_address to
get the local IP address.
(smtp_disconnect): free localaddr.
(smtp_helo): Update for localaddr change.
* camel-tcp-stream-raw.c (stream_get_socket): Remove
(stream_get_local_address, stream_get_remote_address): Implement.
* camel-tcp-stream-ssl.c (stream_get_socket): Remove
(stream_get_local_address, stream_get_remote_address): Implement.
* camel-tcp-stream-openssl.c (stream_get_socket): Remove
(stream_get_local_address, stream_get_remote_address): Implement.
svn path=/trunk/; revision=16092
2002-03-08 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-provider.c
(camel_provider_module_init): Don't call
camel_remote_store_get_authtypes since we no longer subclass
camel-remote-store.
* providers/pop3/camel-pop3-engine.c: Added STARTTLS to the
capabilities to look for.
(camel_pop3_engine_reget_capabilities): New function to re-get
capabilities.
* providers/pop3/camel-pop3-store.c: Updated to not subclass
CamelRemoteStore.
(connect_to_server): Rewritten to not depend on CamelRemoteStore's
connect implementation. Also added support for STLS (aka
STARTTLS).
svn path=/trunk/; revision=15998
2002-03-06 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (connect_to_server): Fix
to work with OpenSSL.
svn path=/trunk/; revision=15959
2002-03-06 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-openssl.c: compile fixes.
(camel_tcp_stream_openssl_enable_ssl): Check to make sure that the
sockfd != -1, it's not enough to check that it is non-zero. Also
set the sockfd to -1 on fail (open_ssl_connection will close the
sockfd on fail).
svn path=/trunk/; revision=15953
2002-03-05 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_new_raw):
Start the ssl stream off in non-ssl mode (useful for STARTTLS).
(camel_tcp_stream_openssl_enable_ssl): New function to toggle an
ssl stream into ssl mode.
(open_ssl_connection): Close the sockfd on fail so our caller
doesn't have to - this also allows us to save the original errno.
(stream_connect): If we want ssl mode, do our ssl stuff.
(camel_tcp_stream_openssl_class_init): Init some SSL stuff here
instead of in open_ssl_connection since these only ever need to be
called once.
(stream_read): Only use SSL_read if we are in ssl mode.
(stream_write): Only use SSL_write if we are in ssl mode.
* providers/smtp/camel-smtp-transport.c (smtp_helo): Check for the
STARTTLS extension.
(connect_to_server): Try to use STARTTLS whenever possible rather
than the old way of doing things.
(connect_to_server_wrapper): Wrapper around connect_to_server() to
first try STARTTLS and then attempt normal SSL mode if we can't
connect via STARTTLS.
* camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_enable_ssl): New
function to toggle an ssl stream into ssl mode.
(camel_tcp_stream_ssl_new_raw): Start the ssl stream off in
non-ssl mode (useful for STARTTLS).
(stream_connect): Only connect in SSL mode if required.
svn path=/trunk/; revision=15937
2002-03-01 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part-utils.c
(camel_mime_part_construct_content_from_parser): Reverted my
pgp/mime fixes here too.
* camel-mime-part.c (write_to_stream): Removed my pgp/mime raw
stream hack, this is causing problems such as some messages to not
displaying, view->source not working at all, etc.
svn path=/trunk/; revision=15883
2002-02-28 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-parser.c: Changed offset variables from int's to
off_t's since the system may support large files.
svn path=/trunk/; revision=15874
2002-02-28 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part-utils.c
(camel_mime_part_construct_content_from_parser): Rearrange the
save filter stuff so that we save raw streams for all mime
parts. If the mime part turns out to be a multupart, then don't
bother saving the raw stream, we only need to save the raw stream
for leaf parts.
svn path=/trunk/; revision=15873
2002-02-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder-summary.h: Don't #include camel-mime-filter-save.h,
we don't use it.
* camel-file-utils.c: Fixed a few 'might be used uninitialized'
warnings which were real problems.
* camel-mime-part-utils.c
(camel_mime_part_construct_content_from_parser): Save the raw mime
stream for any/all signed parts.
* camel-mime-part.c (camel_mime_part_init): Initialize our raw
stream to NULL.
(camel_mime_part_finalize): Unref our raw stream, if we have one.
(write_to_stream): If we have a raw stream, write that out instead
of re-encoding.
* camel-mime-filter-save.[c,h]: Rewritten to save to a stream
rather than a file.
svn path=/trunk/; revision=15867
2002-02-28 Not Zed <NotZed@Ximian.com>
* camel-mime-utils.c (header_fold): Use the FOLD_SIZE as a
recommended folding size, but add a new FOLD_MAX_SIZE (=998, the
smtp max line size) as the hard limit for any output.
svn path=/trunk/; revision=15866
2002-02-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-chomp.c (camel_mime_filter_chomp_new): New
stream filter that chomps excess trailing whitespace from the end
of the stream. This is needed to update the PGP/MIME code to
comply with rfc3156.
* camel-pgp-mime.c (camel_pgp_mime_part_verify): Don't attach a
from filter, if it ain't from-filtered already, then we'll just be
breaking stuff. To become rfc3156 compliant, add a chomp filter
here.
(camel_pgp_mime_part_sign): Add a chomp filter here too.
svn path=/trunk/; revision=15863
2002-02-27 Not Zed <NotZed@Ximian.com>
* camel-mime-part.c (init_header_name_table): Changed header
formatted table to contain a pointer to an output function, and
added in-reply-to and references headers.
(write_references): New function to write out references header,
folded properly. It only approximates based on the last >, but it
should be adequate and will also handle invalid headers.
(write_fold): Function to write out headers folded. Since this is
the default it isn't required.
(write_raw): Write out an already formatted header, e.g. most of
the rest.
(write_to_stream): Lookup header output function, if we have one,
use that, otherwise fold header using basic (dumb) function.
This is all for #14779. A better fix is probably do have the
headers always stored formatted, but that can wait.
svn path=/trunk/; revision=15852
2002-02-12 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_helo): Since the
AUTH token sometimes uses '=' instead of whitespace, don't use
smtp_token_next here.
svn path=/trunk/; revision=15688
2002-02-09 Not Zed <NotZed@Ximian.com>
* providers/pop3/camel-pop3-engine.c (get_capabilities): Duh, when
we grab the apop stamp it needs to include the <> as well, I even
read the rfc, silly me.
* providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Doh,
when iterating the authtype list, it helps to goto the next node.
Found with help from miles.
svn path=/trunk/; revision=15636
2002-02-08 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-summary.c
(camel_spool_summary_build_from): The day number has to be 2 chars
wide, space filled to work properly with pine, etc.
* providers/local/camel-spoold-store.[ch]: new type of provider
'spool directory', which lets you view external mbox dirs without
adding any extra cruft. Perhaps it should use . files to store
summaries? Still a bit experimental, there's a warning when you
select it in the account editor. Finished off most of #1185.
Can't rename or move folders.
* camel-mime-utils.c (header_decode_date): If the date is
100->1900 then we actually want to use it as the year in the tm
struct, not year+100. e.g. year 102 -> 2002, not 2102.
2002-02-07 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-store.c (get_folder): Pass path into
spool_folder_new.
* providers/local/camel-spool-folder.c (camel_spool_folder_new):
(camel_spool_folder_construct): Take the full path to the folder
and use that as the file path, independent of the full_name we
use.
2002-02-07 Not Zed <NotZed@Ximian.com>
* providers/local/camel-local-provider.c: Added new type, spoold
provider, spoold: for local directories.
* providers/imap/camel-imap-store.c (get_one_folder_offline):
Create offline uri's in a compatible manner to online ones.
svn path=/trunk/; revision=15606
* camel-sasl-ntlm.c: Implementation of NTLM (aka "Secure Password
Authentication") auth, taken from soup.
* Makefile.am (libcamel_la_SOURCES, libcamel_la_HEADERS): Add
camel-sasl-ntlm.
* camel-sasl.c: Add refs to camel-sasl-ntlm.
* providers/imap/camel-imap-store.c (try_auth): Use
imap_next_word() to skip over the "+ " of the continuation rather
than just "resp + 2" since Exchange (incorrectly) returns "+"
instead of "+ " for an empty continuation response.
svn path=/trunk/; revision=15605
2002-02-06 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder-summary.h: Remove the CAMEL_MESSAGE_NEEDS_REPLY
flag, we no longer will be using this.
svn path=/trunk/; revision=15586