cf-socket: completely remove the disabled USE_RECV_BEFORE_SEND_WORKAROUND

Closes #11118
This commit is contained in:
Stefan Eissing 2023-05-16 10:24:07 +02:00 committed by Daniel Stenberg
parent df6c2f7b54
commit 408eb87bb3
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
5 changed files with 22 additions and 47 deletions

View file

@ -1235,20 +1235,6 @@ static ssize_t cf_socket_send(struct Curl_cfilter *cf, struct Curl_easy *data,
curl_socket_t fdsave;
ssize_t nwritten;
#ifdef USE_RECV_BEFORE_SEND_WORKAROUND
/* WinSock will destroy unread received data if send() is
failed.
To avoid lossage of received data, recv() must be
performed before every send() if any incoming data is
available. */
if(ctx->buffer_recv && !Curl_bufq_is_full(&ctx->recvbuf)) {
nwritten = Curl_bufq_slurp(&ctx->recvbuf, nw_in_read, &rctx, err);
if(nwritten < 0 && *err != CURLE_AGAIN) {
return -1;
}
}
#endif
*err = CURLE_OK;
fdsave = cf->conn->sock[cf->sockindex];
cf->conn->sock[cf->sockindex] = ctx->sock;
@ -1405,20 +1391,11 @@ 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.
*
* Note buffering is currently disabled by default because we have stalls
/* 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;
}

View file

@ -777,23 +777,6 @@ endings either CRLF or LF so 't' is appropriate.
#define FOPEN_APPENDTEXT "a"
#endif
/* Windows workaround to recv before every send, because apparently Winsock
* destroys destroys recv() buffer when send() failed.
* This workaround is now disabled by default since it caused hard to fix bugs.
* Define USE_RECV_BEFORE_SEND_WORKAROUND to enable it.
* https://github.com/curl/curl/issues/657
* https://github.com/curl/curl/pull/10409
*/
#if !defined(DONT_USE_RECV_BEFORE_SEND_WORKAROUND)
# if defined(WIN32) || defined(__CYGWIN__)
/* # define USE_RECV_BEFORE_SEND_WORKAROUND */
# endif
#else /* DONT_USE_RECV_BEFORE_SEND_WORKAROUND */
# ifdef USE_RECV_BEFORE_SEND_WORKAROUND
# undef USE_RECV_BEFORE_SEND_WORKAROUND
# endif
#endif /* DONT_USE_RECV_BEFORE_SEND_WORKAROUND */
/* for systems that don't detect this in configure */
#ifndef CURL_SA_FAMILY_T
# if defined(HAVE_SA_FAMILY_T)