summaryrefslogtreecommitdiff
path: root/docs/KNOWN_BUGS
blob: ec5c6739125bbd63039821c9cbd0183185a76e3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Known Bugs

These are problems and bugs known to exist at the time of this release. Feel
free to join in and help us correct one or more of these. Also be sure to
check the changelog of the current development status, as one or more of these
problems may have been fixed or changed somewhat since this was written.

 1. HTTP

 2. TLS
 2.1 IMAPS connection fails with Rustls error
 2.5 Client cert handling with Issuer DN differs between backends
 2.7 Client cert (MTLS) issues with Schannel
 2.11 Schannel TLS 1.2 handshake bug in old Windows versions
 2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
 2.14 mbedTLS and CURLE_AGAIN handling

 3. Email protocols
 3.1 IMAP SEARCH ALL truncated response
 3.2 No disconnect command
 3.4 AUTH PLAIN for SMTP is not working on all servers
 3.5 APOP authentication fails on POP3
 3.6 POP3 issue when reading small chunks

 4. Command line
 4.1 -T /dev/stdin may upload with an incorrect content length
 4.2 -T - always uploads chunked

 5. Build and portability issues
 5.1 OS400 port requires deprecated IBM library
 5.2 curl-config --libs contains private details
 5.3 LDFLAGS passed too late making libs linked incorrectly
 5.6 Cygwin: make install installs curl-config.1 twice
 5.11 configure --with-gssapi with Heimdal is ignored on macOS
 5.12 flaky CI builds
 5.13 long paths are not fully supported on Windows
 5.15 Unicode on Windows

 6. Authentication
 6.2 MIT Kerberos for Windows build
 6.3 NTLM in system context uses wrong name
 6.5 NTLM does not support password with Unicode 'SECTION SIGN' character
 6.6 libcurl can fail to try alternatives with --proxy-any
 6.7 Do not clear digest for single realm
 6.8 Heimdal memory leaks
 6.9 SHA-256 digest not supported in Windows SSPI builds
 6.10 curl never completes Negotiate over HTTP
 6.11 Negotiate on Windows fails
 6.13 Negotiate against Hadoop HDFS

 7. FTP
 7.4 FTP with ACCT
 7.12 FTPS directory listing hangs on Windows with Schannel

 9. SFTP and SCP
 9.1 SFTP does not do CURLOPT_POSTQUOTE correct
 9.2 wolfssh: publickey auth does not work
 9.3 Remote recursive folder creation with SFTP
 9.4 libssh blocking and infinite loop problem
 9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
 9.6 wolfssh: all tests fail

 10. Connection
 10.1 --interface with link-scoped IPv6 address
 10.2 Does not acknowledge getaddrinfo sorting policy

 11. Internals
 11.1 gssapi library name + version is missing in curl_version_info()
 11.2 error buffer not set if connection to multiple addresses fails
 11.4 HTTP test server 'connection-monitor' problems
 11.5 Connection information when using TCP Fast Open
 11.6 test cases sometimes timeout
 11.7 CURLOPT_CONNECT_TO does not work for HTTPS proxy
 11.8 WinIDN test failures
 11.9 setting a disabled option should return CURLE_NOT_BUILT_IN

 12. LDAP
 12.1 OpenLDAP hangs after returning results
 12.2 LDAP on Windows does authentication wrong?
 12.3 LDAP on Windows does not work
 12.4 LDAPS requests to ActiveDirectory server hang

 13. TCP/IP
 13.2 Trying local ports fails on Windows

 15. CMake
 15.1 cmake outputs: no version information available
 15.6 uses -lpthread instead of Threads::Threads
 15.7 generated .pc file contains strange entries
 15.13 CMake build with MIT Kerberos does not work

 16. aws-sigv4
 16.2 aws-sigv4 does not handle multipart/form-data correctly

 17. HTTP/2
 17.1 HTTP/2 prior knowledge over proxy
 17.2 HTTP/2 frames while in the connection pool kill reuse
 17.3 ENHANCE_YOUR_CALM causes infinite retries
 17.4 HTTP/2 + TLS spends a lot of time in recv

 18. HTTP/3
 18.1 connection migration does not work
 18.2 quiche: QUIC connection is draining

 19. RTSP
 19.1 Some methods do not support response bodies

==============================================================================

1. HTTP

2. TLS

2.1 IMAPS connection fails with Rustls error

 https://github.com/curl/curl/issues/10457

2.5 Client cert handling with Issuer DN differs between backends

 When the specified client certificate does not match any of the
 server-specified DNs, the OpenSSL and GnuTLS backends behave differently.
 The github discussion may contain a solution.

 See https://github.com/curl/curl/issues/1411

2.7 Client cert (MTLS) issues with Schannel

 See https://github.com/curl/curl/issues/3145

2.11 Schannel TLS 1.2 handshake bug in old Windows versions

 In old versions of Windows such as 7 and 8.1 the Schannel TLS 1.2 handshake
 implementation likely has a bug that can rarely cause the key exchange to
 fail, resulting in error SEC_E_BUFFER_TOO_SMALL or SEC_E_MESSAGE_ALTERED.

 https://github.com/curl/curl/issues/5488

2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel

 https://github.com/curl/curl/issues/8741

2.14 mbedTLS and CURLE_AGAIN handling

 https://github.com/curl/curl/issues/15801

3. Email protocols

3.1 IMAP SEARCH ALL truncated response

 IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
 code reveals that pingpong.c contains some truncation code, at line 408, when
 it deems the server response to be too large truncating it to 40 characters"
 https://curl.se/bug/view.cgi?id=1366

3.2 No disconnect command

 The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and
 SMTP if a failure occurs during the authentication phase of a connection.

3.4 AUTH PLAIN for SMTP is not working on all servers

 Specifying "--login-options AUTH=PLAIN" on the command line does not seem to
 work correctly.

 See https://github.com/curl/curl/issues/4080

3.5 APOP authentication fails on POP3

 See https://github.com/curl/curl/issues/10073

3.6 POP3 issue when reading small chunks

 CURL_DBG_SOCK_RMAX=4 ./runtests.pl -v 982

 See https://github.com/curl/curl/issues/12063

4. Command line

4.1 -T /dev/stdin may upload with an incorrect content length

 -T stats the path to figure out its size in bytes to use it as Content-Length
 if it is a regular file.

 The problem with that is that, on BSDs and some other UNIXes (not Linux),
 open(path) may not give you a file descriptor with a 0 offset from the start
 of the file.

 See https://github.com/curl/curl/issues/12177

4.2 -T - always uploads chunked

 When the `<` shell operator is used. curl should realise that stdin is a
 regular file in this case, and that it can do a non-chunked upload, like it
 would do if you used -T file.

 See https://github.com/curl/curl/issues/12171

5. Build and portability issues

5.1 OS400 port requires deprecated IBM library

 curl for OS400 requires QADRT to build, which provides ASCII wrappers for
 libc/POSIX functions in the ILE, but IBM no longer supports or even offers
 this library to download.

 See https://github.com/curl/curl/issues/5176

5.2 curl-config --libs contains private details

 "curl-config --libs" include details set in LDFLAGS when configure is run
 that might be needed only for building libcurl. Further, curl-config --cflags
 suffers from the same effects with CFLAGS/CPPFLAGS.

5.3 LDFLAGS passed too late making libs linked incorrectly

 Compiling latest curl on HP-UX and linking against a custom OpenSSL (which is
 on the default loader/linker path), fails because the generated Makefile has
 LDFLAGS passed on after LIBS.

 See https://github.com/curl/curl/issues/14893

5.6 Cygwin: make install installs curl-config.1 twice

 https://github.com/curl/curl/issues/8839

5.11 configure --with-gssapi with Heimdal is ignored on macOS

 ... unless you also pass --with-gssapi-libs

 https://github.com/curl/curl/issues/3841

5.12 flaky CI builds

 We run many CI builds for each commit and PR on github, and especially a
 number of the Windows builds are flaky. This means that we rarely get all CI
 builds go green and complete without errors. This is unfortunate as it makes
 us sometimes miss actual build problems and it is surprising to newcomers to
 the project who (rightfully) do not expect this.

 See https://github.com/curl/curl/issues/6972

5.13 long paths are not fully supported on Windows

 curl on Windows cannot access long paths (paths longer than 260 characters).
 However, as a workaround, the Windows path prefix \\?\ which disables all
 path interpretation may work to allow curl to access the path. For example:
 \\?\c:\longpath.

 See https://github.com/curl/curl/issues/8361

5.15 Unicode on Windows

 Passing in a Unicode filename with -o:

 https://github.com/curl/curl/issues/11461

 Passing in Unicode character with -d:

 https://github.com/curl/curl/issues/12231

 Windows Unicode builds use homedir in current locale

 The Windows Unicode builds of curl use the current locale, but expect Unicode
 UTF-8 encoded paths for internal use such as open, access and stat. The
 user's home directory is retrieved via curl_getenv in the current locale and
 not as UTF-8 encoded Unicode.

 See https://github.com/curl/curl/pull/7252 and
     https://github.com/curl/curl/pull/7281

 Cannot handle Unicode arguments in non-Unicode builds on Windows

 If a URL or filename cannot be encoded using the user's current codepage then
 it can only be encoded properly in the Unicode character set. Windows uses
 UTF-16 encoding for Unicode and stores it in wide characters, however curl
 and libcurl are not equipped for that at the moment except when built with
 _UNICODE and UNICODE defined. Except for Cygwin, Windows cannot use UTF-8 as
 a locale.

  https://curl.se/bug/?i=345
  https://curl.se/bug/?i=731
  https://curl.se/bug/?i=3747

 NTLM authentication and Unicode

 NTLM authentication involving Unicode username or password only works
 properly if built with UNICODE defined together with the Schannel backend.
 The original problem was mentioned in:
 https://curl.se/mail/lib-2009-10/0024.html
 https://curl.se/bug/view.cgi?id=896

 The Schannel version verified to work as mentioned in
 https://curl.se/mail/lib-2012-07/0073.html

6. Authentication

6.2 MIT Kerberos for Windows build

 libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
 library header files exporting symbols/macros that should be kept private to
 the KfW library. See ticket #5601 at https://krbdev.mit.edu/rt/

6.3 NTLM in system context uses wrong name

 NTLM authentication using SSPI (on Windows) when (lib)curl is running in
 "system context" makes it use wrong(?) username - at least when compared to
 what winhttp does. See https://curl.se/bug/view.cgi?id=535

6.5 NTLM does not support password with Unicode 'SECTION SIGN' character

 https://en.wikipedia.org/wiki/Section_sign
 https://codepoints.net/U+00A7 SECTION SIGN
 https://github.com/curl/curl/issues/2120

6.6 libcurl can fail to try alternatives with --proxy-any

 When connecting via a proxy using --proxy-any, a failure to establish an
 authentication causes libcurl to abort trying other options if the failed
 method has a higher preference than the alternatives. As an example,
 --proxy-any against a proxy which advertise Negotiate and NTLM, but which
 fails to set up Kerberos authentication does not proceed to try
 authentication using NTLM.

 https://github.com/curl/curl/issues/876

6.7 Do not clear digest for single realm

 https://github.com/curl/curl/issues/3267

6.8 Heimdal memory leaks

 Running test 2077 and 2078 with curl built to do GSS with Heimdal causes
 valgrind errors (memory leak).

 https://github.com/curl/curl/issues/14446

6.9 SHA-256 digest not supported in Windows SSPI builds

 Windows builds of curl that have SSPI enabled use the native Windows API calls
 to create authentication strings. The call to InitializeSecurityContext fails
 with SEC_E_QOP_NOT_SUPPORTED which causes curl to fail with CURLE_AUTH_ERROR.

 Microsoft does not document supported digest algorithms and that SEC_E error
 code is not a documented error for InitializeSecurityContext (digest).

 https://github.com/curl/curl/issues/6302

6.10 curl never completes Negotiate over HTTP

 Apparently it is not working correctly...?

 See https://github.com/curl/curl/issues/5235

6.11 Negotiate on Windows fails

 When using --negotiate (or NTLM) with curl on Windows, SSL/TLS handshake
 fails despite having a valid kerberos ticket cached. Works without any issue
 in Unix/Linux.

 https://github.com/curl/curl/issues/5881

6.13 Negotiate authentication against Hadoop HDFS

 https://github.com/curl/curl/issues/8264

7. FTP

7.4 FTP with ACCT

 When doing an operation over FTP that requires the ACCT command (but not when
 logging in), the operation fails since libcurl does not detect this and thus
 fails to issue the correct command: https://curl.se/bug/view.cgi?id=635

7.12 FTPS server compatibility on Windows with Schannel

 FTPS is not widely used with the Schannel TLS backend and so there may be
 more bugs compared to other TLS backends such as OpenSSL. In the past users
 have reported hanging and failed connections. It is likely some changes to
 curl since then fixed the issues. None of the reported issues can be
 reproduced any longer.

 If you encounter an issue connecting to your server via FTPS with the latest
 curl and Schannel then please search for open issues or file a new issue.

9. SFTP and SCP

9.1 SFTP does not do CURLOPT_POSTQUOTE correct

 When libcurl sends CURLOPT_POSTQUOTE commands when connected to an SFTP
 server using the multi interface, the commands are not being sent correctly
 and instead the connection is "cancelled" (the operation is considered done)
 prematurely. There is a half-baked (busy-looping) patch provided in the bug
 report but it cannot be accepted as-is. See
 https://curl.se/bug/view.cgi?id=748

9.2 wolfssh: publickey auth does not work

 When building curl to use the wolfSSH backend for SFTP, the publickey
 authentication does not work. This is simply functionality not written for curl
 yet, the necessary API for make this work is provided by wolfSSH.

 See https://github.com/curl/curl/issues/4820

9.3 Remote recursive folder creation with SFTP

 On this servers, the curl fails to create directories on the remote server
 even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set.

 See https://github.com/curl/curl/issues/5204

9.4 libssh blocking and infinite loop problem

 In the SSH_SFTP_INIT state for libssh, the ssh session working mode is set to
 blocking mode. If the network is suddenly disconnected during sftp
 transmission, curl is stuck, even if curl is configured with a timeout.

 https://github.com/curl/curl/issues/8632

9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"

 Running SCP and SFTP tests on Cygwin makes this warning message appear.

 https://github.com/curl/curl/issues/11244

9.6 wolfssh: all tests fail

 Something fundamental stops them all from working properly.

 https://github.com/curl/curl/issues/16794

10. Connection

10.1 --interface with link-scoped IPv6 address

 When you give the `--interface` option telling curl to use a specific
 interface for its outgoing traffic in combination with an IPv6 address in the
 URL that uses a link-local scope, curl might pick the wrong address from the
 named interface and the subsequent transfer fails.

 Example command line:

    curl --interface eth0 'http://[fe80:928d:xxff:fexx:xxxx]/'

 The fact that the given IP address is link-scoped should probably be used as
 input to somehow make curl make a better choice for this.

 https://github.com/curl/curl/issues/14782

10.2 Does not acknowledge getaddrinfo sorting policy

 Even if a user edits /etc/gai.conf to prefer IPv4, curl still prefers and
 tries IPv6 addresses first.

 https://github.com/curl/curl/issues/16718

11. Internals

11.1 gssapi library name + version is missing in curl_version_info()

 The struct needs to be expanded and code added to store this info.

 See https://github.com/curl/curl/issues/13492

11.2 error buffer not set if connection to multiple addresses fails

 If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
 when you only have IPv4 connectivity. libcurl fails with
 CURLE_COULDNT_CONNECT, but the error buffer set by CURLOPT_ERRORBUFFER
 remains empty. Issue: https://github.com/curl/curl/issues/544

11.4 HTTP test server 'connection-monitor' problems

 The 'connection-monitor' feature of the sws HTTP test server does not work
 properly if some tests are run in unexpected order. Like 1509 and then 1525.

 See https://github.com/curl/curl/issues/868

11.5 Connection information when using TCP Fast Open

 CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is
 enabled.

 See https://github.com/curl/curl/issues/1332 and
 https://github.com/curl/curl/issues/4296

11.6 test cases sometimes timeout

 Occasionally, one of the tests timeouts. Inexplicably.

 See https://github.com/curl/curl/issues/13350

11.7 CURLOPT_CONNECT_TO does not work for HTTPS proxy

 It is unclear if the same option should even cover the proxy connection or if
 if requires a separate option.

 See https://github.com/curl/curl/issues/14481

11.8 WinIDN test failures

 Test 165 disabled when built with WinIDN.

11.9 setting a disabled option should return CURLE_NOT_BUILT_IN

 When curl has been built with specific features or protocols disabled,
 setting such options with curl_easy_setopt() should rather return
 CURLE_NOT_BUILT_IN instead of CURLE_UNKNOWN_OPTION to signal the difference
 to the application

 See https://github.com/curl/curl/issues/15472

12. LDAP

12.1 OpenLDAP hangs after returning results

 By configuration defaults, OpenLDAP automatically chase referrals on
 secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
 should monitor all socket descriptors involved. Currently, these secondary
 descriptors are not monitored, causing OpenLDAP library to never receive
 data from them.

 As a temporary workaround, disable referrals chasing by configuration.

 The fix is not easy: proper automatic referrals chasing requires a
 synchronous bind callback and monitoring an arbitrary number of socket
 descriptors for a single easy handle (currently limited to 5).

 Generic LDAP is synchronous: OK.

 See https://github.com/curl/curl/issues/622 and
     https://curl.se/mail/lib-2016-01/0101.html

12.2 LDAP on Windows does authentication wrong?

 https://github.com/curl/curl/issues/3116

12.3 LDAP on Windows does not work

 A simple curl command line getting "ldap://ldap.forumsys.com" returns an
 error that says "no memory" !

 https://github.com/curl/curl/issues/4261

12.4 LDAPS requests to ActiveDirectory server hang

 https://github.com/curl/curl/issues/9580

13. TCP/IP

13.2 Trying local ports fails on Windows

 This makes '--local-port [range]' to not work since curl cannot properly
 detect if a port is already in use, so it tries the first port, uses that and
 then subsequently fails anyway if that was actually in use.

 https://github.com/curl/curl/issues/8112

15. CMake

15.1 cmake outputs: no version information available

 Something in the SONAME generation seems to be wrong in the cmake build.

 https://github.com/curl/curl/issues/11158

15.6 uses -lpthread instead of Threads::Threads

 See https://github.com/curl/curl/issues/6166

15.7 generated .pc file contains strange entries

 The Libs.private field of the generated .pc file contains -lgcc -lgcc_s -lc
 -lgcc -lgcc_s

 See https://github.com/curl/curl/issues/6167

15.13 CMake build with MIT Kerberos does not work

 Minimum CMake version was bumped in curl 7.71.0 (#5358) Since CMake 3.2
 try_compile started respecting the CMAKE_EXE_FLAGS. The code dealing with
 MIT Kerberos detection sets few variables to potentially weird mix of space,
 and ;-separated flags. It had to blow up at some point. All the CMake checks
 that involve compilation are doomed from that point, the configured tree
 cannot be built.

 https://github.com/curl/curl/issues/6904

16. aws-sigv4

16.2 aws-sigv4 does not handle multipart/form-data correctly

 https://github.com/curl/curl/issues/13351

17. HTTP/2

17.1 HTTP/2 prior knowledge over proxy

 https://github.com/curl/curl/issues/12641

17.2 HTTP/2 frames while in the connection pool kill reuse

 If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
 curl while the connection is held in curl's connection pool, the socket is
 found readable when considered for reuse and that makes curl think it is dead
 and then it is closed and a new connection gets created instead.

 This is *best* fixed by adding monitoring to connections while they are kept
 in the pool so that pings can be responded to appropriately.

17.3 ENHANCE_YOUR_CALM causes infinite retries

 Infinite retries with 2 parallel requests on one connection receiving GOAWAY
 with ENHANCE_YOUR_CALM error code.

 See https://github.com/curl/curl/issues/5119

17.4 HTTP/2 + TLS spends a lot of time in recv

 It has been observed that by making the speed limit less accurate we could
 improve this performance. (by reverting
 https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b)
 Can we find a golden middle ground?

 See https://curl.se/mail/lib-2024-05/0026.html and
 https://github.com/curl/curl/issues/13416

18. HTTP/3

18.1 connection migration does not work

 https://github.com/curl/curl/issues/7695

18.2 quiche: QUIC connection is draining

 The transfer ends with error "QUIC connection is draining".

 https://github.com/curl/curl/issues/12037

19. RTSP

19.1 Some methods do not support response bodies

 The RTSP implementation is written to assume that a number of RTSP methods
 always get responses without bodies, even though there seems to be no
 indication in the RFC that this is always the case.

 https://github.com/curl/curl/issues/12414