return result;
}
+bool Curl_conn_is_setup(struct connectdata *conn, int sockindex)
+{
+ return (conn->cfilter[sockindex] != NULL);
+}
+
bool Curl_conn_is_connected(struct connectdata *conn, int sockindex)
{
struct Curl_cfilter *cf;
CURLcode Curl_conn_connect(struct Curl_easy *data, int sockindex,
bool blocking, bool *done);
+/**
+ * Check if a filter chain at `sockindex` for connection `conn` exists.
+ */
+bool Curl_conn_is_setup(struct connectdata *conn, int sockindex);
+
/**
* Check if the filter chain at `sockindex` for connection `conn` is
* completely connected.
infof(data, "Failed EPSV attempt. Disabling EPSV");
/* disable it for next transfer */
conn->bits.ftp_use_epsv = FALSE;
- Curl_conn_close(data, SECONDARYSOCKET);
- Curl_conn_cf_discard_all(data, conn, SECONDARYSOCKET);
+ close_secondarysocket(data, ftpc);
data->state.errorbuf = FALSE; /* allow error message to get
rewritten */
result = Curl_pp_sendf(data, &ftpc->pp, "%s", "PASV");
shutdown(conn->sock[SECONDARYSOCKET], 2); /* SD_BOTH */
#endif
- if(conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) {
+ if(Curl_conn_is_setup(conn, SECONDARYSOCKET)) {
if(!result && ftpc->dont_check && data->req.maxdownload > 0) {
/* partial download completed */
result = Curl_pp_sendf(data, pp, "%s", "ABOR");