void MQTTClient_closeSession(Clients* client) { FUNC_ENTRY; client->good = 0; client->ping_outstanding = 0; if (client->net.socket > 0) { if (client->connected) MQTTPacket_send_disconnect(&client->net, client->clientID); Thread_lock_mutex(socket_mutex); #if defined(OPENSSL) SSLSocket_close(&client->net); #endif Socket_close(client->net.socket); Thread_unlock_mutex(socket_mutex); client->net.socket = 0; #if defined(OPENSSL) client->net.ssl = NULL; #endif } client->connected = 0; client->connect_state = 0; if (client->cleansession) MQTTClient_cleanSession(client); FUNC_EXIT; }
void MQTTProtocol_closeSession(Clients* client, int sendwill) { FUNC_ENTRY; client->good = 0; if (client->net.socket > 0) { if (client->connected || client->connect_state) { MQTTPacket_send_disconnect(&client->net, client->clientID); client->connected = 0; client->connect_state = 0; } #if defined(OPENSSL) SSLSocket_close(&client->net); #endif Socket_close(client->net.socket); client->net.socket = 0; #if defined(OPENSSL) client->net.ssl = NULL; #endif } if (client->cleansession) MQTTClient_cleanSession(client); FUNC_EXIT; }