From 621f18d696c5139edaee232dfc844972b480a758 Mon Sep 17 00:00:00 2001 From: Jan Lukavsky Date: Wed, 31 May 2017 11:02:32 +0200 Subject: [PATCH] #419 Broker sometimes kills connection to client Signed-off-by: Jan Lukavsky --- lib/net_mosq.c | 3 +++ src/net.c | 1 + 2 files changed, 4 insertions(+) diff --git a/lib/net_mosq.c b/lib/net_mosq.c index 88160abe..063c4a22 100644 --- a/lib/net_mosq.c +++ b/lib/net_mosq.c @@ -464,6 +464,7 @@ int _mosquitto_try_connect(struct mosquitto *mosq, const char *host, uint16_t po int mosquitto__socket_connect_tls(struct mosquitto *mosq) { int ret, err; + ERR_clear_error(); ret = SSL_connect(mosq->ssl); if(ret != 1) { err = SSL_get_error(mosq->ssl, ret); @@ -762,6 +763,7 @@ ssize_t _mosquitto_net_read(struct mosquitto *mosq, void *buf, size_t count) errno = 0; #ifdef WITH_TLS if(mosq->ssl){ + ERR_clear_error(); ret = SSL_read(mosq->ssl, buf, count); if(ret <= 0){ err = SSL_get_error(mosq->ssl, ret); @@ -812,6 +814,7 @@ ssize_t _mosquitto_net_write(struct mosquitto *mosq, void *buf, size_t count) #ifdef WITH_TLS if(mosq->ssl){ mosq->want_write = false; + ERR_clear_error(); ret = SSL_write(mosq->ssl, buf, count); if(ret < 0){ err = SSL_get_error(mosq->ssl, ret); diff --git a/src/net.c b/src/net.c index ac8c055b..b8a03dc0 100644 --- a/src/net.c +++ b/src/net.c @@ -165,6 +165,7 @@ int mqtt3_socket_accept(struct mosquitto_db *db, mosq_sock_t listensock) new_context->want_write = true; bio = BIO_new_socket(new_sock, BIO_NOCLOSE); SSL_set_bio(new_context->ssl, bio, bio); + ERR_clear_error(); rc = SSL_accept(new_context->ssl); if(rc != 1){ rc = SSL_get_error(new_context->ssl, rc);