return 0;
case SSL_ERROR_SYSCALL:
+ ERR_clear_error();
if (SSL_get_shutdown(tls->con) & SSL_RECEIVED_SHUTDOWN)
return 0; /* EOS */
if (errno == 0)
tls->write_events = 0;
ret = SSL_write(tls->con, buf, size);
- if (ret < 0)
+ if (ret <= 0)
return tls_error(tls, ret, "tls_write: SSL_write", buf, size);
return ret;
if ((su_wait_create(wait, self->tp_socket, self->tp_events) == -1) ||
((self->tp_index = su_root_register(mr->mr_root, wait, tport_wakeup,
self, 0)) == -1)) {
+
+ tls_log_errors(3, "TLS post handshake error", status);
tport_close(self);
tport_set_secondary_timer(self);
return 0;
break;
default:
- {
- char errbuf[64];
- ERR_error_string_n(status, errbuf, 64);
- SU_DEBUG_3(("%s(%p): TLS setup failed (%s)\n",
- __func__, (void *)self, errbuf));
- }
+ tls_log_errors(3, "TLS setup failed", status);
break;
}
}