mirror of
https://github.com/eclipse-mosquitto/mosquitto.git
synced 2026-09-24 17:44:08 +08:00
Various memory fixes.
This commit is contained in:
@@ -51,6 +51,8 @@ Contributors:
|
||||
#endif
|
||||
|
||||
#ifdef WITH_TLS
|
||||
#include <openssl/conf.h>
|
||||
#include <openssl/engine.h>
|
||||
#include <openssl/err.h>
|
||||
#include <tls_mosq.h>
|
||||
#endif
|
||||
@@ -107,6 +109,9 @@ void _mosquitto_net_init(void)
|
||||
void _mosquitto_net_cleanup(void)
|
||||
{
|
||||
#ifdef WITH_TLS
|
||||
ERR_remove_state(0);
|
||||
ENGINE_cleanup();
|
||||
CONF_modules_unload(1);
|
||||
ERR_free_strings();
|
||||
EVP_cleanup();
|
||||
CRYPTO_cleanup_all_ex_data();
|
||||
|
||||
+2
-2
@@ -66,7 +66,7 @@ int mqtt3_bridge_new(struct mosquitto_db *db, struct _mqtt3_bridge *bridge)
|
||||
bridge->clientid = id;
|
||||
}
|
||||
if(bridge->local_clientid){
|
||||
local_id = bridge->local_clientid;
|
||||
local_id = _mosquitto_strdup(bridge->local_clientid);
|
||||
}else{
|
||||
len = strlen(bridge->clientid) + strlen("local.") + 2;
|
||||
local_id = _mosquitto_malloc(len);
|
||||
@@ -111,7 +111,7 @@ int mqtt3_bridge_new(struct mosquitto_db *db, struct _mqtt3_bridge *bridge)
|
||||
|
||||
bridge->try_private_accepted = true;
|
||||
|
||||
HASH_ADD_KEYPTR(hh_bridge, db->contexts_bridge, new_context->id, strlen(new_context->id), new_context);
|
||||
HASH_ADD_KEYPTR(hh_bridge, db->contexts_bridge, new_context->bridge->local_clientid, strlen(new_context->bridge->local_clientid), new_context);
|
||||
|
||||
return mqtt3_bridge_connect(db, new_context);
|
||||
}
|
||||
|
||||
@@ -265,9 +265,13 @@ void mqtt3_config_cleanup(struct mqtt3_config *config)
|
||||
_mosquitto_free(config->bridges[i].topics);
|
||||
}
|
||||
if(config->bridges[i].notification_topic) _mosquitto_free(config->bridges[i].notification_topic);
|
||||
#ifdef WITH_TLS
|
||||
if(config->bridges[i].tls_version) _mosquitto_free(config->bridges[i].tls_version);
|
||||
if(config->bridges[i].tls_cafile) _mosquitto_free(config->bridges[i].tls_cafile);
|
||||
#ifdef REAL_WITH_TLS_PSK
|
||||
if(config->bridges[i].tls_psk_identity) _mosquitto_free(config->bridges[i].tls_psk_identity);
|
||||
if(config->bridges[i].tls_psk) _mosquitto_free(config->bridges[i].tls_psk);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
_mosquitto_free(config->bridges);
|
||||
|
||||
@@ -92,6 +92,9 @@ void mqtt3_context_cleanup(struct mosquitto_db *db, struct mosquitto *context, b
|
||||
{
|
||||
struct _mosquitto_packet *packet;
|
||||
struct mosquitto_client_msg *msg, *next;
|
||||
#ifdef WITH_BRIDGE
|
||||
struct mosquitto *ctx_tmp;
|
||||
#endif
|
||||
|
||||
if(!context) return;
|
||||
|
||||
@@ -105,12 +108,27 @@ void mqtt3_context_cleanup(struct mosquitto_db *db, struct mosquitto *context, b
|
||||
}
|
||||
#ifdef WITH_BRIDGE
|
||||
if(context->bridge){
|
||||
if(context->bridge->local_clientid){
|
||||
HASH_FIND(hh_bridge, db->contexts_bridge, context->bridge->local_clientid, strlen(context->bridge->local_clientid), ctx_tmp);
|
||||
if(ctx_tmp){
|
||||
HASH_DELETE(hh_bridge, db->contexts_bridge, context);
|
||||
}
|
||||
}
|
||||
if(context->bridge->username){
|
||||
context->bridge->username = NULL;
|
||||
}
|
||||
if(context->bridge->password){
|
||||
context->bridge->password = NULL;
|
||||
}
|
||||
if(context->bridge->local_username){
|
||||
context->bridge->local_username = NULL;
|
||||
}
|
||||
if(context->bridge->local_password){
|
||||
context->bridge->local_password = NULL;
|
||||
}
|
||||
if(context->bridge->local_clientid){
|
||||
context->bridge->local_clientid = NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
_mosquitto_socket_close(db, context);
|
||||
|
||||
+11
-3
@@ -333,8 +333,16 @@ int main(int argc, char *argv[])
|
||||
HASH_ITER(hh_id, int_db.contexts_by_id, ctxt, ctxt_tmp){
|
||||
mqtt3_context_cleanup(&int_db, ctxt, true);
|
||||
}
|
||||
HASH_CLEAR(hh_sock, int_db.contexts_by_sock);
|
||||
HASH_CLEAR(hh_bridge, int_db.contexts_bridge);
|
||||
HASH_ITER(hh_sock, int_db.contexts_by_sock, ctxt, ctxt_tmp){
|
||||
mqtt3_context_cleanup(&int_db, ctxt, true);
|
||||
}
|
||||
HASH_ITER(hh_bridge, int_db.contexts_bridge, ctxt, ctxt_tmp){
|
||||
mqtt3_context_cleanup(&int_db, ctxt, true);
|
||||
}
|
||||
HASH_ITER(hh_for_free, int_db.contexts_for_free, ctxt, ctxt_tmp){
|
||||
HASH_DELETE(hh_for_free, int_db.contexts_for_free, ctxt);
|
||||
mqtt3_context_cleanup(&int_db, ctxt, true);
|
||||
}
|
||||
mqtt3_db_close(&int_db);
|
||||
|
||||
if(listensock){
|
||||
@@ -356,8 +364,8 @@ int main(int argc, char *argv[])
|
||||
remove(config.pid_file);
|
||||
}
|
||||
|
||||
_mosquitto_net_cleanup();
|
||||
mqtt3_config_cleanup(int_db.config);
|
||||
_mosquitto_net_cleanup();
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -211,15 +211,22 @@ static unsigned int psk_server_callback(SSL *ssl, const char *identity, unsigned
|
||||
if(!psk_key) return 0;
|
||||
|
||||
if(mosquitto_psk_key_get(db, psk_hint, identity, psk_key, max_psk_len*2) != MOSQ_ERR_SUCCESS){
|
||||
_mosquitto_free(psk_key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
len = _mosquitto_hex2bin(psk_key, psk, max_psk_len);
|
||||
if (len < 0) return 0;
|
||||
if (len < 0){
|
||||
_mosquitto_free(psk_key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(listener->use_identity_as_username){
|
||||
context->username = _mosquitto_strdup(identity);
|
||||
if(!context->username) return 0;
|
||||
if(!context->username){
|
||||
_mosquitto_free(psk_key);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return len;
|
||||
|
||||
+37
-49
@@ -102,20 +102,24 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
|
||||
/* Don't accept multiple CONNECT commands. */
|
||||
if(context->state != mosq_cs_new){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
|
||||
if(_mosquitto_read_string(&context->in_packet, &protocol_name)){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
return 1;
|
||||
}
|
||||
if(!protocol_name){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = 3;
|
||||
goto handle_connect_error;
|
||||
return 3;
|
||||
}
|
||||
if(_mosquitto_read_byte(&context->in_packet, &protocol_version)){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
HASH_ADD_KEYPTR(hh_for_free, db->contexts_for_free, context, sizeof(context), context);
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
return 1;
|
||||
}
|
||||
if(!strcmp(protocol_name, PROTOCOL_NAME_v31)){
|
||||
@@ -125,9 +129,9 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
protocol_version, context->address);
|
||||
}
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_PROTOCOL_VERSION);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
_mosquitto_free(protocol_name);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
context->protocol = mosq_p_mqtt31;
|
||||
}else if(!strcmp(protocol_name, PROTOCOL_NAME_v311)){
|
||||
@@ -137,15 +141,15 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
protocol_version, context->address);
|
||||
}
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_PROTOCOL_VERSION);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
_mosquitto_free(protocol_name);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
if((context->in_packet.command&0x0F) != 0x00){
|
||||
/* Reserved flags not set to 0, must disconnect. */
|
||||
mqtt3_context_disconnect(db, context);
|
||||
_mosquitto_free(protocol_name);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
context->protocol = mosq_p_mqtt311;
|
||||
}else{
|
||||
@@ -154,14 +158,14 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
protocol_name, context->address);
|
||||
}
|
||||
_mosquitto_free(protocol_name);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
_mosquitto_free(protocol_name);
|
||||
|
||||
if(_mosquitto_read_byte(&context->in_packet, &connect_flags)){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return 1;
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
clean_session = (connect_flags & 0x02) >> 1;
|
||||
will = connect_flags & 0x04;
|
||||
@@ -169,42 +173,41 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
if(will_qos == 3){
|
||||
_mosquitto_log_printf(NULL, MOSQ_LOG_INFO, "Invalid Will QoS in CONNECT from %s.",
|
||||
context->address);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
will_retain = connect_flags & 0x20;
|
||||
password_flag = connect_flags & 0x40;
|
||||
username_flag = connect_flags & 0x80;
|
||||
|
||||
if(_mosquitto_read_uint16(&context->in_packet, &(context->keepalive))){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return 1;
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
|
||||
if(_mosquitto_read_string(&context->in_packet, &client_id)){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return 1;
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
|
||||
slen = strlen(client_id);
|
||||
if(slen == 0){
|
||||
if(context->protocol == mosq_p_mqtt31){
|
||||
_mosquitto_free(client_id);
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_IDENTIFIER_REJECTED);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}else{ /* mqtt311 */
|
||||
_mosquitto_free(client_id);
|
||||
|
||||
if(clean_session == 0 || db->config->allow_zero_length_clientid == false){
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_IDENTIFIER_REJECTED);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}else{
|
||||
client_id = client_id_gen(db);
|
||||
if(!client_id){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return MOSQ_ERR_NOMEM;
|
||||
rc = MOSQ_ERR_NOMEM;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -213,52 +216,44 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
/* clientid_prefixes check */
|
||||
if(db->config->clientid_prefixes){
|
||||
if(strncmp(db->config->clientid_prefixes, client_id, strlen(db->config->clientid_prefixes))){
|
||||
_mosquitto_free(client_id);
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_NOT_AUTHORIZED);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
}
|
||||
|
||||
if(will){
|
||||
will_struct = _mosquitto_calloc(1, sizeof(struct mosquitto_message));
|
||||
if(!will_struct){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_NOMEM;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
if(_mosquitto_read_string(&context->in_packet, &will_topic)){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
if(strlen(will_topic) == 0){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
if(_mosquitto_pub_topic_check(will_topic)){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
|
||||
if(_mosquitto_read_uint16(&context->in_packet, &will_payloadlen)){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
if(will_payloadlen > 0){
|
||||
will_payload = _mosquitto_malloc(will_payloadlen);
|
||||
if(!will_payload){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
|
||||
rc = _mosquitto_read_bytes(&context->in_packet, will_payload, will_payloadlen);
|
||||
if(rc){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = 1;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -266,7 +261,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
}else{
|
||||
if(context->protocol == mosq_p_mqtt311){
|
||||
if(will_qos != 0 || will_retain != 0){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -286,7 +280,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
/* Password flag given, but no password. Ignore. */
|
||||
password_flag = 0;
|
||||
}else if(context->protocol == mosq_p_mqtt311){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -300,7 +293,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
/* Username flag given, but no username. Ignore. */
|
||||
username_flag = 0;
|
||||
}else if(context->protocol == mosq_p_mqtt311){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -309,7 +301,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
if(context->protocol == mosq_p_mqtt311){
|
||||
if(password_flag){
|
||||
/* username_flag == 0 && password_flag == 1 is forbidden */
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_PROTOCOL;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -320,7 +311,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
if(context->listener && context->listener->ssl_ctx && context->listener->use_identity_as_username){
|
||||
if(!context->ssl){
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_BAD_USERNAME_PASSWORD);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -329,7 +319,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
/* Client should have provided an identity to get this far. */
|
||||
if(!context->username){
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_BAD_USERNAME_PASSWORD);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -338,14 +327,12 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
client_cert = SSL_get_peer_certificate(context->ssl);
|
||||
if(!client_cert){
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_BAD_USERNAME_PASSWORD);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
name = X509_get_subject_name(client_cert);
|
||||
if(!name){
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_BAD_USERNAME_PASSWORD);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -353,7 +340,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
i = X509_NAME_get_index_by_NID(name, NID_commonName, -1);
|
||||
if(i == -1){
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_BAD_USERNAME_PASSWORD);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -372,7 +358,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
rc = mosquitto_unpwd_check(db, username, password);
|
||||
if(rc == MOSQ_ERR_AUTH){
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_BAD_USERNAME_PASSWORD);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
goto handle_connect_error;
|
||||
}else if(rc == MOSQ_ERR_INVAL){
|
||||
@@ -386,7 +371,6 @@ int mqtt3_handle_connect(struct mosquitto_db *db, struct mosquitto *context)
|
||||
|
||||
if(!username_flag && db->config->allow_anonymous == false){
|
||||
_mosquitto_send_connack(context, 0, CONNACK_REFUSED_NOT_AUTHORIZED);
|
||||
mqtt3_context_disconnect(db, context);
|
||||
rc = MOSQ_ERR_SUCCESS;
|
||||
goto handle_connect_error;
|
||||
}
|
||||
@@ -558,6 +542,10 @@ handle_connect_error:
|
||||
if(will_payload) _mosquitto_free(will_payload);
|
||||
if(will_topic) _mosquitto_free(will_topic);
|
||||
if(will_struct) _mosquitto_free(will_struct);
|
||||
if(context){
|
||||
mqtt3_context_disconnect(db, context);
|
||||
HASH_ADD_KEYPTR(hh_for_free, db->contexts_for_free, context, sizeof(context), context);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ broker = mosq_test.start_broker(filename=os.path.basename(__file__), cmd=cmd)
|
||||
|
||||
local_cmd = ['../../src/mosquitto', '-c', '06-bridge-reconnect-local-out.conf']
|
||||
local_broker = mosq_test.start_broker(cmd=local_cmd, filename=os.path.basename(__file__)+'_local1')
|
||||
time.sleep(0.5)
|
||||
local_broker.terminate()
|
||||
local_broker.wait()
|
||||
local_broker = mosq_test.start_broker(cmd=local_cmd, filename=os.path.basename(__file__)+'_local2')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
port 1888
|
||||
port 1889
|
||||
|
||||
listener 1888
|
||||
cafile ../ssl/all-ca.crt
|
||||
certfile ../ssl/server.crt
|
||||
keyfile ../ssl/server.key
|
||||
require_certificate true
|
||||
crlfile ../ssl/crl.pem
|
||||
|
||||
listener 1889
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
port 1888
|
||||
port 1889
|
||||
|
||||
listener 1888
|
||||
cafile ../ssl/all-ca.crt
|
||||
certfile ../ssl/server.crt
|
||||
keyfile ../ssl/server.key
|
||||
require_certificate true
|
||||
|
||||
listener 1889
|
||||
|
||||
@@ -41,6 +41,7 @@ try:
|
||||
broker.terminate()
|
||||
raise ValueError(err.errno)
|
||||
finally:
|
||||
time.sleep(0.5)
|
||||
broker.terminate()
|
||||
broker.wait()
|
||||
if rc:
|
||||
|
||||
@@ -40,6 +40,7 @@ try:
|
||||
raise ValueError(err.errno)
|
||||
|
||||
finally:
|
||||
time.sleep(0.5)
|
||||
broker.terminate()
|
||||
broker.wait()
|
||||
if rc:
|
||||
|
||||
@@ -41,6 +41,7 @@ except socket.error as err:
|
||||
if err.errno == errno.ECONNRESET:
|
||||
rc = 0
|
||||
|
||||
time.sleep(0.5)
|
||||
broker.terminate()
|
||||
broker.wait()
|
||||
if rc:
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
port 1888
|
||||
port 1889
|
||||
|
||||
listener 1888
|
||||
cafile ../ssl/all-ca.crt
|
||||
certfile ../ssl/server.crt
|
||||
keyfile ../ssl/server.key
|
||||
|
||||
use_identity_as_username true
|
||||
|
||||
listener 1889
|
||||
|
||||
@@ -38,6 +38,7 @@ try:
|
||||
|
||||
ssock.close()
|
||||
finally:
|
||||
time.sleep(0.5)
|
||||
broker.terminate()
|
||||
broker.wait()
|
||||
if rc:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
port 1888
|
||||
port 1889
|
||||
|
||||
listener 1888
|
||||
cafile ../ssl/all-ca.crt
|
||||
certfile ../ssl/server.crt
|
||||
keyfile ../ssl/server.key
|
||||
|
||||
listener 1889
|
||||
|
||||
@@ -38,6 +38,7 @@ except ssl.SSLError as err:
|
||||
finally:
|
||||
ssock.close()
|
||||
|
||||
time.sleep(0.5)
|
||||
broker.terminate()
|
||||
broker.wait
|
||||
if rc:
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
port 1888
|
||||
port 1889
|
||||
|
||||
listener 1888
|
||||
cafile ../ssl/all-ca.crt
|
||||
certfile ../ssl/server.crt
|
||||
keyfile ../ssl/server.key
|
||||
|
||||
use_identity_as_username true
|
||||
|
||||
listener 1889
|
||||
|
||||
Reference in New Issue
Block a user