diff options
author | TingPing <tingping@tingping.se> | 2013-09-07 19:00:40 -0400 |
---|---|---|
committer | TingPing <tingping@tingping.se> | 2013-09-07 19:00:40 -0400 |
commit | bb1062ae2a623d74362b92c2d025a05c03fe7694 (patch) | |
tree | b40b4676e40403e398f76c4c6584c91a65545857 /src/common/server.c | |
parent | 5feeb717a09d1fccc74e015bd71bc38884bfa6f4 (diff) | |
parent | bdb18828e36340c1800a0eec9f4b5edc6ffae2b2 (diff) |
Merge branch 'saslmech'
Diffstat (limited to 'src/common/server.c')
-rw-r--r-- | src/common/server.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/common/server.c b/src/common/server.c index e59a7ee3..eea7ce08 100644 --- a/src/common/server.c +++ b/src/common/server.c @@ -1049,7 +1049,8 @@ server_cleanup (server * serv) #ifdef USE_OPENSSL if (serv->ssl) { - _SSL_close (serv->ssl); + SSL_shutdown (serv->ssl); + SSL_free (serv->ssl); serv->ssl = NULL; } #endif @@ -1705,18 +1706,25 @@ server_connect (server *serv, char *hostname, int port, int no_login) if (serv->use_ssl) { char *cert_file; + serv->have_cert = FALSE; /* first try network specific cert/key */ cert_file = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "certs" G_DIR_SEPARATOR_S "%s.pem", get_xdir (), server_get_network (serv, TRUE)); if (SSL_CTX_use_certificate_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1) - SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM); + { + if (SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1) + serv->have_cert = TRUE; + } else { /* if that doesn't exist, try <config>/certs/client.pem */ cert_file = g_build_filename (get_xdir (), "certs", "client.pem", NULL); if (SSL_CTX_use_certificate_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1) - SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM); + { + if (SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1) + serv->have_cert = TRUE; + } } g_free (cert_file); } |