Fix some places where return codes were incorrect.

Closes #850.

Signed-off-by: Roger A. Light <roger@atchoo.org>
pull/830/head
Roger A. Light 7 years ago
parent fc9a0db966
commit 4bacbecb1b

@ -13,6 +13,11 @@ Broker:
- All clients now time out if they exceed their keepalive*1.5, rather than
just reach it. This was inconsistent in two places.
Library:
- Fix some places where return codes were incorrect, including to the
on_disconnect() callback. This has resulted in two new error codes,
MOSQ_ERR_KEEPALIVE and MOSQ_ERR_LOOKUP.
1.5 - 20180502
==============

@ -300,6 +300,7 @@ int mosquitto_loop_misc(struct mosquitto *mosq)
mosquitto__check_keepalive(mosq);
now = mosquitto_time();
if(mosq->ping_t && now - mosq->ping_t >= mosq->keepalive){
/* mosq->ping_t != 0 means we are waiting for a pingresp.
* This hasn't happened in the keepalive time so we should disconnect.
@ -309,7 +310,7 @@ int mosquitto_loop_misc(struct mosquitto *mosq)
if(mosq->state == mosq_cs_disconnecting){
rc = MOSQ_ERR_SUCCESS;
}else{
rc = 1;
rc = MOSQ_ERR_KEEPALIVE;
}
pthread_mutex_unlock(&mosq->state_mutex);
pthread_mutex_lock(&mosq->callback_mutex);

@ -84,7 +84,9 @@ enum mosq_err_t {
MOSQ_ERR_EAI = 15,
MOSQ_ERR_PROXY = 16,
MOSQ_ERR_PLUGIN_DEFER = 17,
MOSQ_ERR_MALFORMED_UTF8 = 18
MOSQ_ERR_MALFORMED_UTF8 = 18,
MOSQ_ERR_KEEPALIVE = 19,
MOSQ_ERR_LOOKUP = 20,
};
/* Error values */

@ -748,21 +748,21 @@ int net__socket_nonblock(mosq_sock_t sock)
opt = fcntl(sock, F_GETFL, 0);
if(opt == -1){
COMPAT_CLOSE(sock);
return 1;
return MOSQ_ERR_ERRNO;
}
if(fcntl(sock, F_SETFL, opt | O_NONBLOCK) == -1){
/* If either fcntl fails, don't want to allow this client to connect. */
COMPAT_CLOSE(sock);
return 1;
return MOSQ_ERR_ERRNO;
}
#else
unsigned long opt = 1;
if(ioctlsocket(sock, FIONBIO, &opt)){
COMPAT_CLOSE(sock);
return 1;
return MOSQ_ERR_ERRNO;
}
#endif
return 0;
return MOSQ_ERR_SUCCESS;
}

@ -119,7 +119,7 @@ int packet__queue(struct mosquitto *mosq, struct mosquitto__packet *packet)
# ifdef WITH_WEBSOCKETS
if(mosq->wsi){
libwebsocket_callback_on_writable(mosq->ws_context, mosq->wsi);
return 0;
return MOSQ_ERR_SUCCESS;
}else{
return packet__write(mosq);
}
@ -347,7 +347,7 @@ int packet__write(struct mosquitto *mosq)
pthread_mutex_lock(&mosq->callback_mutex);
if(mosq->on_disconnect){
mosq->in_callback = true;
mosq->on_disconnect(mosq, mosq->userdata, 0);
mosq->on_disconnect(mosq, mosq->userdata, MOSQ_ERR_SUCCESS);
mosq->in_callback = false;
}
pthread_mutex_unlock(&mosq->callback_mutex);

@ -44,7 +44,7 @@ static void srv_callback(void *arg, int status, int timeouts, unsigned char *abu
pthread_mutex_lock(&mosq->callback_mutex);
if(mosq->on_disconnect){
mosq->in_callback = true;
mosq->on_disconnect(mosq, mosq->userdata, 2);
mosq->on_disconnect(mosq, mosq->userdata, MOSQ_ERR_LOOKUP);
mosq->in_callback = false;
}
pthread_mutex_unlock(&mosq->callback_mutex);

@ -96,7 +96,7 @@ void mosquitto__check_keepalive(struct mosquitto *mosq)
if(mosq->state == mosq_cs_disconnecting){
rc = MOSQ_ERR_SUCCESS;
}else{
rc = 1;
rc = MOSQ_ERR_KEEPALIVE;
}
pthread_mutex_unlock(&mosq->state_mutex);
pthread_mutex_lock(&mosq->callback_mutex);

Loading…
Cancel
Save