int mailimap_ssl_connect_with_callback(mailimap * f, const char * server, uint16_t port, void (* callback)(struct mailstream_ssl_context * ssl_context, void * data), void * data) { int s; mailstream * stream; if (port == 0) { port = mail_get_service_port(SERVICE_NAME_IMAPS, SERVICE_TYPE_TCP); if (port == 0) port = DEFAULT_IMAPS_PORT; } /* Connection */ s = mail_tcp_connect(server, port); if (s == -1) return MAILIMAP_ERROR_CONNECTION_REFUSED; stream = mailstream_ssl_open_with_callback(s, callback, data); if (stream == NULL) { #ifdef WIN32 closesocket(s); #else close(s); #endif return MAILIMAP_ERROR_SSL; } return mailimap_connect(f, stream); }
static int mailimap_cfsocket_connect_voip(mailimap * f, const char * server, uint16_t port, int voip_enabled) { mailstream * stream; stream = mailstream_cfstream_open_voip(server, port, voip_enabled); if (stream == NULL) { return MAILIMAP_ERROR_CONNECTION_REFUSED; } return mailimap_connect(f, stream); }
static int mailimap_cfssl_connect_voip_ssl_level(mailimap * f, const char * server, uint16_t port, int voip_enabled, int ssl_level) { mailstream * stream; int r; stream = mailstream_cfstream_open_voip_timeout(server, port, voip_enabled, f->imap_timeout); if (stream == NULL) { return MAILIMAP_ERROR_CONNECTION_REFUSED; } mailstream_cfstream_set_ssl_level(stream, ssl_level); mailstream_cfstream_set_ssl_verification_mask(stream, MAILSTREAM_CFSTREAM_SSL_DISABLE_VALIDATES_CERTIFICATE_CHAIN); r = mailstream_cfstream_set_ssl_enabled(stream, 1); if (r < 0) { mailstream_close(stream); return MAILIMAP_ERROR_SSL; } return mailimap_connect(f, stream); }
LIBETPAN_EXPORT int mailimap_socket_connect_voip(mailimap * f, const char * server, uint16_t port, int voip_enabled) { int s; mailstream * stream; #if HAVE_CFNETWORK if (mailstream_cfstream_enabled) { return mailimap_cfsocket_connect_voip(f, server, port, voip_enabled); } #else UNUSED(voip_enabled); #endif if (port == 0) { port = mail_get_service_port(SERVICE_NAME_IMAP, SERVICE_TYPE_TCP); if (port == 0) port = DEFAULT_IMAP_PORT; } /* Connection */ s = mail_tcp_connect(server, port); if (s == -1) return MAILIMAP_ERROR_CONNECTION_REFUSED; stream = mailstream_socket_open(s); if (stream == NULL) { #ifdef WIN32 closesocket(s); #else close(s); #endif return MAILIMAP_ERROR_MEMORY; } return mailimap_connect(f, stream); }
int mailimap_ssl_connect_voip_with_callback(mailimap * f, const char * server, uint16_t port, int voip_enabled, void (* callback)(struct mailstream_ssl_context * ssl_context, void * data), void * data) { int s; mailstream * stream; #if HAVE_CFNETWORK if (mailstream_cfstream_enabled) { if (callback == NULL) { return mailimap_cfssl_connect_voip(f, server, port, voip_enabled); } } #endif if (port == 0) { port = mail_get_service_port(SERVICE_NAME_IMAPS, SERVICE_TYPE_TCP); if (port == 0) port = DEFAULT_IMAPS_PORT; } /* Connection */ s = mail_tcp_connect_timeout(server, port, f->imap_timeout); if (s == -1) return MAILIMAP_ERROR_CONNECTION_REFUSED; stream = mailstream_ssl_open_with_callback_timeout(s, f->imap_timeout, callback, data); if (stream == NULL) { #ifdef WIN32 closesocket(s); #else close(s); #endif return MAILIMAP_ERROR_SSL; } return mailimap_connect(f, stream); }