aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-tcp-stream-ssl.c
Commit message (Collapse)AuthorAgeFilesLines
* ** See bug #47821.Not Zed2004-09-241-58/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2004-09-13 Not Zed <NotZed@Ximian.com> ** See bug #47821. * camel-service.c: removed the old hostent based hostname interfaces. * camel-sasl-kerberos4.c (krb4_challenge): new hostname interfaces. * camel-sasl-gssapi.c (gssapi_challenge): new hostname interfaces. * camel-sasl-digest-md5.c (digest_md5_challenge): use new hostname interfaces. (generate_response): just take hostname directly, not hostent. * camel-mime-utils.c (camel_header_msgid_generate): use new hostname interfaces. * providers/smtp/camel-smtp-transport.c (connect_to_server): fixed to use new addrinfo apis. * providers/pop3/camel-pop3-store.c (connect_to_server): fixed to use new addrinfo apis. * camel-tcp-stream-ssl.c (stream_connect): try all addresses supplied. * camel-tcp-stream.c (camel_tcp_stream_get_remote_address) (camel_tcp_stream_get_local_address): return a sockaddr now, and also the address length. Fixed all implementations and callers. (camel_tcp_stream_connect): use addrinfo rather than hostent for host AND port info. Fixed all implementations and callers. svn path=/trunk/; revision=27352
* Merged notzed-eplugin-2-branch to head.Michael Zucci2004-09-201-0/+1
| | | | svn path=/trunk/; revision=27300
* make ssl connection async and cancellable, and minor api update to asyncNot Zed2004-09-081-11/+22
| | | | | | | | | 2004-09-03 Not Zed <NotZed@Ximian.com> * camel-tcp-stream-ssl.c (stream_connect): make ssl connection async and cancellable, and minor api update to async connection. svn path=/trunk/; revision=27180
* Always just return 0, don't try to PR_Sync() - fsync on a socket causes anJeffrey Stedfast2004-06-051-1/+2
| | | | | | | | | | | | | | | | | | | | | | 2004-06-04 Jeffrey Stedfast <fejj@novell.com> * camel-tcp-stream-ssl.c (stream_flush): Always just return 0, don't try to PR_Sync() - fsync on a socket causes an error. * providers/imap4/camel-imap4-command.c (camel_imap4_command_step): Set exceptions when write/flush fail. * providers/imap4/camel-imap4-engine.c (camel_imap4_engine_take_stream): Set an exception in the case where we get an unexpected greeting from the server. * providers/imap4/camel-imap4-store.c (imap4_create_folder): store->dir_sep no longer exists, so query the engine for the directory separator for the parent_folder. (imap4_build_folder_info): CamelFolderInfo no longer has a path component. svn path=/trunk/; revision=26217
* set nodelay and keepalive on the socket.Not Zed2004-05-061-44/+33
| | | | | | | | | | | | | | | | | | | | 2004-05-06 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (connect_to_server): set nodelay and keepalive on the socket. * camel-file-utils.c (camel_read): put a timeout on the select. Logic shuffle to match the ssl stuff. (camel_write): Similar. * camel-tcp-stream-ssl.c (stream_connect): remove timeout, use CONNECT_TIMEOUT directly. (stream_read): put a timeout on the poll. IO_TIMEOUT. And a little logic shuffle. (stream_write): similar. (CONNECT_TIMEOUT): make this 4 minutes === tcp-raw timeout. svn path=/trunk/; revision=25812
* Various fixes to make it work.Not Zed2003-08-191-20/+28
| | | | | | | | | | | | | | | | | | | | | 2003-08-18 Not Zed <NotZed@Ximian.com> * camel-http-stream.c: Various fixes to make it work. * tests/smime/pgp-mime.c (main): added missing 'ret' variable. * providers/smtp/camel-smtp-transport.c (connect_to_server): * providers/imapp/camel-imapp-store.c (connect_to_server: * providers/imap/camel-imap-store.c (connect_to_server): * providers/pop3/camel-pop3-store.c (connect_to_server): * camel-http-stream.c (http_connect): change service->session for tcp_stream_ssl_new. * camel-tcp-stream-ssl.c: Changed service to session, and fix some refcounting of it. include camel-operation.h svn path=/trunk/; revision=22275
* continue reading the cert file until we've read it all or get a non-EINTRJeffrey Stedfast2003-03-221-7/+19
| | | | | | | | | | 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
* Same as IMAP and POP.Jeffrey Stedfast2003-03-011-2/+20
| | | | | | | | | | | | | | | | | | | | | | 2003-02-28 Jeffrey Stedfast <fejj@ximian.com> * providers/smtp/camel-smtp-transport.c (connect_to_server): Same as IMAP and POP. * providers/imap/camel-imap-store.c (connect_to_server): Same as the POP3 code. * providers/pop3/camel-pop3-store.c (connect_to_server): Pass in appropriate flags for camel_tcp_stream_ssl_new*() functions. * camel-tcp-stream-ssl.c (enable_ssl): Not all ssl/tls streams will want to allow each of SSLv2, SSLv3 and TLSv1 so use flags to decide which to enable/disable. (camel_tcp_stream_ssl_new): Now takes a flags argument to mask out which SSL/TLS versions the stream should be compatable with. (camel_tcp_stream_ssl_new_raw): Same. svn path=/trunk/; revision=20111
* Fixed a type-o in the ENABLE_IPv6 ifdef section.Jeffrey Stedfast2003-02-201-1/+1
| | | | | | | | | 2003-02-19 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_connect): Fixed a type-o in the ENABLE_IPv6 ifdef section. svn path=/trunk/; revision=19954
* Use the new camel_operation_cancel_prfd() function to get the cancellationJeffrey Stedfast2002-11-231-20/+145
| | | | | | | | | | | | | | | | | 2002-11-21 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_read): Use the new camel_operation_cancel_prfd() function to get the cancellation fd so we can poll on it for cancellation stuff. (stream_write): Same. 2002-11-22 Not Zed <NotZed@Ximian.com> * camel-operation.c (camel_operation_cancel_prfd): Implement, gets a nspr pr filedesc to poll/wait on (struct _CamelOperation): include a pr filedesc. svn path=/trunk/; revision=18894
* Use g_strerror when setting an exception string (we need it to be inJeffrey Stedfast2002-11-111-28/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-11-11 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-spool-summary.c (spool_summary_sync_full): Use g_strerror when setting an exception string (we need it to be in UTF-8). (spool_summary_check): Here too. * providers/local/camel-spool-store.c (construct): Use g_strerror when setting an exception string (we need it to be in UTF-8). (get_folder): Same. (scan_dir): Here too. * providers/local/camel-spool-folder.c (spool_lock): Use g_strerror when setting an exception string (we need it to be in UTF-8). * providers/local/camel-mh-summary.c (mh_summary_check): Use g_strerror when setting an exception string (we need it to be in UTF-8). * providers/local/camel-mh-store.c (delete_folder): Use g_strerror when setting an exception string (we need it to be in UTF-8). * providers/local/camel-mbox-summary.c (summary_update): Use g_strerror when setting an exception string (we need it to be in UTF-8). (mbox_summary_sync_full): Here too. (mbox_summary_sync_quick): Same. (mbox_summary_sync): Also here. (camel_mbox_summary_sync_mbox): Again here. * providers/local/camel-mbox-folder.c (mbox_lock): Use g_strerror when setting an exception string (we need it to be in UTF-8). (mbox_append_message): Same. (mbox_get_message): Here too. * providers/local/camel-maildir-summary.c (maildir_summary_load): Use g_strerror when setting an exception string (we need it to be in UTF-8). (maildir_summary_check): Same. * providers/local/camel-maildir-store.c (get_folder): Use g_strerror when setting an exception string (we need it to be in UTF-8). (delete_folder): Same. (delete_folder): Here too. * providers/local/camel-local-summary.c (local_summary_sync): Use g_strerror when setting an exception string (we need it to be in UTF-8). * providers/local/camel-local-store.c (get_folder): Use g_strerror when setting an exception string (we need it to be in UTF-8). (create_folder): Same. (xrename): Here too. (rename_folder): And here. (delete_folder): Also here. * camel-provider.c (camel_provider_init): For debugging printfs, we want to use normal strerror (we want locale charset, not UTF-8). * camel-movemail.c (camel_movemail): Use g_strerror when setting an exception string (we need it to be in UTF-8). (movemail_external): Same. (camel_movemail_copy_file): Here too. (camel_movemail_solaris): Also here. * camel-mime-utils.c (rfc2047_decode_word): For debugging printfs, we want to use normal strerror (we want locale charset, not UTF-8). (header_encode_param): Same. * camel-mime-part-utils.c (convert_buffer): For debugging printfs, we want to use normal strerror (we want locale charset, not UTF-8). * camel-lock-client.c (camel_lock_helper_init): Use g_strerror when setting an exception string (we need it to be in UTF-8). * camel-data-cache.c (camel_data_cache_remove): Use g_strerror when setting an exception string (we need it to be in UTF-8). * camel-tcp-stream-raw.c (flaky_tcp_write): For debugging printfs, we want to use normal strerror (we want locale charset, not UTF-8). (flaky_tcp_read): Same. * camel-gpg-context.c (gpg_ctx_op_step): For debugging printfs, we want to use normal strerror (we want locale charset, not UTF-8). * camel-service.c (camel_gethostbyname): Use g_strerror when setting an exception string (we need it to be in UTF-8). * camel-lock.c (camel_lock_dot): Use g_strerror when setting an exception string (we need it to be in UTF-8). (camel_lock_fcntl): Same. svn path=/trunk/; revision=18689
* #include "camel-stream-fs.h" for writing out the certs to diskJeffrey Stedfast2002-10-191-0/+1
| | | | svn path=/trunk/; revision=18395
* If ~/.camel_certs doesn't exist, create it.Jeffrey Stedfast2002-10-181-6/+15
| | | | | | | | | 2002-10-17 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (camel_certdb_nss_cert_set): If ~/.camel_certs doesn't exist, create it. svn path=/trunk/; revision=18391
* helper, build fingerprint. (camel_certdb_nss_cert_get): Helper for nssNot Zed2002-10-171-90/+344
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-10-15 Not Zed <NotZed@Ximian.com> * camel-tcp-stream-ssl.c (cert_fingerprint): helper, build fingerprint. (camel_certdb_nss_cert_get): Helper for nss certs. Lookup cert. As well as fingerprint, the whole raw cert is checked for validity. (camel_certdb_nss_cert_add): Add an nss cert to a certdb, also saves the cert by fingerprint in ~/.camel_certs/. (ssl_bad_cert): Changed to use above functions to simplify logic. (ssl_bad_cert): Also added non-compiled code which mimics what mozilla does, but it doesn't work right :-/ (camel_certdb_nss_cert_set): Save the raw cert associated with a cert. * camel-certdb.c (certdb_cert_free): Free the raw cert data if set. 2002-10-14 Not Zed <NotZed@Ximian.com> * camel-file-utils.c (camel_file_util_encode_string): Encode a length of 0 as 1, not 0, to match the decode code. svn path=/trunk/; revision=18385
* New function to decode the INTERNALDATE response from an IMAP server so weJeffrey Stedfast2002-09-281-9/+11
| | | | | | | | | | | | | | | | | | | | 2002-09-27 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (decode_internaldate): New function to decode the INTERNALDATE response from an IMAP server so we don't have to use my broken-date-parser routines. 2002-09-27 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (connect_to_server): NULL-check the streams before unreffing them in the case of a failure during ssl negotiations. * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_enable_ssl): Check SSL_ResetHandshake() for errors. Also force a handshake after we've reset the handshake state on the socket. svn path=/trunk/; revision=18252
* Update the comment.Jeffrey Stedfast2002-07-311-10/+41
| | | | | | | | | | | | | | | | | | | | | | | | | 2002-07-30 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream.c (camel_tcp_address_new): Update the comment. * camel-tcp-stream-raw.c (socket_connect): If building with IPv6 support and the address is an IPv6 address, connect using a sockaddr_in6 otherwise use the standard IPv4 sockaddr_in structure. (stream_get_local_address): Fix to work with IPv6 addresses. (stream_get_remote_address): Same. * camel-tcp-stream-openssl.c (socket_connect): Same as above. (stream_get_local_address): Fix to work with IPv6 addresses. (stream_get_remote_address): Same. * camel-tcp-stream-ssl.c (stream_connect): If building with IPv6 support and the address is an IPv6 address, initialise the PRNetAddr accordingly. (stream_get_local_address): Fix to work with IPv6 addresses. (stream_get_remote_address): Same. svn path=/trunk/; revision=17651
* New source file implementing a very basic certificate database. This isJeffrey Stedfast2002-07-311-3/+41
| | | | | | | | | | | | | | | | | | | 2002-07-30 Jeffrey Stedfast <fejj@ximian.com> * camel-certdb.c: New source file implementing a very basic certificate database. This is mostly just here because the Mozilla NSS certdb seems to not be working for everyone's Evolution install (works fine for me and Ettore but not many other people). * camel-tcp-stream-ssl.c (ssl_bad_cert): If we have this certificate in our own CamelCertDB, then get the trust value from that and only prompt the user if the trust is unknown. * camel-tcp-stream-openssl.c (ssl_verify): Same. * camel.c (camel_init): Create our default certdb. svn path=/trunk/; revision=17642
* PR_IO_TIMEOUT_ERROR should map to ETIMEDOUT and not EAGAIN.Jeffrey Stedfast2002-06-201-2/+2
| | | | | | | | | | | 2002-06-20 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (set_errno): PR_IO_TIMEOUT_ERROR should map to ETIMEDOUT and not EAGAIN. (stream_connect): Reset the PR_Poll() timeout back to 2 minutes as this wasn't the problem afterall. svn path=/trunk/; revision=17246
* Set the poll timeout to be PR_INTERVAL_MIN, this one shouldn't need to beJeffrey Stedfast2002-06-201-1/+1
| | | | | | | | | | 2002-06-19 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_connect): Set the poll timeout to be PR_INTERVAL_MIN, this one shouldn't need to be 2 minutes (plus it blocks my connection at home for far too long). svn path=/trunk/; revision=17234
* Fixed compiler warnings.Jeffrey Stedfast2002-06-151-0/+4
| | | | | | | | | | | | | | | 2002-06-14 Jeffrey Stedfast <fejj@ximian.com> * camel-arg.c: * camel-disco-diary.c: * camel-index-control.c: * camel-mime-part.c: * camel-pgp-mime.c: * camel-store.c: * camel-tcp-stream-ssl.c: * camel-text-index.c: Fixed compiler warnings. svn path=/trunk/; revision=17187
* Up the timeout on the connect code to 2 minutes.Jeffrey Stedfast2002-06-071-2/+4
| | | | | | | | | 2002-06-07 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_connect): Up the timeout on the connect code to 2 minutes. svn path=/trunk/; revision=17140
* Make the folder_lock recursive. See bug #22363 for details. Basically,Jeffrey Stedfast2002-04-101-0/+2
| | | | | | | | | | | | 2002-04-09 Jeffrey Stedfast <fejj@ximian.com> * camel-store.c (camel_store_init): Make the folder_lock recursive. See bug #22363 for details. Basically, get_folder_info() is requesting a diary folder which in turn connects which requests then calls get_folder() but deadlocks because get_folder_info already holds the lock. svn path=/trunk/; revision=16419
* Handle a ton more nspr i/o errno's. (stream_connect): Act as if we areJeffrey Stedfast2002-04-031-6/+57
| | | | | | | | | | | | | | | | | | | | | | 2002-04-02 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (set_errno): Handle a ton more nspr i/o errno's. (stream_connect): Act as if we are doing a non-blocking connect. This is to try and work around bug #15120 where users get an EINPROGRESS error. Maybe importing a PRFileDesc into SSL mode automagically makes it non-blocking? I dunno. 2002-04-01 Jeffrey Stedfast <fejj@ximian.com> * camel-folder-summary.c (message_info_new): Updated the construction of the references to match JWZ's updated algorithm initialization (ie, append any In-Reply-To reference onto any References header and never take more than a single message-id from the In-Reply-To header since anything after the first will probably just be email addresses). Fixes bug #1336. svn path=/trunk/; revision=16327
* Rename the OpenSSL implementation of things to match the NSSDan Winship2002-03-111-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Remove this: it couldn't be generically used, because different subclassesDan Winship2002-03-111-5/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Removed. Glory glory hallelujah! (ssl_bad_cert): No longer callsJeffrey Stedfast2002-03-061-55/+0
| | | | | | | | | | | 2002-03-05 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (save_ssl_cert): Removed. Glory glory hallelujah! (ssl_bad_cert): No longer calls ssl_save_cert or ssl_cert_is_saved. svn path=/trunk/; revision=15938
* Start the ssl stream off in non-ssl mode (useful for STARTTLS).Jeffrey Stedfast2002-03-061-16/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Call set_errno appropriately.Jeffrey Stedfast2002-02-051-3/+12
| | | | | | | | | 2002-02-04 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_connect): Call set_errno appropriately. svn path=/trunk/; revision=15566
* so my guess is that mutt probably doesn't compile since we don't compile ↵Jeffrey Stedfast2002-01-031-6/+10
| | | | | | | | using the functions that mutt uses. this is why I love libnss. svn path=/trunk/; revision=15229
* Do more like what mutt does so hopefully this'll fix bug #16363 andJeffrey Stedfast2002-01-031-25/+41
| | | | | | | | | 2002-01-02 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (ssl_bad_cert): Do more like what mutt does so hopefully this'll fix bug #16363 and #16300. svn path=/trunk/; revision=15226
* Added a check to see if the operation has been cancelled. (stream_write):Jeffrey Stedfast2001-11-201-0/+10
| | | | | | | | | | 2001-11-19 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_read): Added a check to see if the operation has been cancelled. (stream_write): Same. svn path=/trunk/; revision=14751
* Oops, pass a mode argument to the open() call.Jeffrey Stedfast2001-11-091-1/+1
| | | | | | | | | | | | 2001-11-07 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (save_ssl_cert): Oops, pass a mode argument to the open() call. * camel-tcp-stream-openssl.c (save_ssl_cert): Oops, pass a mode argument to the open() call. svn path=/trunk/; revision=14636
* Removed. (stream_write): Keep looping (non-blocking case) if errno isJeffrey Stedfast2001-10-301-14/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-29 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-openssl.c (my_SSL_write): Removed. (stream_write): Keep looping (non-blocking case) if errno is EAGAIN, EINTR or EWOULDBLOCK. For NONBLOCKing I/O, sync up with CamelTcpStreamRaw. As with CamelTcpStreamRaw/SSL - make sure to write out everything before returning. (my_SSL_read): Removed. (stream_read): Just call ssl_error_to_errno() and check the errno values that we care about so we can keep the general look of all this stream code the same. Also when checking the return value of SSL_read, check for <0 instead of ==-1 since the man page for SSL_read doesn't say it will return -1 on fail, it just says <0. (stream_flush): Don't fsync() since syncing on a socket is a Bad Thing (tm). * camel-tcp-stream-ssl.c (stream_write): Make sure we write out everything just like in camel-tcp-stream-raw.c. * camel-stream-buffer.c (camel_stream_buffer_gets): If camel_stream_read() returns -1, don't necessarily return -1 to our caller since it's possible that we did actually "read" some data (ie, we copied some pre-buffered data into the out buffer). * camel-stream-buffer.h: Removed CAMEL_STREAM_BUFFER_NEWLINE since it never got used anywhere and it isn't supported anyway. svn path=/trunk/; revision=14409
* More fixing of the license texts.Ettore Perazzoli2001-10-281-11/+11
| | | | svn path=/trunk/; revision=14216
* Same.Jeffrey Stedfast2001-10-121-5/+8
| | | | | | | | | | | 2001-10-11 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (ssl_cert_is_saved): Same. * camel-tcp-stream-openssl.c (ssl_cert_is_saved): Instead of opening the file, stat it and make sure that it belongs to us. svn path=/trunk/; revision=13600
* Same hack as below.Jeffrey Stedfast2001-10-111-0/+53
| | | | | | | | | | | 2001-10-10 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-openssl.c (ssl_verify): Same hack as below. * camel-tcp-stream-ssl.c (ssl_bad_cert): Hack around the fact that adding a cert to nss's certdb seems to not work. svn path=/trunk/; revision=13575
* remove unused variableJeffrey Stedfast2001-10-031-1/+0
| | | | svn path=/trunk/; revision=13364
* Import the certificate if the user accepts it.Jeffrey Stedfast2001-10-031-18/+8
| | | | | | | | | 2001-10-02 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (ssl_bad_cert): Import the certificate if the user accepts it. svn path=/trunk/; revision=13363
* Oops, don't fail if `data' isn't a CamelService...cuz it's not supposed toJeffrey Stedfast2001-09-201-1/+1
| | | | | | | | | | 2001-09-19 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (ssl_bad_cert): Oops, don't fail if `data' isn't a CamelService...cuz it's not supposed to be! It's a CamelTcpStreamSSL object...doh! svn path=/trunk/; revision=12992
* #if 0 out the code that was hopefully going to fix bug #5325 because theJeffrey Stedfast2001-09-081-1/+5
| | | | | | | | | | 2001-09-07 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (ssl_bad_cert): #if 0 out the code that was hopefully going to fix bug #5325 because the functions I used seem to have been deprecated. *sigh*. svn path=/trunk/; revision=12699
* #include pk11func.h. (ssl_bad_cert): Use CERT_GetDefaultCertDB.Jeffrey Stedfast2001-08-311-1/+2
| | | | | | | | | 2001-08-30 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c: #include pk11func.h. (ssl_bad_cert): Use CERT_GetDefaultCertDB. svn path=/trunk/; revision=12530
* If the user accepts the certificate, add it to the database as a trustedJeffrey Stedfast2001-08-291-3/+27
| | | | | | | | | 2001-08-28 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (ssl_bad_cert): If the user accepts the certificate, add it to the database as a trusted CA. svn path=/trunk/; revision=12502
* er, OptionSetJeffrey Stedfast2001-05-131-1/+1
| | | | svn path=/trunk/; revision=9785
* s/SSL_Enable/SSL_SetOptionJeffrey Stedfast2001-05-131-1/+1
| | | | svn path=/trunk/; revision=9784
* call SSL_Enable after the SSL_ImportFD and before PR_Connect. Otherwise,Chris Toshok2001-05-111-1/+2
| | | | | | | | | | 2001-05-10 Chris Toshok <toshok@ximian.com> * camel-tcp-stream-ssl.c (stream_connect): call SSL_Enable after the SSL_ImportFD and before PR_Connect. Otherwise, NSS aborts during the connect. svn path=/trunk/; revision=9751
* Remove the last argument from camel_session_alert_user.Anders Carlsson2001-05-021-1/+1
| | | | | | | | | 2001-05-01 Anders Carlsson <andersca@codefactory.se> * camel-tcp-stream-ssl.c (ssl_bad_cert): Remove the last argument from camel_session_alert_user. svn path=/trunk/; revision=9640
* Redo this a lot so that instead of having a class full of callbacks, weDan Winship2001-04-281-5/+3
| | | | | | | | | | | | | | | | | | | | | | * camel-session.c: Redo this a lot so that instead of having a class full of callbacks, we have a subclassable class. Also, replace the increasingly horrifying camel_session_query_authenticator with three new routines, camel_session_get_password, camel_session_forget_password, and camel_session_alert_user. * camel-pgp-context.c: * camel-pkcs7-context.c: * camel-smime-context.c: * providers/imap/camel-imap-store.c: * providers/pop3/camel-pop3-store.c: * providers/smtp/camel-smtp-transport.c: Use camel_session_get_password / camel_session_forget_password. * camel-tcp-stream-ssl.c (ssl_bad_cert): Use camel_session_alert_user. svn path=/trunk/; revision=9617
* Big header cleanups and nntp compile fixKjartan Maraas2001-03-301-3/+5
| | | | svn path=/trunk/; revision=9024
* Return -1 on fail. (camel_filter_driver_filter_folder): Same.Jeffrey Stedfast2001-03-221-1/+1
| | | | | | | | | | | | | | | | | | | | 2001-03-21 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Return -1 on fail. (camel_filter_driver_filter_folder): Same. (camel_filter_driver_filter_mbox): Same. (camel_filter_driver_filter_folder): Return -1 if an exception was set as well. 2001-03-19 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize): Free the expected host. (camel_tcp_stream_openssl_new): Now takes a Service and an expected_host. Set them. svn path=/trunk/; revision=8871
* Don't include system include dir.Jeffrey Stedfast2001-03-181-2/+1
| | | | | | | | | | | | | 2001-03-17 Jeffrey Stedfast <fejj@ximian.com> * Makefile.am: Don't include system include dir. * camel.c: Use quotes around the nss.h include so it doesn't try to use the systen nss.h file. * camel-tcp-stream-ssl.c: Same here. svn path=/trunk/; revision=8786
* Print info about the issuer of the certificate.Jeffrey Stedfast2001-03-171-25/+54
| | | | | | | | | | | | | | | | | | | | 2001-03-16 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (ssl_bad_cert): Print info about the issuer of the certificate. * providers/smtp/camel-smtp-transport.c (smtp_connect): Use camel_tcp_stream_get_socket(). * camel-tcp-stream-openssl.c (stream_get_socket): Implemented. * camel-tcp-stream-ssl.c (stream_get_socket): Implemented. * camel-tcp-stream-raw.c (stream_get_socket): Implemented. * camel-tcp-stream.c (camel_tcp_stream_get_socket): New function. svn path=/trunk/; revision=8764
* Don't use the hardcoded cert db directory, use the one passed in.Jeffrey Stedfast2001-03-161-13/+120
| | | | | | | | | | | | | | | | | 2001-03-15 Jeffrey Stedfast <fejj@ximian.com> * camel.c (camel_init): Don't use the hardcoded cert db directory, use the one passed in. * camel-tcp-stream-ssl.c (ssl_get_client_auth): Wrote the default implementation. Not that we'll use this though, since this is the default implementation provided by NSS anyway. This more or less serves as a reference in case we want to change anything. (ssl_auth_cert): Same. (ssl_bad_cert): Changed the prompt string and free it when we're done. svn path=/trunk/; revision=8753
* Ya know what? Lets not ref the service because otherwise we'll startJeffrey Stedfast2001-03-151-2/+0
| | | | | | | | | | | | | 2001-03-14 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_new): Ya know what? Lets not ref the service because otherwise we'll start having the same problems we had back with vtrash. Besides, since the store owns the stream, it's not like the store is going anywhere without the stream anyway. (camel_tcp_stream_ssl_finalize): No need to unref the service. svn path=/trunk/; revision=8722
* Pass the service into the SSL stream, not the session.Jeffrey Stedfast2001-03-151-17/+21
| | | | | | | | | | | | | | | 2001-03-14 Jeffrey Stedfast <fejj@ximian.com> * camel-remote-store.c (remote_connect): Pass the service into the SSL stream, not the session. * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_init): Set the service to NULL. (camel_tcp_stream_ssl_finalize): Unref the service. (camel_tcp_stream_ssl_new): Takes a CamelService arg now rather than a CamelSession arg. svn path=/trunk/; revision=8720
* Eek! So the service's URL isn't set until after this is initialized. ThisJeffrey Stedfast2001-03-151-1/+1
| | | | | | | | | | | 2001-03-14 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-store.c (camel_imap_store_init): Eek! So the service's URL isn't set until after this is initialized. This means we can't check for SSL here. (imap_connect): Set the SSL options here instead. svn path=/trunk/; revision=8715
* Numerous fixes to get it to build correctly with NSS enabled.Jeffrey Stedfast2001-03-151-8/+11
| | | | | | | | | | | | | | | | | | | | | | | | 2001-03-14 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c: Numerous fixes to get it to build correctly with NSS enabled. * camel-remote-store.c (remote_connect): Pass in the session and expected host args, oops. * camel-provider.h (CAMEL_URL_ALLOW_SSL): Defined. * providers/imap/camel-imap-store.c (camel_imap_store_init): Check to see if we are supposed to use SSL and set the options accordingly. (imap_connect): Return FALSE here instead of NULL. * providers/imap/camel-imap-provider.c: Add CAMEL_URL_ALLOW_SSL. * providers/imap/libcamelimap.urls: Add "imaps" which is the protocol for Secure IMAP. svn path=/trunk/; revision=8711
* Made cancellable. (stream_write): Same. (stream_connect): Removed checksJeffrey Stedfast2001-03-141-9/+27
| | | | | | | | | | | | | | | | | | 2001-03-13 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-raw.c (stream_read): Made cancellable. (stream_write): Same. (stream_connect): Removed checks for DIVINE_INTERVENTION as the code worked fine. * camel-tcp-stream-ssl.c (stream_write): get rid of 'w' as it wasn't really needed. (set_errno): New function to set errno based on the NSPR error code. (stream_read): If an error occured, call set_errno(). (stream_write): Same. svn path=/trunk/; revision=8701
* Oops. Make this a subclass of CamelTcpStream, not CamelStream.Jeffrey Stedfast2001-03-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | 2001-03-13 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_get_type): Oops. Make this a subclass of CamelTcpStream, not CamelStream. * camel-types.h: Add the defs for CamelTcpStream and CamelTcpStreamRaw * Makefile.am: Add camel-tcp-stream and camel-tcp-stream-raw to the build. * camel-remote-store.c (remote_connect): Update to use CamelTcpStreams. * camel-tcp-stream-raw.c (stream_connect): Made cancellable by copying the currently used code in camel-remote-store.c. (stream_setsockopt): Oops, flags = fcntl (..., GET_FL); (camel_tcp_stream_raw_get_type): Oops. Make this a subclass of CamelTcpStream, not CamelStream. svn path=/trunk/; revision=8697
* Comment out everything unless HAVE_NSS is defined.Jeffrey Stedfast2001-03-111-12/+22
| | | | | | | | | | | | | 2001-03-09 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.h: Comment out everything unless HAVE_NSS is defined. * camel-tcp-stream-ssl.c (stream_read): Don't use errno, use nspr's error code stuff. (stream_write): Same. svn path=/trunk/; revision=8626
* Oops, include the camel-tcp-stream-ssl header instead of the raw one.Jeffrey Stedfast2001-02-081-1/+1
| | | | | | | | | 2001-01-31 Jeffrey Stedfast <fejj@helixcode.com> * camel-tcp-stream-ssl.c: Oops, include the camel-tcp-stream-ssl header instead of the raw one. svn path=/trunk/; revision=8103
* Ugh, this design is ugly like my butt.Jeffrey Stedfast2001-01-161-1/+55
| | | | | | | | | | | | | | | | | | | | | | | | 2001-01-16 Jeffrey Stedfast <fejj@ximian.com> Ugh, this design is ugly like my butt. * camel-session.c (camel_session_query_cert_authenticator): New function which will be useful when we integrate SSL. * camel-tcp-stream-ssl.c (ssl_auth_cert): Callback to authenticate a certificate. (ssl_bad_cert): Callback that gets the reason the certificate is bad and then calls camel's cert-authenticator callback to notify the user and to allow the user to override the check. (stream_connect): Set the URL we expect to connect with and setup the auth_cert and bad_cert callbacks. (camel_tcp_stream_ssl_new): Now takes a CamelSession and a expected_host argument that it will use for certificate authentication. (camel_tcp_stream_ssl_finalize): Unref the session and free the expected_host. svn path=/trunk/; revision=7531
* If the close() is successful, set the fd to -1.Jeffrey Stedfast2001-01-161-9/+6
| | | | | | | | | | | | | | | | | | | | | 2001-01-15 Jeffrey Stedfast <fejj@ximian.com> * camel-stream-fs.c (stream_close): If the close() is successful, set the fd to -1. * camel-tcp-stream-raw.c: Removed the disconnect() method. (stream_close): If the close() is successful, set the sockfd to -1. * camel-tcp-stream-ssl.c: Removed the disconnect() method. (stream_close): If the close() is successful, set the sockfd to NULL. * camel-tcp-stream.c (camel_tcp_stream_disconnect): Removed, easier to just use the close() method as it did the same thing anyway. svn path=/trunk/; revision=7522
* Uses an SSL socket now although there's still a few things missing (likeJeffrey Stedfast2001-01-151-13/+7
| | | | | | | | | | | | | 2001-01-15 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_connect): Uses an SSL socket now although there's still a few things missing (like certificate handling and such). * camel.c (camel_ssl_init): A replacement function for camel_init() that also initializes SSL. svn path=/trunk/; revision=7494
* Implemented. (stream_setsockopt): Implemented.Jeffrey Stedfast2001-01-151-1/+35
| | | | | | | | | | | | | | | | 2001-01-14 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-ssl.c (stream_getsockopt): Implemented. (stream_setsockopt): Implemented. * camel-tcp-stream-raw.c (stream_getsockopt): Implemented. (stream_setsockopt): Implemented. * camel-tcp-stream.c (camel_tcp_stream_getsockopt): New method. (camel_tcp_stream_setsockopt): Another new method. I think you get the idea of what these are for so I won't explain them. svn path=/trunk/; revision=7491
* New CamelTcpStream class that implements nspr sockets and eventually willJeffrey Stedfast2001-01-141-0/+205
2001-01-14 Jeffrey Stedfast <fejj@helixcode.com> * camel-tcp-stream-ssl.[c,h]: New CamelTcpStream class that implements nspr sockets and eventually will use nss for SSL/TLS. Currently doesn't do any SSL/TLS but it should still work. It's functionally equivalent to CamelTcpStreamRaw at the moment only it uses nspr i/o. * camel-tcp-stream-raw.[c,h]: New CamelTcpStream class that implements native sockets. Should be usable but may have some bugs yet. svn path=/trunk/; revision=7489