Przeglądaj źródła

qdevice-net: Free send buffer on error (leak)

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Jan Friesse 10 lat temu
rodzic
commit
500b8978c0

+ 4 - 0
qdevices/qdevice-net-msg-received.c

@@ -354,6 +354,7 @@ qdevice_net_msg_received_init_reply(struct qdevice_net_instance *instance,
 		qdevice_log(LOG_ERR, "Can't allocate send buffer for set option msg");
 
 		instance->disconnect_reason = QDEVICE_NET_DISCONNECT_REASON_CANT_ALLOCATE_MSG_BUFFER;
+		send_buffer_list_discard_new(&instance->send_buffer_list, send_buffer);
 
 		return (-1);
 	}
@@ -821,9 +822,12 @@ qdevice_net_msg_received_vote_info(struct qdevice_net_instance *instance,
 		    "vote info reply list msg");
 
 		instance->disconnect_reason = QDEVICE_NET_DISCONNECT_REASON_CANT_ALLOCATE_MSG_BUFFER;
+		send_buffer_list_discard_new(&instance->send_buffer_list, send_buffer);
 		return (-1);
 	}
 
+	send_buffer_list_put(&instance->send_buffer_list, send_buffer);
+
 	return (0);
 }
 

+ 2 - 0
qdevices/qnetd-client-send.c

@@ -60,6 +60,7 @@ qnetd_client_send_err(struct qnetd_client *client, int add_msg_seq_number, uint3
 		qnetd_log(LOG_ERR, "Can't alloc server error msg. "
 		    "Disconnecting client connection.");
 
+		send_buffer_list_discard_new(&client->send_buffer_list, send_buffer);
 		return (-1);
 	};
 
@@ -88,6 +89,7 @@ qnetd_client_send_vote_info(struct qnetd_client *client, uint32_t msg_seq_number
 		qnetd_log(LOG_ERR, "Can't alloc vote info msg. "
 		    "Disconnecting client connection.");
 
+		send_buffer_list_discard_new(&client->send_buffer_list, send_buffer);
 		return (-1);
 	};