aboutsummaryrefslogtreecommitdiff
path: root/lib/connect.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/connect.c')
-rw-r--r--lib/connect.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/connect.c b/lib/connect.c
index 445261754..a560c4d3b 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -1110,10 +1110,14 @@ curl_socket_t Curl_getconnectinfo(struct SessionHandle *data,
int Curl_closesocket(struct connectdata *conn,
curl_socket_t sock)
{
- if(conn && conn->fclosesocket)
- return conn->fclosesocket(conn->closesocket_client, sock);
- else
- return sclose(sock);
+ if(conn && conn->fclosesocket) {
+ if((sock != conn->sock[SECONDARYSOCKET]) ||
+ !conn->sock_accepted[SECONDARYSOCKET])
+ /* if this socket matches the second socket, and that was created with
+ accept, then we MUST NOT call the callback */
+ return conn->fclosesocket(conn->closesocket_client, sock);
+ }
+ return sclose(sock);
}
/*