return -1;
}
/* STARTTLS successful, begin TLS negotiation. */
- if (login_proxy_starttls(client->login_proxy) < 0) {
- client_proxy_failed(client, TRUE);
+ if (login_proxy_starttls(client->login_proxy) < 0)
return -1;
- }
/* i/ostreams changed. */
output = login_proxy_get_ostream(client->login_proxy);
str = t_str_new(128);
if ((proxy->ssl_flags & PROXY_SSL_FLAG_YES) != 0 &&
(proxy->ssl_flags & PROXY_SSL_FLAG_STARTTLS) == 0) {
if (login_proxy_starttls(proxy) < 0) {
- login_proxy_free(&proxy);
- return;
+ /* proxy is already destroyed */
}
}
}
if (ssl_iostream_client_context_cache_get(&ssl_set, &ssl_ctx, &error) < 0) {
e_error(proxy->event, "Failed to create SSL client context: %s",
error);
+ client_proxy_failed(proxy->client, TRUE);
return -1;
}
&proxy->server_ssl_iostream,
&error) < 0) {
e_error(proxy->event, "Failed to create SSL client: %s", error);
+ client_proxy_failed(proxy->client, TRUE);
ssl_iostream_context_unref(&ssl_ctx);
return -1;
}
error = ssl_iostream_get_last_error(proxy->server_ssl_iostream);
e_error(proxy->event, "Failed to start SSL handshake: %s",
ssl_iostream_get_last_error(proxy->server_ssl_iostream));
+ client_proxy_failed(proxy->client, TRUE);
return -1;
}
client_proxy_failed(client, TRUE);
return -1;
}
- if (login_proxy_starttls(client->login_proxy) < 0) {
- client_proxy_failed(client, TRUE);
+ if (login_proxy_starttls(client->login_proxy) < 0)
return -1;
- }
/* i/ostreams changed. */
output = login_proxy_get_ostream(client->login_proxy);
if (proxy_send_login(pop3_client, output) < 0)
}
if (!last_line)
return 0;
- if (login_proxy_starttls(client->login_proxy) < 0) {
- client_proxy_failed(client, TRUE);
+ if (login_proxy_starttls(client->login_proxy) < 0)
return -1;
- }
/* i/ostreams changed. */
output = login_proxy_get_ostream(client->login_proxy);