Loading lib/ftp.c +14 −24 Original line number Diff line number Diff line Loading @@ -872,33 +872,21 @@ static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks, return GETSOCK_BLANK; /* When in DO_MORE state, we could be either waiting for us to connect to a remote site, or we could wait for that site to connect to us. Or just handle ordinary commands. When waiting for a connect (in PORT mode), we can be in FTP_STOP state (or we're in FTP_STOR when we do an upload) and then we wait for the secondary socket to become writeable. If we're in STOR or STOP in passive mode, we already have the seconnd connection done. If we're in another state, we're still handling commands on the control (primary) connection. * remote site, or we could wait for that site to connect to us. Or just * handle ordinary commands. */ switch(ftpc->state) { case FTP_STOP: case FTP_STOR: break; default: return Curl_pp_getsock(&conn->proto.ftpc.pp, socks, numsocks); } if(FTP_STOP == ftpc->state) { /* if stopped and still in this state, then we're also waiting for a connect on the secondary connection */ socks[0] = conn->sock[FIRSTSOCKET]; socks[1] = conn->sock[SECONDARYSOCKET]; socks[0] = conn->sock[SECONDARYSOCKET]; if(ftpc->wait_data_conn || !conn->data->set.ftp_use_port) { socks[1] = conn->sock[FIRSTSOCKET]; return GETSOCK_READSOCK(0) | GETSOCK_READSOCK(1); return GETSOCK_READSOCK(FIRSTSOCKET) | GETSOCK_WRITESOCK(SECONDARYSOCKET); } return GETSOCK_READSOCK(0); else return Curl_pp_getsock(&conn->proto.ftpc.pp, socks, numsocks); } /* This is called after the FTP_QUOTE state is passed. Loading Loading @@ -2427,6 +2415,8 @@ static CURLcode ftp_state_stor_resp(struct connectdata *conn, if(data->set.ftp_use_port) { bool connected; state(conn, FTP_STOP); /* no longer in STOR state */ result = AllowServerConnect(conn, &connected); if(result) return result; Loading Loading
lib/ftp.c +14 −24 Original line number Diff line number Diff line Loading @@ -872,33 +872,21 @@ static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks, return GETSOCK_BLANK; /* When in DO_MORE state, we could be either waiting for us to connect to a remote site, or we could wait for that site to connect to us. Or just handle ordinary commands. When waiting for a connect (in PORT mode), we can be in FTP_STOP state (or we're in FTP_STOR when we do an upload) and then we wait for the secondary socket to become writeable. If we're in STOR or STOP in passive mode, we already have the seconnd connection done. If we're in another state, we're still handling commands on the control (primary) connection. * remote site, or we could wait for that site to connect to us. Or just * handle ordinary commands. */ switch(ftpc->state) { case FTP_STOP: case FTP_STOR: break; default: return Curl_pp_getsock(&conn->proto.ftpc.pp, socks, numsocks); } if(FTP_STOP == ftpc->state) { /* if stopped and still in this state, then we're also waiting for a connect on the secondary connection */ socks[0] = conn->sock[FIRSTSOCKET]; socks[1] = conn->sock[SECONDARYSOCKET]; socks[0] = conn->sock[SECONDARYSOCKET]; if(ftpc->wait_data_conn || !conn->data->set.ftp_use_port) { socks[1] = conn->sock[FIRSTSOCKET]; return GETSOCK_READSOCK(0) | GETSOCK_READSOCK(1); return GETSOCK_READSOCK(FIRSTSOCKET) | GETSOCK_WRITESOCK(SECONDARYSOCKET); } return GETSOCK_READSOCK(0); else return Curl_pp_getsock(&conn->proto.ftpc.pp, socks, numsocks); } /* This is called after the FTP_QUOTE state is passed. Loading Loading @@ -2427,6 +2415,8 @@ static CURLcode ftp_state_stor_resp(struct connectdata *conn, if(data->set.ftp_use_port) { bool connected; state(conn, FTP_STOP); /* no longer in STOR state */ result = AllowServerConnect(conn, &connected); if(result) return result; Loading