cURL / Mailing Lists / curl-library / Single Mail


Re: Using fopensocket instead of direct socket call

From: Gokhan Sengun <>
Date: Wed, 7 Dec 2011 16:22:59 +0200

> Here's my two new test cases to verify that open/close socket callback are
>> paired up properly - test 596 currently fails due to this mentioned bug.
>> I'm slowly working on a fix.
> I've now pushed a series of 4 commits that fixed this problem together
> with the two new test cases that verify the socket open/close callbacks for
> FTP.
> Thanks for the report!

Thanks for the fixes. Merging and testing the fix today, I noticed a small
problem. When the connection is re-used, opensocket calls are not matching
closesocket calls because conn->sock_accepted[SECONDARYSOCKET] is never set
to FALSE after being set to TRUE in the first accept.

Below change seems to fix the problem. Any comment?

int Curl_closesocket(struct connectdata *conn,
                     curl_socket_t sock)
  if(conn && conn->fclosesocket) {
    if((sock != conn->sock[SECONDARYSOCKET]) ||
       /* if this socket matches the second socket, and that was created
          accept, then we MUST NOT call the callback */
      return conn->fclosesocket(conn->closesocket_client, sock);

      conn->sock_accepted[SECONDARYSOCKET] = FALSE;

  return sclose(sock);

List admin:
Received on 2011-12-07