curl/lib
Stefan Eissing 8ed285f06d
websockets: buffer ugprade data at connection level
When the HTTP Upgrade to websockets already carries ws frame data,
buffer that data at connection level and not in the ws decoder.

Adding new cfilter `cf_recvbuf` to buffer a fixed amont of data
to be received later. When the data is received, the filter
passes further recv call through to its subfilter.

Fixes #22107
Reported-by: sideshowbarker on github
Closes #22111
2026-06-22 08:54:50 +02:00
..
curlx build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
vauth krb5_sspi: fix error message on DecryptMessage() fail 2026-06-14 14:17:27 +02:00
vquic vquic: fix -Wunused-parameter with proxies disabled 2026-06-19 14:46:54 +02:00
vssh tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
vtls openssl: do not mix OpenSSL int result with CURLcode variable 2026-06-18 17:30:56 +02:00
.gitignore
altsvc.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
altsvc.h
amigaos.c
amigaos.h
arpa_telnet.h tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
asyn-ares.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
asyn-base.c resolve: pass bool for proxy resolves 2026-04-24 13:10:59 +02:00
asyn-thrdd.c socket: use name sockerr for socket error variables 2026-06-14 14:17:07 +02:00
asyn.h resolve: pass bool for proxy resolves 2026-04-24 13:10:59 +02:00
bufq.c
bufq.h tidy-up: miscellaneous 2026-05-20 00:50:43 +02:00
bufref.c
bufref.h
cf-dns.c cf-dns: pass peer for result lookups 2026-06-16 23:15:43 +02:00
cf-dns.h cf-dns: pass peer for result lookups 2026-06-16 23:15:43 +02:00
cf-h1-proxy.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
cf-h1-proxy.h HTTP/3: add proxy CONNECT and MASQUE CONNECT-UDP support (ngtcp2 QUIC) 2026-05-27 08:49:53 +02:00
cf-h2-proxy.c src: sync nghttp2 versions checks with current requirements 2026-06-17 14:37:54 +02:00
cf-h2-proxy.h HTTP/3: add proxy CONNECT and MASQUE CONNECT-UDP support (ngtcp2 QUIC) 2026-05-27 08:49:53 +02:00
cf-haproxy.c tidy-up: miscellaneous 2026-06-09 11:07:55 +02:00
cf-haproxy.h
cf-https-connect.c cf-dns: pass peer for result lookups 2026-06-16 23:15:43 +02:00
cf-https-connect.h
cf-ip-happy.c cf-dns: pass peer for result lookups 2026-06-16 23:15:43 +02:00
cf-ip-happy.h cf-ip-happy: update documentation 2026-06-11 10:06:09 +02:00
cf-recvbuf.c websockets: buffer ugprade data at connection level 2026-06-22 08:54:50 +02:00
cf-recvbuf.h websockets: buffer ugprade data at connection level 2026-06-22 08:54:50 +02:00
cf-setup.c cf-setup: own source file 2026-06-15 15:55:58 +02:00
cf-setup.h cf-setup: own source file 2026-06-15 15:55:58 +02:00
cf-socket.c socket: use name sockerr for socket error variables 2026-06-14 14:17:07 +02:00
cf-socket.h cf-socket: make Curl_addr2string static 2026-06-11 08:15:31 +02:00
cfilters.c websockets: buffer ugprade data at connection level 2026-06-22 08:54:50 +02:00
cfilters.h websockets: buffer ugprade data at connection level 2026-06-22 08:54:50 +02:00
CMakeLists.txt tidy-up: prefer spelling 'flavor', where missing 2026-06-15 03:28:42 +02:00
config-mac.h
config-os400.h tidy-up: miscellaneous 2026-06-01 22:33:57 +02:00
config-riscos.h
config-win32.h
conncache.c tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
conncache.h tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
connect.c cf-setup: own source file 2026-06-15 15:55:58 +02:00
connect.h cf-setup: own source file 2026-06-15 15:55:58 +02:00
content_encoding.c content_encoding: fix non-last chunked rejection 2026-06-11 13:21:09 +02:00
content_encoding.h
cookie.c cookie: check __Secure- and __Host- case sensitively when read from file 2026-06-18 23:58:07 +02:00
cookie.h cookie: use origin scheme for secure context check 2026-06-15 22:30:14 +02:00
creds.c creds: create with empty user+pass 2026-06-17 07:54:11 +02:00
creds.h http: for basic+digest auth, do not engage on empty user+passwd 2026-06-17 14:05:03 +02:00
cshutdn.c cfilters: remove close method 2026-06-02 08:27:00 +02:00
cshutdn.h tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
curl_addrinfo.c tidy-up: drop redundant != NULL syntax 2026-06-09 14:37:36 +02:00
curl_addrinfo.h lib: introduce Curl_peer 2026-05-05 16:22:11 +02:00
curl_config-cmake.h.in tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
curl_ctype.h
curl_endian.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
curl_endian.h
curl_fnmatch.c tidy-up: drop stray comparisons with literal zero 2026-06-10 15:15:54 +02:00
curl_fnmatch.h
curl_fopen.c tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
curl_fopen.h
curl_get_line.c
curl_get_line.h
curl_gethostname.c
curl_gethostname.h
curl_gssapi.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
curl_gssapi.h
curl_hmac.h tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
curl_ldap.h
curl_md4.h
curl_md5.h tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
curl_memrchr.c
curl_memrchr.h
curl_ntlm_core.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
curl_ntlm_core.h tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
curl_printf.h
curl_range.c
curl_range.h
curl_sasl.c tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
curl_sasl.h
curl_setup.h tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
curl_sha256.h
curl_sha512_256.c tidy-up: drop redundant != NULL syntax 2026-06-09 14:37:36 +02:00
curl_sha512_256.h
curl_share.c tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
curl_share.h tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
curl_sspi.c
curl_sspi.h windows: update MS SDK versions in comments 2026-05-15 03:41:33 +02:00
curl_threads.c
curl_threads.h
curl_trc.c websockets: buffer ugprade data at connection level 2026-06-22 08:54:50 +02:00
curl_trc.h
cw-out.c docs: tidy-up scheme references 2026-05-19 16:55:45 +02:00
cw-out.h
cw-pause.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
cw-pause.h
dict.c tidy-up: miscellaneous 2026-05-20 00:50:43 +02:00
dict.h
dllmain.c tidy-up: sort TLS backends, distros, alphabetically 2026-05-11 11:57:25 +02:00
dnscache.c tidy-up: miscellaneous 2026-06-09 11:07:55 +02:00
dnscache.h dnscache: remove Curl_dns_entry_link 2026-05-27 23:13:19 +02:00
doh.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
doh.h tidy-up: miscellaneous 2026-05-16 01:56:17 +02:00
dynhds.c
dynhds.h
easy.c hsts: duplicate live HSTS data in curl_easy_duphandle 2026-06-09 16:51:47 +02:00
easy_lock.h
easygetopt.c
easyif.h
easyoptions.c
easyoptions.h
escape.c
escape.h
fake_addrinfo.c tidy-up: drop redundant != NULL syntax 2026-06-09 14:37:36 +02:00
fake_addrinfo.h
file.c
file.h
fileinfo.c
fileinfo.h
formdata.c curl_formdata: fix to pass long where missing, document CURLFORM_NAMELENGTH 2026-06-15 16:57:21 +02:00
formdata.h
ftp-int.h tidy-up: miscellaneous 2026-05-20 00:50:43 +02:00
ftp.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
ftp.h
ftplistparser.c tidy-up: drop stray comparisons with literal zero 2026-06-10 15:15:54 +02:00
ftplistparser.h
functypes.h tidy-up: prefer spelling 'flavor', where missing 2026-06-15 03:28:42 +02:00
getenv.c
getinfo.c tidy-up: use curlx_safefree() 2026-05-21 01:31:03 +02:00
getinfo.h
gopher.c badwords: prefer 'workaround' (without hyphen) 2026-05-31 22:05:54 +02:00
gopher.h
hash.c
hash.h
headers.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
headers.h
hmac.c
hostip.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
hostip.h hostip: convert Curl_resolv_unix to static resolv_unix 2026-05-05 17:49:12 +02:00
hostip4.c tidy-up: prefer spelling 'flavor', where missing 2026-06-15 03:28:42 +02:00
hostip6.c
hsts.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
hsts.h hsts: duplicate live HSTS data in curl_easy_duphandle 2026-06-09 16:51:47 +02:00
http.c http: for basic+digest auth, do not engage on empty user+passwd 2026-06-17 14:05:03 +02:00
http.h chunked: reject invalid bytes in trailer 2026-06-08 13:56:10 +02:00
http1.c
http1.h
http2.c src: sync nghttp2 versions checks with current requirements 2026-06-17 14:37:54 +02:00
http2.h
http_aws_sigv4.c lib: transfer origin and proxy handling 2026-06-12 23:52:00 +02:00
http_aws_sigv4.h
http_chunks.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
http_chunks.h
http_digest.c lib: transfer origin and proxy handling 2026-06-12 23:52:00 +02:00
http_digest.h
http_negotiate.c url: connection credentials origin 2026-06-16 15:57:10 +02:00
http_negotiate.h
http_ntlm.c url: connection credentials origin 2026-06-16 15:57:10 +02:00
http_ntlm.h
http_proxy.c lib: transfer origin and proxy handling 2026-06-12 23:52:00 +02:00
http_proxy.h lib: transfer origin and proxy handling 2026-06-12 23:52:00 +02:00
httpsrr.c lib: introduce Curl_peer 2026-05-05 16:22:11 +02:00
httpsrr.h tidy-up: whitespace 2026-04-27 13:34:27 +02:00
idn.c lib: introduce Curl_peer 2026-05-05 16:22:11 +02:00
idn.h idn: replace header guards with forward declaration 2026-05-11 17:01:34 +02:00
if2ip.c tidy-up: drop redundant != NULL syntax 2026-06-09 14:37:36 +02:00
if2ip.h badwords: prefer 'workaround' (without hyphen) 2026-05-31 22:05:54 +02:00
imap.c transfer: adapt Curl_xfer_is_secure() 2026-06-15 13:41:26 +02:00
imap.h
ldap.c winldap: avoid NULL pointer deref on ldap_get_dn() fail 2026-06-15 18:38:29 +02:00
libcurl.def
libcurl.rc
libcurl.vers.in
llist.c llist: constify struct pointers 2026-05-13 17:40:42 +02:00
llist.h llist: constify struct pointers 2026-05-13 17:40:42 +02:00
macos.c
macos.h
Makefile.am
Makefile.inc websockets: buffer ugprade data at connection level 2026-06-22 08:54:50 +02:00
Makefile.soname
md4.c gnutls: fix more nettle 4+ compatibility issues 2026-05-12 05:33:08 +02:00
md5.c tidy-up: miscellaneous 2026-05-27 16:53:57 +02:00
memdebug.c tidy-up: drop redundant != NULL syntax 2026-06-09 14:37:36 +02:00
mime.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
mime.h
mprintf.c tidy-up: miscellaneous 2026-06-05 16:57:38 +02:00
mqtt.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
mqtt.h
multi.c multi: xfers_really_alive 2026-06-18 10:31:40 +02:00
multi_ev.c multi_ev: silence clang-tidy nonsense 2026-05-26 13:01:30 +02:00
multi_ev.h
multi_ntfy.c
multi_ntfy.h
multihandle.h multi: xfers_really_alive 2026-06-18 10:31:40 +02:00
multiif.h
netrc.c netrc: remember and check filename loaded 2026-06-08 13:53:02 +02:00
netrc.h netrc: scanner refactor 2026-05-18 15:18:09 +02:00
openldap.c ngtcp2: share common functionality 2026-06-10 13:28:05 +02:00
optiontable.pl tidy-up: add spaces around equal operators where missing 2026-06-11 19:52:01 +02:00
parsedate.c GHA: enable -Wunused-macros in clang-tidy jobs 2026-05-16 01:17:41 +02:00
parsedate.h
peer.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
peer.h tidy-up: miscellaneous 2026-06-11 19:48:07 +02:00
pingpong.c pingpong: reject nul byte in server response line 2026-06-18 14:17:27 +02:00
pingpong.h tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
pop3.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
pop3.h
progress.c tidy-up: miscellaneous 2026-06-09 11:07:55 +02:00
progress.h progress: fx CURLINFO time reporting 2026-06-07 14:39:10 +02:00
protocol.c websockets: auto-tunnel through http proxy 2026-05-20 11:50:35 +02:00
protocol.h websockets: auto-tunnel through http proxy 2026-05-20 11:50:35 +02:00
proxy.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
proxy.h tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
psl.c tidy-up: drop redundant != NULL syntax 2026-06-09 14:37:36 +02:00
psl.h
rand.c tidy-up: miscellaneous 2026-06-09 11:07:55 +02:00
rand.h tidy-up: miscellaneous 2026-06-09 11:07:55 +02:00
ratelimit.c ratelimits: use minimal burst rate 2026-06-15 15:59:10 +02:00
ratelimit.h
request.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
request.h auth: cleanups 2026-05-07 14:03:00 +02:00
rtsp.c tidy-up: drop stray comparisons with literal zero 2026-06-10 15:15:54 +02:00
rtsp.h
select.c
select.h tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
sendf.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
sendf.h tidy-up: miscellaneous 2026-06-01 22:33:57 +02:00
setopt.c setopt: make CURLOPT_KEYPASSWD work for SSH-only builds 2026-06-22 00:28:28 +02:00
setopt.h
setup-os400.h
setup-vms.h
setup-win32.h
sha256.c tidy-up: miscellaneous 2026-05-27 16:53:57 +02:00
sigpipe.h
slist.c
slist.h
smb.c smb: constify strchr() result variable 2026-06-18 21:12:17 +02:00
smb.h
smtp.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
smtp.h
sockaddr.h cf-socket: make Curl_addr2string static 2026-06-11 08:15:31 +02:00
socketpair.c socket: use name sockerr for socket error variables 2026-06-14 14:17:07 +02:00
socketpair.h tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
socks.c cf-dns: pass peer for result lookups 2026-06-16 23:15:43 +02:00
socks.h creds: add sasl service name 2026-05-13 14:04:17 +02:00
socks_gssapi.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
socks_sspi.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
splay.c
splay.h
strcase.c
strcase.h
strequal.c
strerror.c build: enable -Wformat-signedness, fix issues found 2026-06-10 15:14:08 +02:00
strerror.h
system_win32.c
system_win32.h
telnet.c tidy-up: miscellaneous 2026-06-14 20:10:28 +02:00
telnet.h
tftp.c socket: use name sockerr for socket error variables 2026-06-14 14:17:07 +02:00
tftp.h
thrdpool.c tidy-up: rename more CURLcode variables to result 2026-05-19 16:55:45 +02:00
thrdpool.h
thrdqueue.c thrdqueue: make thrdq_await_done only for unit tests 2026-05-05 08:55:49 +02:00
thrdqueue.h thrdqueue.h: minor language polish in comments 2026-05-05 14:34:27 +02:00
transfer.c transfer: adapt Curl_xfer_is_secure() 2026-06-15 13:41:26 +02:00
transfer.h transfer: adapt Curl_xfer_is_secure() 2026-06-15 13:41:26 +02:00
uint-bset.c tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
uint-bset.h
uint-hash.c
uint-hash.h
uint-spbset.c tidy-up: apply clang-format fixes 2026-05-28 00:05:47 +02:00
uint-spbset.h
uint-table.c
uint-table.h
url.c proxy: fix automatic tunnel mode with "connect to host" 2026-06-22 08:53:31 +02:00
url.h lib: introduce Curl_peer 2026-05-05 16:22:11 +02:00
urlapi-int.h urlapi: same origin tests 2026-04-16 15:00:43 +02:00
urlapi.c urlapi: refactor and simplify curl_url_set 2026-06-15 08:33:19 +02:00
urldata.h multi: xfers_really_alive 2026-06-18 10:31:40 +02:00
version.c tidy-up: drop redundant != NULL syntax 2026-06-09 14:37:36 +02:00
ws.c websockets: buffer ugprade data at connection level 2026-06-22 08:54:50 +02:00
ws.h