diff options
author | brueffer <brueffer@FreeBSD.org> | 2015-07-14 09:25:10 +0000 |
---|---|---|
committer | brueffer <brueffer@FreeBSD.org> | 2015-07-14 09:25:10 +0000 |
commit | 4ebfbfaa3f9312ade405ef336ee711fd221ca1ac (patch) | |
tree | c0b9c6bc3c1b2ec2ab541c11a943906127729d48 /sbin | |
parent | 96a5a3791e2b7cac20f0eb7ded262867ba72de7a (diff) | |
download | FreeBSD-src-4ebfbfaa3f9312ade405ef336ee711fd221ca1ac.zip FreeBSD-src-4ebfbfaa3f9312ade405ef336ee711fd221ca1ac.tar.gz |
If ggated's exports_find() fails, the connection is removed before
(trying to) report the problem to the client.
sendfail() is called with an already closed socket and thus it
fails to inform the client about the problem.
Fix this by calling sendfail() before connection_remove().
PR: 195944
Submitted by: Fabian Keil
Reviewed by: pjd
MFC after: 1 week
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/ggate/ggated/ggated.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sbin/ggate/ggated/ggated.c b/sbin/ggate/ggated/ggated.c index 01aa00a..a340f01 100644 --- a/sbin/ggate/ggated/ggated.c +++ b/sbin/ggate/ggated/ggated.c @@ -906,8 +906,8 @@ handshake(struct sockaddr *from, int sfd) ex = exports_find(from, &cinit, conn); if (ex == NULL) { - connection_remove(conn); sendfail(sfd, errno, NULL); + connection_remove(conn); return (0); } if (conn->c_mediasize == 0) { |