Hi all, I'm using the mosquitto server version 1.4.0 with websocket, and the config use_username_as_clientid is true.I found when two web clients using the same username, the mosquitto server can't disconnect the old one,and all the web client Unable to receive data from server.
I modified function "void do_disconnect(struct mosquitto_db *db, struct mosquitto *context)" in "loop.c" like this: .................................... mosquitto__add_context_to_disused(db, context); if(context->id){ HASH_DELETE(hh_id, db->contexts_by_id, context); _mosquitto_free(context->id); context->id = NULL; } } #ifdef WITH_WEBSOCKETS } #endif context->state = mosq_cs_disconnected; }
To: .................................... mosquitto__add_context_to_disused(db, context); if(context->id){ HASH_DELETE(hh_id, db->contexts_by_id, context); _mosquitto_free(context->id); context->id = NULL; } } context->state = mosq_cs_disconnected; #ifdef WITH_WEBSOCKETS } #endif }
then it worked.
I thinke context->state with websocket should be changed in the function "callback_mqtt" in "websocket.c",Is this correct?
Thanks for your time.
Regards, FeelyChau
|