b.a.t.m.a.n.lists.open-mesh.org archive mirror
 help / color / mirror / Atom feed
* [B.A.T.M.A.N.] [PATCH] alfred: Close socket after connect failure
@ 2015-02-05 14:47 Sven Eckelmann
  2015-02-05 18:09 ` Simon Wunderlich
  0 siblings, 1 reply; 2+ messages in thread
From: Sven Eckelmann @ 2015-02-05 14:47 UTC (permalink / raw)
  To: b.a.t.m.a.n; +Cc: Sven Eckelmann

The socket is still using one file descriptor of the process when the
connection fails. This fd leak is non-problematic in the current client process
code because the client would be closed in this situation anyway and therefore
the socket would be closed when the process is stopped. But people using this
as example code may not stop the process on this error. The unclosed and unused
sockets would accumulate and the process would hit the limit for open file
descriptors.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
 gpsd/alfred-gpsd.c | 2 ++
 unix_sock.c        | 2 ++
 vis/vis.c          | 2 ++
 3 files changed, 6 insertions(+)

diff --git a/gpsd/alfred-gpsd.c b/gpsd/alfred-gpsd.c
index d736ad1..4bc18ae 100644
--- a/gpsd/alfred-gpsd.c
+++ b/gpsd/alfred-gpsd.c
@@ -40,6 +40,8 @@ static int alfred_open_sock(struct globals *globals)
 
 	if (connect(globals->unix_sock, (struct sockaddr *)&addr,
 		    sizeof(addr)) < 0) {
+		close(globals->unix_sock);
+		globals->unix_sock = -1;
 		perror("can't connect to unix socket");
 		return -1;
 	}
diff --git a/unix_sock.c b/unix_sock.c
index 8a99327..693b55d 100644
--- a/unix_sock.c
+++ b/unix_sock.c
@@ -84,6 +84,8 @@ int unix_sock_open_client(struct globals *globals)
 
 	if (connect(globals->unix_sock, (struct sockaddr *)&addr,
 		    sizeof(addr)) < 0) {
+		close(globals->unix_sock);
+		globals->unix_sock = -1;
 		perror("can't connect to unix socket");
 		return -1;
 	}
diff --git a/vis/vis.c b/vis/vis.c
index 3dd5c8c..1916ea3 100644
--- a/vis/vis.c
+++ b/vis/vis.c
@@ -173,6 +173,8 @@ static int alfred_open_sock(struct globals *globals)
 
 	if (connect(globals->unix_sock, (struct sockaddr *)&addr,
 		    sizeof(addr)) < 0) {
+		close(globals->unix_sock);
+		globals->unix_sock = -1;
 		perror("can't connect to unix socket");
 		return -1;
 	}
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [B.A.T.M.A.N.] [PATCH] alfred: Close socket after connect failure
  2015-02-05 14:47 [B.A.T.M.A.N.] [PATCH] alfred: Close socket after connect failure Sven Eckelmann
@ 2015-02-05 18:09 ` Simon Wunderlich
  0 siblings, 0 replies; 2+ messages in thread
From: Simon Wunderlich @ 2015-02-05 18:09 UTC (permalink / raw)
  To: b.a.t.m.a.n; +Cc: Sven Eckelmann

[-- Attachment #1: Type: text/plain, Size: 653 bytes --]

On Thursday 05 February 2015 15:47:13 Sven Eckelmann wrote:
> The socket is still using one file descriptor of the process when the
> connection fails. This fd leak is non-problematic in the current client
> process code because the client would be closed in this situation anyway
> and therefore the socket would be closed when the process is stopped. But
> people using this as example code may not stop the process on this error.
> The unclosed and unused sockets would accumulate and the process would hit
> the limit for open file descriptors.
> 
> Signed-off-by: Sven Eckelmann <sven@narfation.org>

applied in revision 26a7b5e.

Thanks!
    Simon

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-02-05 18:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-05 14:47 [B.A.T.M.A.N.] [PATCH] alfred: Close socket after connect failure Sven Eckelmann
2015-02-05 18:09 ` Simon Wunderlich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).