Disconnect websockets clients properly.

context->state was being overwritten when websockets clients
attempted to disconnect, leaving them in limbo. This has been fixed.

Thanks to FeelyChau.
pull/211/merge
Roger A. Light 11 years ago
parent ac5dbd428f
commit b52e3311d2

@ -353,8 +353,9 @@ void do_disconnect(struct mosquitto_db *db, struct mosquitto *context)
libwebsocket_callback_on_writable(context->ws_context, context->wsi);
}
context->sock = INVALID_SOCKET;
}else{
}else
#endif
{
if(db->config->connection_messages == true){
if(context->state != mosq_cs_disconnecting){
_mosquitto_log_printf(NULL, MOSQ_LOG_NOTICE, "Socket error on client %s, disconnecting.", context->id);
@ -375,10 +376,8 @@ void do_disconnect(struct mosquitto_db *db, struct mosquitto *context)
context->id = NULL;
}
}
#ifdef WITH_WEBSOCKETS
context->state = mosq_cs_disconnected;
}
#endif
context->state = mosq_cs_disconnected;
}
/* Error ocurred, probably an fd has been closed.

Loading…
Cancel
Save