~ubuntu-branches/ubuntu/lucid/curl/lucid-201101212007

« back to all changes in this revision

Viewing changes to CHANGES

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-05-16 15:16:54 UTC
  • mto: (3.1.1 lenny) (1.2.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 12.
  • Revision ID: james.westby@ubuntu.com-20070516151654-x9nkigtr2j0i8d0v
Tags: upstream-7.16.2
ImportĀ upstreamĀ versionĀ 7.16.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 
7
7
                                  Changelog
8
8
 
 
9
Version 7.16.2 (11 April 2007)
 
10
 
 
11
Yang Tse (10 April 2007)
 
12
- Ravi Pratap provided some fixes for HTTP pipelining
 
13
 
 
14
- configure script will ignore --enable-sspi option for non-native Windows.
 
15
 
 
16
Daniel S (9 April 2007)
 
17
- Nick Zitzmann did ssh.c cleanups
 
18
 
 
19
Daniel S (3 April 2007)
 
20
- Rob Jones fixed better #ifdef'ing for a bunch of #include lines.
 
21
 
 
22
Daniel S (2 April 2007)
 
23
- Nick Zitzmann made the CURLOPT_POSTQUOTE option work for SFTP as well. The
 
24
  accepted commands are as follows:
 
25
 
 
26
  chgrp (gid) (path)
 
27
    Changes the group ID of the file or directory at (path) to (gid). (gid)
 
28
    must be a number.
 
29
 
 
30
  chmod (perms) (path)
 
31
    Changes the permissions of the file or directory at (path) to
 
32
    (perms). (perms) must be a number in the format used by the chmod Unix
 
33
    command.
 
34
 
 
35
  chown (uid) (path)
 
36
    Changes the user ID of the file or directory at (path) to (uid). (uid)
 
37
    must be a number.
 
38
 
 
39
  ln (source) (dest)
 
40
    Creates a symbolic link at (dest) that points to the file located at
 
41
    (source).
 
42
 
 
43
  mkdir (path)
 
44
    Creates a new directory at (path).
 
45
 
 
46
  rename (source) (dest)
 
47
    Moves the file or directory at (source) to (dest).
 
48
 
 
49
  rm (path)
 
50
    Deletes the file located at (path).
 
51
 
 
52
  rmdir (path)
 
53
    Deletes the directory located at (path). This command will raise an error
 
54
    if the directory is not empty.
 
55
 
 
56
  symlink (source) (dest)
 
57
    Same as ln.
 
58
 
 
59
Daniel S (1 April 2007)
 
60
- Robert Iakobashvili made curl_multi_remove_handle() a lot faster when many
 
61
  easy handles are added to a multi handle, by avoiding the looping over all
 
62
  the handles to find which one to remove.
 
63
 
 
64
- Matt Kraai provided a patch that makes curl build on QNX 6 fine again.
 
65
 
 
66
Daniel S (31 March 2007)
 
67
- Fixed several minor issues detected by the coverity.com scanner.
 
68
 
 
69
- "Pixel" fixed a problem that appeared when you used -f with user+password
 
70
  embedded in the URL.
 
71
 
 
72
Dan F (29 March 2007)
 
73
- Don't tear down the ftp connection if the maximum filesize was exceeded
 
74
  and added tests 290 and 291 to check.
 
75
 
 
76
- Added ftps upload and SSL required tests 401 and 402.
 
77
 
 
78
- Send an EOF message before closing an SCP channel, as recommended by
 
79
  RFC4254. Enable libssh2 tracing when ssh debugging is turned on.
 
80
 
 
81
Yang Tse (27 March 2007)
 
82
- Internal function Curl_select() renamed to Curl_socket_ready()
 
83
 
 
84
  New Internal wrapper function Curl_select() around select (2), it
 
85
  uses poll() when a fine poll() is available, so now libcurl can be
 
86
  built without select() support at all if a fine poll() is available.
 
87
 
 
88
Daniel S (25 March 2007)
 
89
- Daniel Johnson fixed multi code to traverse the easy handle list properly.
 
90
  A left-over bug from the February 21 fix.
 
91
 
 
92
Dan F (23 March 2007)
 
93
- Added --pubkey option to curl and made --key also work for SCP/SFTP,
 
94
  plus made --pass work on an SSH private key as well.
 
95
 
 
96
- Changed the test harness to attempt to gracefully shut down servers
 
97
  before resorting to the kill -9 hammer.
 
98
 
 
99
- Added test harness infrastructure to support scp/sftp tests, using
 
100
  OpenSSH as the server.
 
101
 
 
102
- Fixed a memory leak when specifying a proxy with a file: URL.
 
103
 
 
104
Yang Tse (20 March 2007)
 
105
- Fixed: When a signal was caught awaiting for an event using Curl_select()
 
106
  or Curl_poll() with a non-zero timeout both functions would restart the
 
107
  specified timeout. This could even lead to the extreme case that if a
 
108
  signal arrived with a frecuency lower to the specified timeout neither
 
109
  function would ever exit.
 
110
 
 
111
  Added experimental symbol definition check CURL_ACKNOWLEDGE_EINTR in
 
112
  Curl_select() and Curl_poll(). When compiled with CURL_ACKNOWLEDGE_EINTR
 
113
  defined both functions will return as soon as a signal is caught. Use it
 
114
  at your own risk, all calls to these functions in the library should be
 
115
  revisited and checked before fully supporting this feature.
 
116
 
 
117
Yang Tse (19 March 2007)
 
118
- Bryan Henderson fixed the progress function so that it can get called more
 
119
  frequently allowing same calling frecuency for the client progress callback.
 
120
  
 
121
Dan F (15 March 2007)
 
122
- Various memory leaks plugged and NULL pointer fixes made in the ssh code.
 
123
 
 
124
Daniel (15 March 2007)
 
125
- Nick made the curl tool accept globbing ranges that only is one number, i.e
 
126
  you can now use [1-1] without curl complaining.
 
127
 
 
128
Daniel (10 March 2007)
 
129
- Eygene Ryabinkin:
 
130
 
 
131
  The problem is the following: when we're calling Curl_done and it decides to
 
132
  keep the connection opened ('left intact'), then the caller is not notified
 
133
  that the connection was done via the NULLifying of the pointer, so some easy
 
134
  handle is keeping the pointer to this connection.
 
135
 
 
136
  Later ConnectionExists can select such connection for reuse even if we're
 
137
  not pipelining: pipeLen is zero, so the (pipeLen > 0 && !canPipeline) is
 
138
  false and we can reuse this connection for another easy handle. But thus the
 
139
  connection will be shared between two easy handles if the handle that wants
 
140
  to take the ownership is not the same as was not notified of the connection
 
141
  was done in Curl_done. And when some of these easy handles will get their
 
142
  connection really freed the another one will still keep the pointer.
 
143
 
 
144
  My fix was rather trivial: I just added the NULLification to the 'else'
 
145
  branch in the Curl_done. My tests with Git and ElectricFence showed no
 
146
  problems both for HTTP pulling and cloning. Repository size is about 250 Mb,
 
147
  so it was a considerable amount of Curl's work.
 
148
 
 
149
Dan F (9 March 2007)
 
150
- Updated the test harness to add a new "crypto" feature check and updated the
 
151
  appropriate test case to use it.  For now, this is treated the same as the
 
152
  "SSL" feature because curl doesn't list it separately.
 
153
 
 
154
Daniel (9 March 2007)
 
155
- Robert Iakobashvili fixed CURLOPT_INTERFACE for IPv6.
 
156
 
 
157
- Robert A. Monat improved the maketgz and VC6/8 generating to set the correct
 
158
  machine type too.
 
159
 
 
160
- Justin Fletcher fixed a file descriptor leak in the curl tool when trying to
 
161
  upload a file it couldn't open. Bug #1676581
 
162
  (http://curl.haxx.se/bug/view.cgi?id=1676581)
 
163
 
 
164
Dan F (9 March 2007)
 
165
- Updated the test harness to check for protocol support before running each
 
166
  test, fixing KNOWN_BUGS #11.
 
167
 
 
168
Dan F (7 March 2007)
 
169
- Reintroduced (after a 3 year hiatus) an FTPS test case (400) into the test
 
170
  harness.  It is very limited as it supports only ftps:// URLs with
 
171
  --ftp-ssl-control specified, which implicitly encrypts the control
 
172
  channel but not the data channels.  That allows stunnel to be used with
 
173
  an unmodified ftp server in exactly the same way that the test https
 
174
  server is set up.
 
175
 
 
176
Dan F (7 March 2007)
 
177
- Honour --ftp-ssl-control on ftps:// URLs to allow encrypted control and
 
178
  unencrypted data connections.
 
179
 
 
180
Dan F (6 March 2007)
 
181
- Fixed a couple of improper pointer uses detected by valgrind in test
 
182
  cases 181 & 216.
 
183
 
 
184
Daniel (2 March 2007)
 
185
- Robert A. Monat and Shmulik Regev helped out to fix the new */Makefile.vc8
 
186
  makefiles that are included in the source release archives, generated from
 
187
  the Makefile.vc6 files by the maketgz script. I also modified the root
 
188
  Makefile to have a VC variable that defaults to vc6 but can be overridden to
 
189
  allow it to be used for vc8 as well. Like this:
 
190
 
 
191
    nmake VC=vc8 vc
 
192
 
 
193
Daniel (27 February 2007)
 
194
- Hang Kin Lau found and fixed: When I use libcurl to connect to an https
 
195
  server through a proxy and have the remote https server port set using the
 
196
  CURLOPT_PORT option, protocol gets reset to http from https after the first
 
197
  request.
 
198
 
 
199
  User defined URL was modified internally by libcurl and subsequent reuse of
 
200
  the easy handle may lead to connection using a different protocol (if not
 
201
  originally http).
 
202
 
 
203
  I found that libcurl hardcoded the protocol to "http" when it tries to
 
204
  regenerate the URL if CURLOPT_PORT is set. I tried to fix the problem as
 
205
  follows and it's working fine so far
 
206
 
 
207
Daniel (25 February 2007)
 
208
- Adam D. Moss made the HTTP CONNECT procedure less blocking when used from
 
209
  the multi interface. Note that it still does a part of the connection in a
 
210
  blocking manner.
 
211
 
 
212
Daniel (23 February 2007)
 
213
- Added warning outputs if the command line uses more than one of the options
 
214
  -v, --trace and --trace-ascii, since it could really confuse the user.
 
215
  Clarified this fact in the man page.
 
216
 
 
217
Daniel (21 February 2007)
 
218
- Ravi Pratap provided work on libcurl making pipelining more robust and
 
219
  fixing some bugs:
 
220
  o Don't mix GET and POST requests in a pipeline
 
221
  o Fix the order in which requests are dispatched from the pipeline
 
222
  o Fixed several curl bugs with pipelining when the server is returning
 
223
    chunked encoding:
 
224
    * Added states to chunked parsing for final CRLF
 
225
    * Rewind buffer after parsing chunk with data remaining
 
226
    * Moved chunked header initializing to a spot just before receiving
 
227
      headers
 
228
 
 
229
Daniel (20 February 2007)
 
230
- Linus Nielsen Feltzing changed the CURLOPT_FTP_SSL_CCC option to handle
 
231
  active and passive CCC shutdown and added the --ftp-ssl-ccc-mode command
 
232
  line option.
 
233
 
 
234
Daniel (19 February 2007)
 
235
- Ian Turner fixed the libcurl.m4 macro's support for --with-libcurl.
 
236
 
 
237
- Shmulik Regev found a memory leak in re-used HTTPS connections, at least
 
238
  when the multi interface was used.
 
239
 
 
240
- Robson Braga Araujo made passive FTP transfers work with SOCKS (both 4 and
 
241
  5).
 
242
 
 
243
Daniel (18 February 2007)
 
244
- Jeff Pohlmeyer identified two problems: first a rather obscure problem with
 
245
  the multi interface and connection re-use that could make a
 
246
  curl_multi_remove_handle() ruin a pointer in another handle.
 
247
 
 
248
  The second problem was less of an actual problem but more of minor quirk:
 
249
  the re-using of connections wasn't properly checking if the connection was
 
250
  marked for closure.
 
251
 
 
252
Daniel (16 February 2007)
 
253
- Duncan Mac-Vicar Prett and Michal Marek reported problems with resetting
 
254
  CURLOPT_RANGE back to no range on an easy handle when using FTP.
 
255
 
 
256
Dan F (14 February 2007)
 
257
- Fixed curl-config --libs so it doesn't list unnecessary libraries (and
 
258
  therefore introduce unnecessary dependencies) when it's not needed.
 
259
  Also, don't bother adding a library path of /usr/lib
 
260
 
 
261
Daniel (13 February 2007)
 
262
- The default password for anonymous FTP connections is now changed to be
 
263
  "ftp@example.com".
 
264
 
 
265
- Robert A. Monat made libcurl build fine with VC2005 - it doesn't have
 
266
  gmtime_r() like the older VC versions. He also made use of some machine-
 
267
  specific defines to differentiate the "OS" define.
 
268
 
 
269
Daniel (12 February 2007)
 
270
- Rob Crittenden added support for NSS (Network Security Service) for the
 
271
  SSL/TLS layer. http://www.mozilla.org/projects/security/pki/nss/
 
272
 
 
273
  This is the fourth supported library for TLS/SSL that libcurl supports!
 
274
 
 
275
- Shmulik Regev fixed so that the final CRLF of HTTP response headers are sent
 
276
  to the debug callback.
 
277
 
 
278
- Shmulik Regev added CURLOPT_HTTP_CONTENT_DECODING and
 
279
  CURLOPT_HTTP_TRANSFER_DECODING that if set to zero will disable libcurl's
 
280
  internal decoding of content or transfer encoded content. This may be
 
281
  preferable in cases where you use libcurl for proxy purposes or similar. The
 
282
  command line tool got a --raw option to disable both at once.
 
283
 
 
284
- release tarballs made with maketgz will from now on have a LIBCURL_TIMESTAMP
 
285
  define set to hold the exact date and time of when the tarball was built, as
 
286
  a human readable string using the UTC time zone.
 
287
  
 
288
- Jeff Pohlmeyer fixed a flaw in curl_multi_add_handle() when adding a handle
 
289
  that has an easy handle present in the "closure" list pending closure.
 
290
 
 
291
Daniel (6 February 2007)
 
292
- Regular file downloads wiht SFTP and SCP are now done using the non-blocking
 
293
  API of libssh2, if the libssh2 headers seem to support them. This will make
 
294
  SCP and SFTP much more responsive and better libcurl citizens when used with
 
295
  the multi interface etc.
 
296
 
 
297
Daniel (5 February 2007)
 
298
- Michael Wallner added support for CURLOPT_TIMEOUT_MS and
 
299
  CURLOPT_CONNECTTIMEOUT_MS that, as their names suggest, do the timeouts with
 
300
  millisecond resolution. The only restriction to that is the alarm()
 
301
  (sometimes) used to abort name resolves as that uses full seconds. I fixed
 
302
  the FTP response timeout part of the patch.
 
303
 
 
304
  Internally we now count and keep the timeouts in milliseconds but it also
 
305
  means we multiply set timeouts with 1000. The effect of this is that no
 
306
  timeout can be set to more than 2^31 milliseconds (on 32 bit systems), which
 
307
  equals 24.86 days.  We probably couldn't before either since the code did
 
308
  *1000 on the timeout values on several places already.
 
309
 
 
310
Daniel (3 February 2007)
 
311
- Yang Tse fixed the cookie expiry date in several test cases that started to
 
312
  fail since they used "1 feb 2007"...
 
313
 
 
314
- Manfred Schwarb reported that socks5 support was broken and help us pinpoint
 
315
  the problem. The code now tries harder to use httproxy and proxy where
 
316
  apppropriate, as not all proxies are HTTP...
 
317
 
 
318
Version 7.16.1 (29 January 2007)
 
319
 
 
320
Daniel (29 January 2007)
 
321
- Michael Wallner reported that when doing a CONNECT with a custom User-Agent
 
322
  header, you got _two_ User-Agent headers in the CONNECT request...! Added
 
323
  test case 287 to verify the fix.
 
324
 
 
325
Daniel (28 January 2007)
 
326
- curl_easy_reset() now resets the CA bundle path correctly.
 
327
 
 
328
- David McCreedy fixed the Curl command line tool for HTTP on non-ASCII
 
329
  platforms.
 
330
 
 
331
Daniel (25 January 2007)
 
332
- Added the --libcurl [file] option to curl. Append this option to any
 
333
  ordinary curl command line, and you will get a libcurl-using source code
 
334
  written to the file that does the equivalent operation of what your command
 
335
  line operation does!
 
336
 
 
337
Dan F (24 January 2007)
 
338
- Fixed a dangling pointer problem that prevented the http_proxy environment
 
339
  variable from being properly used in many cases (and caused test case 63
 
340
  to fail).
 
341
 
 
342
Daniel (23 January 2007)
 
343
- David McCreedy did NTLM changes mainly for non-ASCII platforms:
 
344
 
 
345
  #1
 
346
  There's a compilation error in http_ntlm.c if USE_NTLM2SESSION is NOT
 
347
  defined.  I noticed this while testing various configurations.  Line 867 of
 
348
  the current http_ntlm.c is a closing bracket for an if/else pair that only
 
349
  gets compiled in if USE_NTLM2SESSION is defined.  But this closing bracket
 
350
  wasn't in an #ifdef so the code fails to compile unless USE_NTLM2SESSION was
 
351
  defined.  Lines 198 and 140 of my patch wraps that closing bracket in an
 
352
  #ifdef USE_NTLM2SESSION.
 
353
 
 
354
  #2
 
355
  I noticed several picky compiler warnings when DEBUG_ME is defined.  I've
 
356
  fixed them with casting.  By the way, DEBUG_ME was a huge help in
 
357
  understanding this code.
 
358
 
 
359
  #3
 
360
  Hopefully the last non-ASCII conversion patch for libcurl in a while.  I
 
361
  changed the "NTLMSSP" literal to hex since this signature must always be in
 
362
  ASCII.
 
363
 
 
364
  Conversion code was strategically added where necessary.  And the
 
365
  Curl_base64_encode calls were changed so the binary "blobs" http_ntlm.c
 
366
  creates are NOT translated on non-ASCII platforms.
 
367
 
 
368
Dan F (22 January 2007)
 
369
- Converted (most of) the test data files into genuine XML.  A handful still
 
370
  are not, due mainly to the lack of support for XML character entities
 
371
  (e.g. & => & ).  This will make it easier to validate test files using
 
372
  tools like xmllint, as well as to edit and view them using XML tools.
 
373
 
 
374
Daniel (16 January 2007)
 
375
- Armel Asselin improved libcurl to behave a lot better when an easy handle
 
376
  doing an FTP transfer is removed from a multi handle before completion. The
 
377
  fix also fixed the "alive counter" to be correct on "premature removal" for
 
378
  all protocols.
 
379
 
 
380
Dan F (16 January 2007)
 
381
- Fixed a small memory leak in tftp uploads discovered by curl's memory leak
 
382
  detector.  Also changed tftp downloads to URL-unescape the downloaded
 
383
  file name.
 
384
 
 
385
Daniel (14 January 2007)
 
386
- David McCreedy provided libcurl changes for doing HTTP communication on
 
387
  non-ASCII platforms. It does add some complexity, most notably with more
 
388
  #ifdefs, but I want to see this supported added and I can't see how we can
 
389
  add it without the extra stuff added.
 
390
 
 
391
- Setting CURLOPT_COOKIELIST to "ALL" when no cookies at all was present,
 
392
  libcurl would crash when trying to read a NULL pointer.
 
393
 
 
394
Daniel (12 January 2007)
 
395
- Toby Peterson found a nasty bug that prevented (lib)curl from properly
 
396
  downloading (most) things that were larger than 4GB on 32 bit systems.  Matt
 
397
  Witherspoon helped as narrow down the problem.
 
398
 
 
399
Daniel (5 January 2007)
 
400
- Linus Nielsen Feltzing introduced the --ftp-ssl-ccc command line option to
 
401
  curl that uses the new CURLOPT_FTP_SSL_CCC option in libcurl. If enabled, it
 
402
  will make libcurl shutdown SSL/TLS after the authentication is done on a
 
403
  FTP-SSL operation.
 
404
 
 
405
Daniel (4 January 2007)
 
406
- David McCreedy made changes to allow base64 encoding/decoding to work on
 
407
  non-ASCII platforms.
 
408
 
 
409
Daniel (3 January 2007)
 
410
- Matt Witherspoon fixed the flaw which made libcurl 7.16.0 always store
 
411
  downloaded data in two buffers, just to be able to deal with a special HTTP
 
412
  pipelining case. That is now only activated for pipelined transfers. In
 
413
  Matt's case, it showed as a considerable performance difference,
 
414
 
 
415
Daniel (2 January 2007)
 
416
- Victor Snezhko helped us fix bug report #1603712
 
417
  (http://curl.haxx.se/bug/view.cgi?id=1603712) (known bug #36) --limit-rate
 
418
  (CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE) are broken
 
419
  on Windows (since 7.16.0, but that's when they were introduced as previous
 
420
  to that the limiting logic was made in the application only and not in the
 
421
  library). It was actually also broken on select()-based systems (as apposed
 
422
  to poll()) but we haven't had any such reports. We now use select(), Sleep()
 
423
  or delay() properly to sleep a while without waiting for anything input or
 
424
  output when the rate limiting is activated with the easy interface.
 
425
 
 
426
- Modified libcurl.pc.in to use Libs.private for the libs libcurl itself needs
 
427
  to get built static. It has been mentioned before and was again brought to
 
428
  our attention by Nathanael Nerode who filed debian bug report #405226
 
429
  (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=405226).
 
430
 
 
431
Daniel (29 December 2006)
 
432
- Make curl_easy_duphandle() set the magic number in the new handle.
 
433
 
 
434
Daniel (22 December 2006)
 
435
- Robert Foreman provided a prime example snippet showing how libcurl would
 
436
  get confused and not acknowledge the 'no_proxy' variable properly once it
 
437
  had used the proxy and you re-used the same easy handle. I made sure the
 
438
  proxy name is properly stored in the connect struct rather than the
 
439
  sessionhandle/easy struct.
 
440
 
 
441
- David McCreedy fixed a bad call to getsockname() that wrongly used a size_t
 
442
  variable to point to when it should be a socklen_t.
 
443
 
 
444
- When setting a proxy with environment variables and (for example) running
 
445
  'curl [URL]' with a URL without a protocol prefix, curl would not send a
 
446
  correct request as it failed to add the protocol prefix.
 
447
 
 
448
Daniel (21 December 2006)
 
449
- Robson Braga Araujo reported bug #1618359
 
450
  (http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a
 
451
  patch for it: when downloading 2 zero byte files in a row, curl 7.16.0
 
452
  enters an infinite loop, while curl 7.16.1-20061218 does one additional
 
453
  unnecessary request.
 
454
 
 
455
  Fix: During the "Major overhaul introducing http pipelining support and
 
456
  shared connection cache within the multi handle." change, headerbytecount
 
457
  was moved to live in the Curl_transfer_keeper structure. But that structure
 
458
  is reset in the Transfer method, losing the information that we had about
 
459
  the header size. This patch moves it back to the connectdata struct.
 
460
 
 
461
Daniel (16 December 2006)
 
462
- Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
 
463
  during certain conditions when GnuTLS is used.
 
464
 
 
465
Daniel (11 December 2006)
 
466
- Alexey Simak found out that when doing FTP with the multi interface and
 
467
  something went wrong like it got a bad response code back from the server,
 
468
  libcurl would leak memory. Added test case 538 to verify the fix.
 
469
 
 
470
  I also noted that the connection would get cached in that case, which
 
471
  doesn't make sense since it cannot be re-use when the authentication has
 
472
  failed. I fixed that issue too at the same time, and also that the path
 
473
  would be "remembered" in vain for cases where the connection was about to
 
474
  get closed.
 
475
 
 
476
Daniel (6 December 2006)
 
477
- Sebastien Willemijns reported bug #1603712
 
478
  (http://curl.haxx.se/bug/view.cgi?id=1603712) which is about connections
 
479
  getting cut off prematurely when --limit-rate is used. While I found no such
 
480
  problems in my tests nor in my reading of the code, I found that the
 
481
  --limit-rate code was severly flawed (since it was moved into the lib, since
 
482
  7.15.5) when used with the easy interface and it didn't work as documented
 
483
  so I reworked it somewhat and now it works for my tests.
 
484
 
 
485
Daniel (5 December 2006)
 
486
- Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
 
487
  passing a curl_off_t argument to the Curl_read_rewind() function which takes
 
488
  an size_t argument. Curl_read_rewind() also had debug code left in it and it
 
489
  was put in a different source file with no good reason when only used from
 
490
  one single spot.
 
491
 
 
492
- Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
 
493
  no code present in the library that receives the option. Since it was not
 
494
  possible to use, we know that no current users exist and thus we simply
 
495
  removed it from the docs and made the code always use the default path of
 
496
  the code.
 
497
 
 
498
- Jared Lundell filed bug report #1604956
 
499
  (http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting
 
500
  CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl
 
501
  will always internally use no less than 1 entry in the connection cache.
 
502
 
 
503
- Sh Diao reported that CURLOPT_FORBID_REUSE no works, and indeed it broke in
 
504
  the 7.16.0 release.
 
505
 
 
506
- Martin Skinner brought back bug report #1230118 to haunt us once again.
 
507
  (http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work
 
508
  properly for all input dates on Windows. It was mostly seen on some TZ time
 
509
  zones using DST. Luckily, Martin also provided a fix.
 
510
 
 
511
- Alexey Simak filed bug report #1600447
 
512
  (http://curl.haxx.se/bug/view.cgi?id=1600447) in which he noted that active
 
513
  FTP connections don't work with the multi interface. The problem is here
 
514
  that the multi interface state machine has a state during which it can wait
 
515
  for the data connection to connect, but the active connection is not done in
 
516
  the same step in the sequence as the passive one is so it doesn't quite work
 
517
  for active. The active FTP code still use a blocking function to allow the
 
518
  remote server to connect.
 
519
 
 
520
  The fix (work-around is a better word) for this problem is to set the
 
521
  boolean prematurely that the data connection is completed, so that the "wait
 
522
  for connect" phase ends at once.
 
523
 
 
524
  The proper fix, left for the future, is of course to make the active FTP
 
525
  case to act in a non-blocking way too.
 
526
 
 
527
- Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
 
528
  HTTP upload was disconnected:
 
529
 
 
530
  "What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is
 
531
  setting *only* POLLHUP on poll() when the conditions in my previous mail
 
532
  occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So
 
533
  basically what was happening, is poll() was returning immediately (with
 
534
  POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or
 
535
  POLLOUT was set. This still caused Curl_readwrite() to be called, which
 
536
  quickly returned. Then the transfer() loop kept continuing at full speed
 
537
  forever."
 
538
 
 
539
Daniel (1 December 2006)
 
540
- Toon Verwaest reported that there are servers that send the Content-Range:
 
541
  header in a third, not suppported by libcurl, format and we agreed that we
 
542
  could make the parser more forgiving to accept all the three found
 
543
  variations.
 
544
 
 
545
Daniel (25 November 2006)
 
546
- Venkat Akella found out that libcurl did not like HTTP responses that simply
 
547
  responded with a single status line and no headers nor body. Starting now, a
 
548
  HTTP response on a persistent connection (i.e not set to be closed after the
 
549
  response has been taken care of) must have Content-Length or chunked
 
550
  encoding set, or libcurl will simply assume that there is no body.
 
551
 
 
552
  To my horror I learned that we had no less than 57(!) test cases that did bad
 
553
  HTTP responses like this, and even the test http server (sws) responded badly
 
554
  when queried by the test system if it is the test system. So although the
 
555
  actual fix for the problem was tiny, going through all the newly failing test
 
556
  cases got really painful and boring.
 
557
 
 
558
Daniel (24 November 2006)
 
559
- James Housley did lots of work and introduced SFTP downloads.
 
560
 
 
561
Daniel (13 November 2006)
 
562
- Ron in bug #1595348 (http://curl.haxx.se/bug/view.cgi?id=1595348) pointed
 
563
  out a stack overwrite (and the corresponding fix) on 64bit Windows when
 
564
  dealing with HTTP chunked encoding.
 
565
 
 
566
Daniel (9 November 2006)
 
567
- Nir Soffer updated libcurl.framework.make:
 
568
  o fix symlinks, should link to Versions, not to ./Versions
 
569
  o indentation improvments
 
570
 
 
571
- Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov
 
572
  2006. It turned out we wrongly assumed that the connection cache was present
 
573
  when tearing down a connection.
 
574
 
 
575
- Ciprian Badescu found a SIGSEGV when doing multiple TFTP transfers using the
 
576
  multi interface, but I could also repeat it doing multiple sequential ones
 
577
  with the easy interface. Using Ciprian's test case, I could fix it.
 
578
 
 
579
Daniel (8 November 2006)
 
580
- Bradford Bruce reported that when setting CURLOPT_DEBUGFUNCTION without
 
581
  CURLOPT_VERBOSE set to non-zero, you still got a few debug messages from the
 
582
  SSL handshake. This is now stopped.
 
583
 
 
584
Daniel (7 November 2006)
 
585
- Olaf fixed a leftover problem with the CONNECT fix of his that would leave a
 
586
  wrong error message in the error message buffer.
 
587
 
 
588
Daniel (3 November 2006)
 
589
- Olaf Stueben provided a patch that I edited slightly. It fixes the notorious
 
590
  KNOWN_BUGS #25, which happens when a proxy closes the connection when
 
591
  libcurl has sent CONNECT, as part of an authentication negotiation. Starting
 
592
  now, libcurl will re-connect accordingly and continue the authentication as
 
593
  it should.
 
594
 
 
595
Daniel (2 November 2006)
 
596
- James Housley brought support for SCP transfers, based on the libssh2 library
 
597
  for the actual network protocol stuff.
 
598
 
 
599
  Added these new curl_easy_setopt() options:
 
600
 
 
601
    CURLOPT_SSH_AUTH_TYPES
 
602
    CURLOPT_SSH_PUBLIC_KEYFILE
 
603
    CURLOPT_SSH_PRIVATE_KEYFILE
 
604
 
 
605
Version 7.16.0 (30 October 2006)
 
606
 
 
607
Daniel (25 October 2006)
 
608
- Fixed CURLOPT_FAILONERROR to return CURLE_HTTP_RETURNED_ERROR even for the
 
609
  case when 401 or 407 are returned, *IF* no auth credentials have been given.
 
610
  The CURLOPT_FAILONERROR option is not possible to make fool-proof for 401
 
611
  and 407 cases when auth credentials is given, but we've now covered this
 
612
  somewhat more.
 
613
 
 
614
  You might get some amounts of headers transferred before this situation is
 
615
  detected, like for when a "100-continue" is received as a response to a
 
616
  POST/PUT and a 401 or 407 is received immediately afterwards.
 
617
 
 
618
  Added test 281 to verify this change.
 
619
 
 
620
Daniel (23 October 2006)
 
621
- Ravi Pratap provided a major update with pipelining fixes. We also no longer
 
622
  re-use connections (for pipelining) before the name resolving is done.
 
623
 
 
624
Daniel (21 October 2006)
 
625
- Nir Soffer made the tests/libtest/Makefile.am use a proper variable for all
 
626
  the single test applications' link and dependences, so that you easier can
 
627
  override those from the command line when using make.
 
628
 
 
629
- Armel Asselin separated CA cert verification problems from problems with
 
630
  reading the (local) CA cert file to let users easier pinpoint the actual
 
631
  problem. CURLE_SSL_CACERT_BADFILE (77) is the new libcurl error code.
 
632
 
 
633
Daniel (18 October 2006)
 
634
- Removed the "protocol-guessing" for URLs with host names starting with FTPS
 
635
  or TELNET since they are practically non-existant. This leaves us with only
 
636
  three different prefixes that would assume the protocol is anything but
 
637
  HTTP, and they are host names starting with "ftp.", "dict." or "ldap.".
 
638
 
 
639
Daniel (17 October 2006)
 
640
- Bug report #1579171 pointed out code flaws detected with "prefast", and they
 
641
  were 1 - a too small memory clear with memset() in the threaded resolver and
 
642
  2 - a range of potentially bad uses of the ctype family of is*() functions
 
643
  such as isdigit(), isalnum(), isprint() and more. The latter made me switch
 
644
  to using our own set of these functions/macros using uppercase letters, and
 
645
  with some extra set of crazy typecasts to avoid mistakingly passing in
 
646
  negative numbers to the underlying is*() functions.
 
647
 
 
648
- With Jeff Pohlmeyer's help, I fixed the expire timer when using
 
649
  curl_multi_socket() during name resolves with c-ares and the LOW_SPEED
 
650
  options now work fine with curl_multi_socket() as well.
 
651
 
 
652
Daniel (16 October 2006)
 
653
- Added a check in configure that simply tries to run a program (not when
 
654
  cross-compiling) in order to detect problems with run-time libraries that
 
655
  otherwise would occur when the sizeof tests for curl_off_t would run and
 
656
  thus be much more confusing to users. The check of course should run after
 
657
  all lib-checks are done and before any other test is used that would run an
 
658
  executable built for testing-purposes.
 
659
 
 
660
Dan F (13 October 2006)
 
661
- The tagging of application/x-www-form-urlencoded POST body data sent
 
662
  to the CURLOPT_DEBUGFUNCTION callback has been fixed (it was erroneously
 
663
  included as part of the header).  A message was also added to the
 
664
  command line tool to show when data is being sent, enabled when
 
665
  --verbose is used.
 
666
 
 
667
Daniel (12 October 2006)
 
668
- Starting now, adding an easy handle to a multi stack that was already added
 
669
  to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
 
670
 
 
671
- Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
 
672
  and while doing so it became apparent that the current timeout system for
 
673
  the socket API really was a bit awkward since it become quite some work to
 
674
  be sure we have the correct timeout set.
 
675
 
 
676
  Jeff then provided the new CURLMOPT_TIMERFUNCTION that is yet another
 
677
  callback the app can set to get to know when the general timeout time
 
678
  changes and thus for an application like hiperfifo.c it makes everything a
 
679
  lot easier and nicer. There's a CURLMOPT_TIMERDATA option too of course in
 
680
  good old libcurl tradition.
 
681
 
 
682
  Jeff has also updated the hiperfifo.c example code to use this news.
 
683
 
 
684
Daniel (9 October 2006)
 
685
- Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to test
 
686
  case 535 and it now runs fine. Again a problem with the pipelining code not
 
687
  taking all possible (error) conditions into account.
 
688
 
 
689
Daniel (6 October 2006)
 
690
- Bogdan Nicula's hanging test case (posted Wed, 04 Oct 2006) was converted to
 
691
  test case 533 and the test now runs fine.
 
692
 
 
693
Daniel (4 October 2006)
 
694
- Dmitriy Sergeyev provided an example source code that crashed CVS libcurl
 
695
  but that worked nicely in 7.15.5. I converted it into test case 532 and
 
696
  fixed the problem.
 
697
 
 
698
Daniel (29 September 2006)
 
699
- Removed a few other no-longer present options from the header file.
 
700
 
 
701
- Support for FTP third party transfers was removed. Here's why:
 
702
 
 
703
  o The recent multi interface changes broke it and the design of the 3rd party
 
704
    transfers made it very hard to fix the problems
 
705
  o It was still blocking and thus nasty for the multi interface
 
706
  o It was a lot of extra code for a very rarely used feature
 
707
  o It didn't use the same code as for "plain" FTP transfers, so it didn't work
 
708
    fine for IPv6 and it didn't properly re-use connections and more
 
709
  o There's nobody around who's willing to work on and improve the existing
 
710
    code
 
711
 
 
712
  This does not mean that third party transfers are banned forever, only that
 
713
  they need to be done better if they are to be re-added in the future.
 
714
 
 
715
  The CURLOPT_SOURCE_* options are removed from the lib and so are the --3p*
 
716
  options from the command line tool. For this reason, I also bumped the
 
717
  version info for the lib.
 
718
 
 
719
Daniel (28 September 2006)
 
720
- Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl
 
721
  would crash if a bad function sequence was used when shutting down after
 
722
  using the multi interface (i.e using easy_cleanup after multi_cleanup) so
 
723
  precautions have been added to make sure it doesn't any more - test case 529
 
724
  was added to verify.
 
725
 
 
726
Daniel (27 September 2006)
 
727
- The URL in the cookie jar file is now changed since it was giving a 404.
 
728
  Reported by Timothy Stone. The new URL will take the visitor to a curl web
 
729
  site mirror with the document.
 
730
 
 
731
Daniel (24 September 2006)
 
732
- Bernard Leak fixed configure --with-gssapi-libs.
 
733
 
 
734
- Cory Nelson made libcurl use the WSAPoll() function if built for Windows
 
735
  Vista (_WIN32_WINNT >= 0x0600)
 
736
 
 
737
Daniel (23 September 2006)
 
738
- Mike Protts added --ftp-ssl-control to make curl use FTP-SSL, but only
 
739
  encrypt the control connection and use the data connection "plain".
 
740
 
 
741
- Dmitriy Sergeyev provided a patch that made the SOCKS[45] code work better
 
742
  as it now will read the full data sent from servers. The SOCKS-related code
 
743
  was also moved to the new lib/socks.c source file.
 
744
 
 
745
Daniel (21 September 2006)
 
746
- Added test case 531 in an attempt to repeat bug report #1561470
 
747
  (http://curl.haxx.se/bug/view.cgi?id=1561470) that is said to crash when an
 
748
  FTP upload fails with the multi interface. It did not, but I made a failed
 
749
  upload still assume the control connection to be fine.
 
750
 
 
751
Daniel (20 September 2006)
 
752
- Armel Asselin fixed problems when you gave a proxy URL with user name and
 
753
  empty password or no password at all. Test case 278 and 279 were added to
 
754
  verify.
 
755
 
 
756
Daniel (12 September 2006)
 
757
- Added docs/examples/10-at-a-time.c by Michael Wallner
 
758
 
 
759
- Added docs/examples/hiperfifo.c by Jeff Pohlmeyer
 
760
 
 
761
Daniel (11 September 2006)
 
762
- Fixed my breakage from earlier today so that doing curl_easy_cleanup() on a
 
763
  handle that is part of a multi handle first removes the handle from the
 
764
  stack.
 
765
 
 
766
- Added CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid to disable SSL
 
767
  session-ID re-use on demand since there obviously are broken servers out
 
768
  there that misbehave with session-IDs used.
 
769
 
 
770
- Jeff Pohlmeyer presented a *multi_socket()-using program that exposed a
 
771
  problem with it (SIGSEGV-style). It clearly showed that the existing
 
772
  socket-state and state-difference function wasn't good enough so I rewrote
 
773
  it and could then re-run Jeff's program without any crash. The previous
 
774
  version clearly could miss to tell the application when a handle changed
 
775
  from using one socket to using another.
 
776
 
 
777
  While I was at it (as I could use this as a means to track this problem
 
778
  down), I've now added a 'magic' number to the easy handle struct that is
 
779
  inited at curl_easy_init() time and cleared at curl_easy_cleanup() time that
 
780
  we can use internally to detect that an easy handle seems to be fine, or at
 
781
  least not closed or freed (freeing in debug builds fill the area with 0x13
 
782
  bytes but in normal builds we can of course not assume any particular data
 
783
  in the freed areas).
 
784
 
 
785
Daniel (9 September 2006)
 
786
- Michele Bini fixed how the hostname is put in NTLM packages. As servers
 
787
  don't expect fully qualified names we need to cut them off at the first dot.
 
788
 
 
789
- Peter Sylvester cleaned up and fixed the getsockname() uses in ftp.c. Some
 
790
  of them can be completetly removed though...
 
791
 
 
792
Daniel (6 September 2006)
 
793
- Ravi Pratap and I have implemented HTTP Pipelining support. Enable it for a
 
794
  multi handle using CURLMOPT_PIPELINING and all HTTP connections done on that
 
795
  handle will be attempted to get pipelined instead of done in parallell as
 
796
  they are performed otherwise.
 
797
 
 
798
  As a side-effect from this work, connections are now shared between all easy
 
799
  handles within a multi handle, so if you use N easy handles for transfers,
 
800
  each of them can pick up and re-use a connection that was previously used by
 
801
  any of the handles, be it the same or one of the others.
 
802
 
 
803
  This separation of the tight relationship between connections and easy
 
804
  handles is most noticable when you close easy handles that have been used in
 
805
  a multi handle and check amount of used memory or watch the debug output, as
 
806
  there are times when libcurl will keep the easy handle around for a while
 
807
  longer to be able to close it properly. Like for sending QUIT to close down
 
808
  an FTP connection.
 
809
 
 
810
  This is a major change.
 
811
  
 
812
Daniel (4 September 2006)
 
813
- Dmitry Rechkin (http://curl.haxx.se/bug/view.cgi?id=1551412) provided a
 
814
  patch that while not fixing things very nicely, it does make the SOCKS5
 
815
  proxy connection slightly better as it now acknowledges the timeout for
 
816
  connection and it no longer segfaults in the case when SOCKS requires
 
817
  authentication and you did not specify username:password.
 
818
 
 
819
Daniel (31 August 2006)
 
820
- Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch
 
821
  name resolves. It could get stuck in the wrong state.
 
822
 
 
823
Gisle (29 August 2006)
 
824
- Added support for other MS-DOS compilers (desides djgpp). All MS-DOS
 
825
  compiler now uses the same config.dos file (renamed to config.h by
 
826
  make). libcurl now builds fine using Watcom and Metaware's High-C
 
827
  using the Watt-32 tcp/ip-stack.
 
828
 
 
829
Daniel (29 August 2006)
 
830
- David McCreedy added CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA to
 
831
  allow applications to set their own socket options.
 
832
 
 
833
Daniel (25 August 2006)
 
834
- Armel Asselin reported that the 'running_handles' counter wasn't updated
 
835
  properly if you removed a "live" handle from a multi handle with
 
836
  curl_multi_remove_handle().
 
837
 
 
838
Daniel (22 August 2006)
 
839
- David McCreedy fixed a remaining mistake from the August 19 TYPE change.
 
840
 
 
841
- Peter Sylvester pointed out a flaw in the AllowServerConnect() in the FTP
 
842
  code when doing pure ipv6 EPRT connections.
 
843
 
 
844
Daniel (19 August 2006)
 
845
- Based on a patch by Armel Asselin, the FTP code no longer re-issues the TYPE
 
846
  command on subsequent requests on a re-used connection unless it has to.
 
847
 
 
848
- Armel Asselin fixed a crash in the FTP code when using SINGLECWD mode and
 
849
  files in the root directory.
 
850
 
 
851
- Andrew Biggs pointed out a "Expect: 100-continue" flaw where libcurl didn't
 
852
  send the whole request at once, even though the Expect: header was disabled
 
853
  by the application. An effect of this change is also that small (< 1024
 
854
  bytes) POSTs are now always sent without Expect: header since we deem it
 
855
  more costly to bother about that than the risk that we send the data in
 
856
  vain.
 
857
 
 
858
Daniel (9 August 2006)
 
859
- Armel Asselin made the CURLOPT_PREQUOTE option work fine even when
 
860
  CURLOPT_NOBODY is set true. PREQUOTE is then run roughly at the same place
 
861
  in the command sequence as it would have run if there would've been a
 
862
  transfer.
 
863
 
 
864
Daniel (8 August 2006)
 
865
- Fixed a flaw in the "Expect: 100-continue" treatment. If you did two POSTs
 
866
  on a persistent connection and allowed the first to use that header, you
 
867
  could not disable it for the second request.
 
868
 
 
869
Daniel (7 August 2006)
 
870
- Domenico Andreolfound a quick build error which happened because
 
871
  src/config.h.in was not a proper duplcate of lib/config.h.in which it
 
872
  should've been and this was due to the maketgz script not doing the cp
 
873
  properly.
 
874
 
9
875
Version 7.15.5 (7 August 2006)
10
876
 
11
877
Daniel (2 August 2006)
99
965
Daniel (4 July 2006)
100
966
- Toshiyuki Maezawa fixed a problem where you couldn't override the
101
967
  Proxy-Connection: header when using a proxy and not doing CONNECT.
102
 
  
 
968
 
103
969
Daniel (24 June 2006)
104
970
- Michael Wallner added curl_formget(), which allows an application to extract
105
971
  (serialise) a previously built formpost (as with curl_formadd()).
270
1136
  already did this.
271
1137
 
272
1138
Daniel (2 May 2006)
273
 
- Added a --checkfor option to curl-config to allow users to easier 
274
 
  write for example shell scripts that test for the presence of a 
275
 
  new-enough libcurl version. If --checkfor is given a version string 
276
 
  newer than what is currently installed, curl-config will return a 
277
 
  non-zero exit code and output a string about the unfulfilled 
 
1139
- Added a --checkfor option to curl-config to allow users to easier
 
1140
  write for example shell scripts that test for the presence of a
 
1141
  new-enough libcurl version. If --checkfor is given a version string
 
1142
  newer than what is currently installed, curl-config will return a
 
1143
  non-zero exit code and output a string about the unfulfilled
278
1144
  requirement.
279
1145
 
280
1146
Daniel (26 April 2006)
330
1196
 
331
1197
  CONV_FROM_NETWORK_FUNCTION
332
1198
  CONV_TO_NETWORK_FUNCTION
333
 
  CONV_FROM_UTF8_FUNCTION 
 
1199
  CONV_FROM_UTF8_FUNCTION
334
1200
 
335
1201
Daniel (5 April 2006)
336
1202
- Michele Bini modified the NTLM code to work for his "weird IIS case"