|
From: | Ashi |
Subject: | Re: [Qemu-devel] [PATCH] Modify net/socket.c to use socket_* functions from include/qemu/sockets.h |
Date: | Tue, 31 May 2016 15:27:42 +0530 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 |
On Monday 16 May 2016 10:11 PM, Stefan Hajnoczi wrote:
On Thu, May 12, 2016 at 10:33:05PM +0530, Ashijeet Acharya wrote:Changed the listen(),connect(),parse_host_port() in net/socket.c with the socket_*()functions in include/qemu/sockets.h.What is the rationale for this change? Please explain why this is necessary or a good idea.
This patch consists of basic api conversion since i guess everything will be using QAPI based socket_* functions in the future and the same task was listed on this http://wiki.qemu.org/BiteSizedTasks page too.
Please summarize the address syntax changes in this patch and update the QEMU man page.
Syntax changes: 1. connect() -> socket_connect() 2. listen() -> socket_listen() 3. parse_host_port() -> socket_parse() 4, delete bind as it is automatically done inside socket_listen. 5. use SocketAddress as data-type of socket variable saddr.
I have looked into it and hopefully solved the memory leakage problem as you can see in the new patch.Signed-off-by: Ashijeet Acharya <address@hidden> --- net/socket.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/net/socket.c b/net/socket.c index 9fa2cd8..b6e2f3e 100644 --- a/net/socket.c +++ b/net/socket.c @@ -522,10 +522,12 @@ static int net_socket_listen_init(NetClientState *peer, { NetClientState *nc; NetSocketState *s; - struct sockaddr_in saddr; + SocketAddress *saddr; int fd, ret; + Error *local_error = NULL; + saddr = g_new0(SocketAddress, 1); - if (parse_host_port(&saddr, host_str) < 0) + if (socket_parse(host_str, &local_error) < 0) return -1;saddr is leaked. Please check all return code paths and avoid memory leaks. I'm not sure if it makes sense to allocate a new SocketAddress object since it is assigned a different object further down in the patch: saddr = socket_local_address(fd, &local_error);
Thanks Ashijeet Acharya
[Prev in Thread] | Current Thread | [Next in Thread] |