You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2021/05/17 20:29:07 UTC
[thrift] 01/01: THRIFT-5399: Fix socket leak in abnormal situation
This is an automated email from the ASF dual-hosted git repository.
jensg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/thrift.git
commit 8101302c568bf7631448f11f7a5f6a22287d5cbe
Author: lm2048 <li...@163.com>
AuthorDate: Fri Apr 16 23:36:55 2021 +0800
THRIFT-5399: Fix socket leak in abnormal situation
---
lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c b/lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c
index 1abd615..74def29 100644
--- a/lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c
+++ b/lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c
@@ -72,6 +72,8 @@ thrift_server_socket_listen (ThriftServerTransport *transport, GError **error)
g_set_error (error, THRIFT_SERVER_SOCKET_ERROR,
THRIFT_SERVER_SOCKET_ERROR_SETSOCKOPT,
"unable to set SO_REUSEADDR - %s", strerror(errno));
+ close (tsocket->sd);
+ tsocket->sd = THRIFT_INVALID_SOCKET;
return FALSE;
}
@@ -90,6 +92,8 @@ thrift_server_socket_listen (ThriftServerTransport *transport, GError **error)
THRIFT_SERVER_SOCKET_ERROR_BIND,
"failed to bind to path %s: - %s",
tsocket->path, strerror(errno));
+ close (tsocket->sd);
+ tsocket->sd = THRIFT_INVALID_SOCKET;
return FALSE;
}
}
@@ -108,6 +112,8 @@ thrift_server_socket_listen (ThriftServerTransport *transport, GError **error)
THRIFT_SERVER_SOCKET_ERROR_BIND,
"failed to bind to port %d - %s",
tsocket->port, strerror(errno));
+ close (tsocket->sd);
+ tsocket->sd = THRIFT_INVALID_SOCKET;
return FALSE;
}
}
@@ -120,7 +126,6 @@ thrift_server_socket_listen (ThriftServerTransport *transport, GError **error)
THRIFT_SERVER_SOCKET_ERROR_BIND,
"failed to listen to path %s: - %s",
tsocket->path, strerror(errno));
- return FALSE;
}
else
{
@@ -128,8 +133,10 @@ thrift_server_socket_listen (ThriftServerTransport *transport, GError **error)
THRIFT_SERVER_SOCKET_ERROR_LISTEN,
"failed to listen to port %d - %s",
tsocket->port, strerror(errno));
- return FALSE;
}
+ close (tsocket->sd);
+ tsocket->sd = THRIFT_INVALID_SOCKET;
+ return FALSE;
}
return TRUE;