Преглед на файлове

qdevice-net: Ensure to free non blocking client

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Jan Friesse преди 10 години
родител
ревизия
3ff96e8d56
променени са 2 файла, в които са добавени 14 реда и са изтрити 0 реда
  1. 2 0
      qdevices/nss-sock.c
  2. 12 0
      qdevices/qdevice-model-net.c

+ 2 - 0
qdevices/nss-sock.c

@@ -309,9 +309,11 @@ nss_sock_non_blocking_client_destroy(struct nss_sock_non_blocking_client *client
 
 	if (client->addr_info != NULL) {
 		PR_FreeAddrInfo(client->addr_info);
+		client->addr_info = NULL;
 	}
 
 	free(client->host_name);
+	client->host_name = NULL;
 
 	client->destroyed = 1;
 }

+ 12 - 0
qdevices/qdevice-model-net.c

@@ -201,6 +201,18 @@ qdevice_model_net_run(struct qdevice_instance *instance)
 			if (PR_Close(net_instance->socket) != PR_SUCCESS) {
 				qdevice_log_nss(LOG_WARNING, "Unable to close connection");
 			}
+			net_instance->socket = NULL;
+		}
+
+		if (!net_instance->non_blocking_client.destroyed) {
+			nss_sock_non_blocking_client_destroy(&net_instance->non_blocking_client);
+		}
+
+		if (net_instance->non_blocking_client.socket != NULL) {
+			if (PR_Close(net_instance->non_blocking_client.socket) != PR_SUCCESS) {
+				qdevice_log_nss(LOG_WARNING, "Unable to close non-blocking client connection");
+			}
+			net_instance->non_blocking_client.socket = NULL;
 		}
 
 		qdevice_net_instance_clean(net_instance);