From: Stefan Eissing Date: Thu, 13 Apr 2023 15:46:52 +0000 (+0200) Subject: cf-socket: Disable socket receive buffer by default X-Git-Tag: curl-8_1_0~147 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4bc597d27c56b20ec569ee85f37c268e3f4e1f14;p=thirdparty%2Fcurl.git cf-socket: Disable socket receive buffer by default - Disable socket receive buffer unless USE_RECV_BEFORE_SEND_WORKAROUND is in place. While we would like to use the receive buffer, we have stalls in parallel transfers where not all buffered data is consumed and no socket events happen. Note USE_RECV_BEFORE_SEND_WORKAROUND is a Windows sockets workaround that has been disabled by default since b4b6e4f1, due to other bugs. Closes https://github.com/curl/curl/pull/10961 --- diff --git a/lib/cf-socket.c b/lib/cf-socket.c index 830daa1f54..dc6a40e906 100644 --- a/lib/cf-socket.c +++ b/lib/cf-socket.c @@ -1387,11 +1387,20 @@ static void cf_socket_active(struct Curl_cfilter *cf, struct Curl_easy *data) conn_set_primary_ip(cf, data); set_local_ip(cf, data); Curl_persistconninfo(data, cf->conn, ctx->l_ip, ctx->l_port); - /* We buffer only for TCP transfers that do not install their own - * read function. Those may still have expectations about socket - * behaviours from the past. */ + /* We buffer only for TCP transfers that do not install their own read + * function. Those may still have expectations about socket behaviours from + * the past. + * + * Note buffering is currently disabled by default because we have stalls + * in parallel transfers where not all buffered data is consumed and no + * socket events happen. + */ +#ifdef USE_RECV_BEFORE_SEND_WORKAROUND ctx->buffer_recv = (ctx->transport == TRNSPRT_TCP && (cf->conn->recv[cf->sockindex] == Curl_conn_recv)); +#else + ctx->buffer_recv = FALSE; +#endif } ctx->active = TRUE; }