Commit 82b0aebe authored by Gokhan Sengun's avatar Gokhan Sengun Committed by Daniel Stenberg
Browse files

ftp: active conn, place calling sockopt callback at the end of function

Commit b91d29a28e170c16d65d956db79f2cd3a82372d2 introduces a bug and breaks Curl_closesocket function. sock_accepted flag for the second socket should be tagged as TRUE before the sockopt callback is called because in case the callback returns an error, Curl_closesocket function is going to call the - fclosesocket - callback for the accept()ed socket
parent 23ef5e4b
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -348,6 +348,10 @@ static CURLcode AcceptServerConnect(struct connectdata *conn)
  }
  infof(data, "Connection accepted from server\n");

  conn->sock[SECONDARYSOCKET] = s;
  curlx_nonblock(s, TRUE); /* enable non-blocking */
  conn->sock_accepted[SECONDARYSOCKET] = TRUE;

  if(data->set.fsockopt) {
    int error = 0;

@@ -358,13 +362,11 @@ static CURLcode AcceptServerConnect(struct connectdata *conn)

    if(error) {
      Curl_closesocket(conn, s); /* close the socket and bail out */
      conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
      return CURLE_ABORTED_BY_CALLBACK;
    }
  }

  conn->sock[SECONDARYSOCKET] = s;
  curlx_nonblock(s, TRUE); /* enable non-blocking */
  conn->sock_accepted[SECONDARYSOCKET] = TRUE;
  return CURLE_OK;

}