LDAP fixed in CVS (for upcoming 7.10.8)
[platform/upstream/curl.git] / docs / KNOWN_BUGS
1 These are problems known to exist at the time of this release. Feel free to
2 join in and help us correct one or more of these! Also be sure to check the
3 changelog of the current development status, as one or more of these problems
4 may have been fixed since this was written!
5
6 * libcurl doesn't treat the content-length of compressed data properly, as
7   it seems HTTP servers send the *uncompressed* length in that header and
8   libcurl thinks of it as the *compressed* lenght. Some explanations are here:
9   http://curl.haxx.se/mail/lib-2003-06/0146.html
10
11 * Downloading 0 (zero) bytes files over FTP will not create a zero byte file
12   locally, which is because libcurl doesn't call the write callback with zero
13   bytes. Explained here: http://curl.haxx.se/mail/archive-2003-04/0143.html
14
15 * Using CURLOPT_FAILONERROR (-f/--fail) will make authentication to stop
16   working if you use anything but plain Basic auth.
17
18 * IPv6 support on AIX 4.3.3 doesn't work due to a missing sockaddr_storage
19   struct. It has been reported to work on AIX 5.1 though.
20
21 * Running 'make test' on Mac OS X gives 4 errors. This seems to be related
22   to some kind of libtool problem:
23   http://curl.haxx.se/mail/archive-2002-03/0029.html and
24   http://curl.haxx.se/mail/archive-2002-03/0033.html
25
26 * libcurl does not deal nicely with files larger than 2GB
27
28 * GOPHER transfers seem broken
29
30 * configure --disable-http is not fully supported. All other protocols seem
31   to work to disable.
32
33 * The -m parameter does not work when using telnet with curl on Windows.
34
35 * If a HTTP server responds to a HEAD request and includes a body (thus
36   violating the RFC2616), curl won't wait to read the response but just stop
37   reading and return back. If a second request (let's assume a GET) is then
38   immediately made to the same server again, the connection will be re-used
39   fine of course, and the second request will be sent off but when the
40   response is to get read, the previous response-body is what curl will read
41   and havoc is what happens.
42   More details on this is found in this libcurl mailing list thread:
43   http://curl.haxx.se/mail/lib-2002-08/0000.html
44
45 ------------------------------------------------------------------------------
46
47 Q: My program blows up when I run lots of curl_easy_perform() calls on a
48 single thread
49 Q: My program dies when a single thread re-enters the win32 select() call
50 via curl_easy_perform()
51 Q: --- add your own flavour here ---
52
53 Single Threaded Re-Entracy
54 --------------------------
55
56 There is a glitch / trick to using cURL on Win32 related to re-entrancy.
57 This experience was gained on verion 7.9.4 using Windows NT SP3 in a banking
58 environment (just in case you wanted to know).
59
60 If you have already called curl_easy_perform(), and *somehow* you cause your
61 single thread of execution to make another call to curl_easy_perform() - the
62 windows socket() call used to create a new socket for the second connection
63 can return with 10044 / 10043 error codes.
64
65 The WSA errors we experienced are:
66 WSAEPROTONOSUPPORT 
67 (10043) 
68 Protocol not supported. 
69 The requested protocol has not been configured into the system, or no
70 implementation for it exists. For example, a socket call requests a
71 SOCK_DGRAM socket, but specifies a stream protocol. 
72
73 WSAESOCKTNOSUPPORT 
74 (10044) 
75 Socket type not supported. 
76 The support for the specified socket type does not exist in this address
77 family. For example, the optional type SOCK_RAW might be selected in a
78 socket call, and the implementation does not support SOCK_RAW sockets at
79 all. 
80
81 We have experienced this by creating a timer that ticks every 20ms, and on
82 the tick making a curl_easy_perform() call.  The call usually completed in
83 about 300ms.  And we expected (before this test) that the timer would NOT be
84 fired during a call to curl_easy_perform(), howvever, while the first
85 curl_easy_perform() is running a tick *is* fired by the windows API somehow,
86 and we then call curl_easy_perform() again - thus single threaded
87 re-entrancy is achieved.
88
89 Notes:
90 * We made sure that a new CURL structure was being used for each
91 curl_easy_perform() request, and that the curl_global_init() had been called
92 beforehand.  
93 * I'm happy to answer any questions about this problem to try to track it
94 down.
95 * Once the socket() call started failing, there is no hope - it never works
96 again.
97 * Slowing the timer down to give each request enough time to complete solves
98 this problem completely.
99
100 If anyone has the source code to the WinNT implementation of socket() and
101 can figure out WHY this can occur, more tracing can be performed.
102
103         John Clayton <John.Clayton at barclayscapital.com>