diff options
Diffstat (limited to 'lib/connect.c')
-rw-r--r-- | lib/connect.c | 12 |
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); } /* |