else {
ssl_hostname = conn->hostname;
}
- if (conn->ssl_hostname != NULL
- ? (ssl_hostname == NULL || strcasecmp(conn->ssl_hostname,
- ssl_hostname) != 0)
- : (ssl_hostname != NULL && conn->sock)) {
+ /*
+ * Close if a SNI is in use but this request requires no or
+ * a different one, or no SNI is in use but one is required.
+ */
+ if ((conn->ssl_hostname && (!ssl_hostname ||
+ strcasecmp(conn->ssl_hostname,
+ ssl_hostname) != 0)) ||
+ (!conn->ssl_hostname && ssl_hostname && conn->sock)) {
socket_cleanup(conn);
}
if (conn->ssl_hostname == NULL) {