Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}