imapc_client_init(const struct imapc_client_settings *set)
{
struct imapc_client *client;
- struct ssl_iostream_settings ssl_set;
const char *error;
pool_t pool;
if (set->ssl_mode != IMAPC_CLIENT_SSL_MODE_NONE) {
client->set.ssl_mode = set->ssl_mode;
- client->set.ssl_ca_dir = p_strdup(pool, set->ssl_ca_dir);
- client->set.ssl_ca_file = p_strdup(pool, set->ssl_ca_file);
- client->set.ssl_verify = set->ssl_verify;
-
- i_zero(&ssl_set);
- ssl_set.ca_dir = set->ssl_ca_dir;
- ssl_set.ca_file = set->ssl_ca_file;
- ssl_set.allow_invalid_cert = !set->ssl_verify;
- ssl_set.crypto_device = set->ssl_crypto_device;
-
- if (ssl_iostream_client_context_cache_get(&ssl_set,
+ ssl_iostream_settings_init_from(pool, &client->set.ssl_set, &set->ssl_set);
+ client->set.ssl_set.verbose_invalid_cert = !client->set.ssl_set.allow_invalid_cert;
+ if (ssl_iostream_client_context_cache_get(&client->set.ssl_set,
&client->ssl_ctx,
&error) < 0) {
i_error("imapc(%s:%u): Couldn't initialize SSL context: %s",
#define IMAPC_CLIENT_H
#include "net.h"
+#include "iostream-ssl.h"
/* IMAP RFC defines this to be at least 30 minutes. */
#define IMAPC_DEFAULT_MAX_IDLE_TIME (60*29)
const char *dns_client_socket_path;
const char *temp_path_prefix;
+ struct ssl_iostream_settings ssl_set;
enum imapc_client_ssl_mode ssl_mode;
const char *ssl_ca_dir, *ssl_ca_file;
conn->name);
}
return 0;
- } else if (!conn->client->set.ssl_verify) {
+ } else if (conn->client->set.ssl_set.allow_invalid_cert) {
if (conn->client->set.debug) {
i_debug("imapc(%s): SSL handshake successful, "
"ignoring invalid certificate: %s",
static int imapc_connection_ssl_init(struct imapc_connection *conn)
{
- struct ssl_iostream_settings ssl_set;
const char *error;
if (conn->client->ssl_ctx == NULL) {
return -1;
}
- i_zero(&ssl_set);
- if (conn->client->set.ssl_verify) {
- ssl_set.verbose_invalid_cert = TRUE;
- } else {
- ssl_set.allow_invalid_cert = TRUE;
- }
-
if (conn->client->set.debug)
i_debug("imapc(%s): Starting SSL handshake", conn->name);
io_remove(&conn->io);
if (io_stream_create_ssl_client(conn->client->ssl_ctx,
conn->client->set.host,
- &ssl_set, &conn->input, &conn->output,
+ &conn->client->set.ssl_set,
+ &conn->input, &conn->output,
&conn->ssl_iostream, &error) < 0) {
i_error("imapc(%s): Couldn't initialize SSL client: %s",
conn->name, error);
-I$(top_srcdir)/src/lib-index \
-I$(top_srcdir)/src/lib-storage \
-I$(top_srcdir)/src/lib-storage/list \
- -I$(top_srcdir)/src/lib-storage/index
+ -I$(top_srcdir)/src/lib-storage/index \
+ -I$(top_srcdir)/src/lib-ssl-iostream
libstorage_imapc_la_SOURCES = \
imapc-list.c \
-I$(top_srcdir)/src/lib-imap \
-I$(top_srcdir)/src/lib-imap-client \
-I$(top_srcdir)/src/lib-settings \
+ -I$(top_srcdir)/src/lib-ssl-iostream \
-I$(top_srcdir)/src/lib-storage \
-I$(top_srcdir)/src/lib-storage/index \
-I$(top_srcdir)/src/lib-storage/index/imapc \