Newer
Older
Daniel Stenberg
committed
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
- configure --without-ssl could still wrongly include some OpenSSL info in the
Makefiles if pkg-config had info about OpenSSL. Bug #941762 reported by
Martin.
- Since we can now build and use quite a large set of 3rd party libraries, I
decided I would make configure produce a summary at the end showing what
libraries it uses and if not, what option to use to make it use that. I also
added some other random info that is nice in a "configure summary" output.
- Applied TommyTam's patch that now make curl work with telnet and stdin
properly on Windows.
- The changes for today below were made by me and Gisle Vanem.
The file previously known as hostip.c has now undergone a huge cleanup and
split:
hostip.c explained
==================
The main COMPILE-TIME DEFINES to keep in mind when reading the host*.c
source file are these:
CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
that. The host may not be able to resolve IPv6, but we don't really have to
take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
defined.
CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
name resolves. It cannot have ENABLE_IPV6 defined at the same time, as
c-ares has no ipv6 support. This can be Windows or *nix.
CURLRES_THREADED - is defined if libcurl is built to run under (native)
Windows, and then the name resolve will be done in a new thread, and the
supported asynch API will be the same as for ares-builds.
If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
defined.
The host*.c sources files are split up like this:
hostip.c - method-independent resolver functions and utility functions
hostasyn.c - functions for asynchronous name resolves
hostsyn.c - functions for synchronous name resolves
hostares.c - functions for ares-using name resolves
hostthre.c - functions for threaded name resolves
hostip4.c - ipv4-specific functions
hostip6.c - ipv6-specific functions
The hostip.h is the single united header file for all this. It defines the
CURLRES_* defines based on the config*.h and setup.h defines.
- Added function header comments to many functions in an attempt to better
explain the purpose of them all.
- configure --with-libidn is now supported. It makes the configure script
check for libidn libs and include files in the prefix path given. If you
say --with-libidn=/usr/local, it will check for the lib in /usr/local/lib
and the includes in /usr/local/include etc.
- curl_version_info() now returns a struct aged CURLVERSION_THIRD including
libidn version info. The string curl_version() returns also includes libidn
version info, if available.
Version 7.11.2 (26 April 2004)
Daniel (25 April 2004)
- Erwin Authried pointed out that configure --disable-manual didn't do right
if you already had a src/hugehelp.c source file present (which most people
do I guess). It now uses the USE_MANUAL define properly.
Daniel (23 April 2004)
- Gisle Vanem found and fixed a memory leak when doing (failing) Windows
threaded name resolves.
- I also added test case 163 just to make sure -F "var=<file" works fine and
can pass on characters such as newlines, carriage-return and tabs.
- When we added test case 162 without adding the necessary requirement field
in the test meta data we could see that curl didn't complain if you used
--proxy-ntlm even if the underlying libcurl it uses has no NTLM support! I
now made it check this first, and it now exists with a "the installed
libcurl version doesn't support this" message if it happens again.
Daniel (22 April 2004)
- David Byron found and fixed a small bug with the --fail and authentication
stuff added a few weeks ago. Turns out that if you specify --proxy-ntlm and
communicate with a proxy that requires basic authentication, the proxy
properly returns a 407, but the failure detection code doesn't realize it
should give up, so curl returns with exit code 0. Test case 162 added to
verify the functionality.
- allow newlines in the contents when doing -F "var=[contents]"
Robert Marlow reported.
- If a transfer is found out to be only partial, libcurl will now treat that
as a problem serious enough to skip the final QUIT command before closing
the control connection. To avoid the risk that it will "hang" waiting for
the QUIT response. Added test case 161 to verify this.
Daniel (21 April 2004)
- Modified the heuristics for dealing with the test 160 scenario. When a
connection is re-used and nothing at all is received from it (because the
server closes the connection), we will now retry the request on a fresh new
connection. The previous ECONNRESET stuff from January 30 was removed again
as it didn't detect the situation good enough.
Daniel (20 April 2004)
- Added test case 160 to verify that curl works correctly when it gets a
connection reset when trying to re-use a connection. It should then simply
create a new connection and resend the request.
Daniel (19 April 2004)
- No more 512 byte limit for host name (inclusing name + password) in libcurl.
An added bonus is that we use less memory for the typical (shorter URL)
case.
- Cleaned up the sources to better use the terms 'hostname' and 'path'
internally when referring to that data. The buffers used for keep that info
is called 'namebuffer' and 'pathbuffer'. Much easier to read and understand
than the previous mess.
Daniel (15 April 2004)
- Modified runtests.pl again to remove all log files in the log/ dir between
each test, and then made -p display all non-zero byte files in the log dir.
It should make that data more usable and contain less rubbish.
- ftpserver.pl now produces log files more similar to how the sws ones look
and they now also contains a bit more details to help debugging ftp
problems.
- Removed the fixed maximum amount of dir levels the FTP code supported.
Previously we had a fixed array for 100 levels, now we save space in each
handle by allocating only for a few level by default and then enlarging that
in case of need (with no maximum depth). Adjusted test case 142 to verify
that 150 dir levels work fine. An added bonus is that we use less memory
for the typical (not very deep) case.
Daniel (14 April 2004)
- Asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will
now cause the resolve function to return NULL immediately. This flaw was
pointed out by Gisle Vanem.
- Gisle Vanem made curl -4/-6 actually set the desired option to libcurl.
- runtests.pl now has a new option (-p) that will display "interesting" log
files to stdout in case of a test failure. This is primarily intended to be
used in the 'full-test' make target that is used by the autobuild tests, as
we then get a much better chance to understand (remote) test failures based
on autobuild logs alone.
Daniel (13 April 2004)
- Gisle Vanem made the multi interface work again on Windows even when built
without ares. Before this, select() would return -1 during the name resolve
phase since curl_multi_fdset() didn't return any fd_set at all which wasn't
appreciated!
- curl_easy_duphandle() now duplicates the tcp_nodelay info as well.
Daniel (11 April 2004)
- Applied David Byron's patch for the MSVC libcurl makefile for builds with
zlib.
Daniel (9 April 2004)
- Dirk Manske improved the timer resolution for CURLINFO_*_TIME, it can now
be down to usec if the system sypports it.
Daniel (7 April 2004)
- A request that sends "Expect: 100-continue" and gets nothing but a single
100 response back will now return a CURLE_GOT_NOTHING. Test 158 verifies.
- The strtoofft() macro is now named curlx_strtoofft() to use the curlx_*
approach fully.
Daniel (6 April 2004)
- Gisle Vanem's fixed bug #927979 reported by Nathan O'Sullivan. The problem
made libcurl on Windows leak a small amount of memory in each name resolve
when not used as a DLL.
- New authentication code added, particularly noticable when doing POST or PUT
with Digest or NTLM. libcurl will now use HEAD to negotiate the
authentication and when done perform the requested POST. Previously libcurl
sent POST immediately and expected the server to reply a final status code
with an error and then libcurl would not send the request-body but instead
send then next request in the sequence.
The reason for this change is due to IIS6 barfing on libcurl when we attempt
to POST with NTLM authentication. The reason for the problems is found in
RFC2616 section 8.2.3 regarding how servers should deal with the 100
continue request-header:
If it responds with a final status code, it MAY close the transport
connection or it MAY continue to read and discard the rest of the
request.
Previous versions of IIS clearly did close the connection in this case,
while this newer version decided it should "read and discard". That would've
forced us to send the whole POST (or PUT) data only to have it discarded and
then be forced to send it again. To avoid that huge penality, we switch to
using HEAD until we are authenticated and then send the POST.
The only actual drawback I can think of (except for the odd sites that might
treat HEAD differently than they would treat POST/PUT when given the same
URL) is that if you do POST with CURLAUTH_ANY set and the site requires NO
authentication, libcurl will still use a HEAD in a first round and then do a
POST.
If you do a HEAD or a GET on a site using CURLAUTH_ANY, libcurl will send
an un-authenticated request at once, which then is the only request if the
site requires no auth.
Alan Pinstein helped me work out the protocol details by figuring out why
libcurl failed and what IIS6 expects.
- The --limit-rate logic was corrected and now it works a lot better for
higher speeds, such as '10m' or similar. Reported in bug report #930249.
- Introducing curlx_tvnow() and curlx_tvdiff() using the new curlx_* fashion.
#include "timeval.h" from the lib dir to get the protos etc. Note that
these are NOT part of the libcurl API. The curl app simply uses the same
source files as the library does and therefore the file needs to be compiled
and linked with curl too, not just when creating libcurl.
- lib/strerror.c no longer uses sys_nerr on non-windows platforms since it
isn't portable enough
Daniel (2 April 2004)
- In the curl_strnqual.3 man page, we now prepend the man3 dir to the file
name to work better. As pointed out by Robin Kay.
- Andrés García updated the mingw makefiles.
- Dirk Manske fixed a problem I recently added in the progress meter code that
broke subsecond resolution for CURLINFO_TOTAL_TIME. He also pointed out a
mistake in the code that produces the final update of the progress meter
that would often prevent it from actually being updated that final time.
Daniel (1 April 2004)
- Dirk Manske fixed a memory leak that happened when we use ares for name
resolves and decides to time-out before ares does it. This fix uses the
brand new ares_cancel() function which is not present in c-ares 1.1.0.
When told to enable ares, the configure script now checks for presence of
the ares_cancel function to alert users if they attempt to use a too old
c-ares library.
Daniel (31 March 2004)
- Roy Shan fixed a flaw that prevented ares name resolve timeouts to occur!
- Dirk Manske found out that libcurl timed out waiting for resolves far too
easy when libcurl was built to use (c-)ares for name resolving.
- Further Digest fixing and a successful test case 153 now makes me believe
Mitz Wark's problems are fixed.
- Andres Garcia figured out that test case 63, while working, only proved a
flaw in libcurl's 'http_proxy' parser when a user name and password is
provided. The user name was not extracted properly (and 'http' was always
used as user name).
- Andrés García fixed compiler warnings in our ioctlsocket() usage.
Daniel (30 March 2004)
- Joe Halpin faced problems with the getnameinfo() argument ai_flags and the
particular bit named 'NI_WITHSCOPEID' on Solaris 9 for Intel. I've now
written a configure test that checks for a working NI_WITHSCOPEID
implemenation. No code uses the result from this test yet, it is still
experimental. James Carlson wrote in comp.unix.solaris: "It's a bug
(5006623) -- it's not supported and shouldn't be in the header file."
- I provided Mitz Wark with a first patch in order to fix libcurl's problems
to re-negotiate Digest authentication (when 'stale=true' is included in the
response header).
- Roy Shan discovered that the multi interface didn't properly timeout name
lookups which could make handles get stuck in that state and thus never get
completed. I've produced a first test patch that attempts to correct this.
- David Byron's patch was appplied to make CURLOPT_FAILONERROR work nicely
even with authentcations such as NTLM or Digest enabled. Test cases 150, 151
and 152 were added to verify the functionality.
Daniel (29 March 2004)
- Gisle Vanem updated files for the djgpp/MS-DOS build.
- Andrés García helped me work out a fix for the runtests.pl script to make
the file:// tests run fine when tested with the mingw-built version of curl.
- Fixed an include issue with netinet/tcp.h on AIX, based on input by Tor.
This also required a minor fix of the configure script.
- The postit2.c source example used the wrong struct name for the post data.
Daniel (26 March 2004)
- Gisle Vanem improved ipv6 support on windows by making the curl build to use
the correct getaddrinfo() function.
Daniel (25 March 2004)
- It turned out that AIX, despite having a "thread-safe libc", doesn't offer
all traditional functions thread-safe. This URL is informative on this
subject:
http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
genprogc/thread_quick_ref.htm
As a result of this, we now check for three *_r() functions on recent AIX
versions as well that the URL mentions aren't thread-safe in AIX 5.1.
- renamed curl_strerror.[ch] to strerror.[ch]
- Joe Halpin added CURLOPT_TCP_NODELAY and --tcp-nodelay to make it possible
for users to disable the Nagle algorthim-usage.
- Tor Arntsen provided some interesting strerror_r() knowledge. glibc has its
own API which differs from the POSIX one. Daniel adjusted the configure
script to detect the version in use, and the code now uses the new defines
accordingly.
- Fixed some build flaws with the new lib/curl_strerror.c source file.
Daniel (24 March 2004)
- Gisle Vanem's fix to replace the bad use of strerror(). This introduces
Curl_strerror() that attempts to be thread-safe _and_ works on Windows too!
- Tor Arntsen spell-fixed lots of libcurl man pages.
- Tor Arntsen made testcurl.pl work with older perl 5 versions, and Daniel
made it not use chdir .. to go back, as that isn't very good when you've
setup a testdir containing symlinks.
- Added a check for strerror_r() in the configure script.
Daniel (23 March 2004)
- Added Greg Hewgill's testcurl.pl script to CVS. We have not moved over to
use this script for the real distributed testing just yet, but it is only
a matter of time.
- Gisle Vanem provided code that makes curl report a better error message
if --interface fails on windows.
- The regular progress meter is now fixed to never wrap due to long lines. All
fields are now static sized. If the time in the time fields get a time value
that would represent a time that is 100 hours or more (if not, it remains
using a HH:MM:SS display), it switches first to a "NNNd NNh" display (for
days and hours) and if that isn't enough it switches to a "NNNd" display if
it is more than 999 days.
Several of the calculations were also moved to fixed-point math instead of
using doubles.
Daniel (22 March 2004)
- Glen Nakamura noticed CURLINFO_CONTENT_LENGTH_DOWNLOAD didn't work as it
used to do if CURLOPT_NOBODY is set TRUE.
- Kevin Roth patched the cygwin package makefile and README to adjust to
new cygwin packaging guidelines.
- Enabled "NT responses" in the NTLM authentication. Doing this simply means
that we provide an extra chunk of data in each "type-3 message". The only
reason for doing this is that it seems that using only the "Lanmanager hash"
(as we've been doing until now) doesn't support passwords longer than 14
characters and it turns out there are users out there who want to use
libcurl and NTLM with such passwords! ;-) Seven NTLM-related test cases were
updated accordingly. Mentioned as issue 29 in TODO-RELEASE, bug report
#915609
- Moved the generated libcurl version info to a new header file, named
curl/curlver.h. Now interested parties can include ONLY version info, should
anyone want that (and it seems at least some windows resource files would).
Mentioned as issue 27 in TODO-RELEASE.
Daniel (21 March 2004)
- Fixed the root Makefile to use tabs for the netware target. Günter Knauf
pointed this out.
- Marty Kuhrt's VMS cleanup
- Thomas Schwinge made buildconf recognize ACLOCAL_FLAGS to invoke aclocal
with particular pre-determined options.
Version 7.11.1 (19 March 2004)
Daniel (18 March 2004)
- Tor Arntsen brought some info about SGI IRIX:
IRIX supports 3 different executable/object formats, -32, -n32 and -64.
-n32 is default 32-bit format, -32 is the "old" 32-bit format, and -64 is
the 64-bit format. Libraries for the different formats are in lib, lib32
and lib64 respectively.
We've now adjusted the configure script to adapt to this when scanning for
3rd party libs, such as OpenSSL.
Daniel (17 March 2004)
- Watz pointed out a few missing files in the MSVC project description file.
- Günter Knauf brought patches, code and makefiles to build curl on Novell
NetWare.
Daniel (15 March 2004)
- Lots of libcurl man pages were updated to contain references to other man
pages the recognized way so that they appear as nice hyperlinks in the HTML
versions.
- buildconf now checks the m4 version too, since autoconf requires a GNU m4
version to build proper configure scripts.
Daniel (12 March 2004)
- Added CURLOPT_POSTFIELDSIZE_LARGE, the large file version of
CURLOPT_POSTFIELDSIZE to allow POSTs larger than 2GB.
- David Byron fixed an uninitialized variable case/crash.
Daniel (10 March 2004)
- Jeff Lawson fixed the SSL connection to deal with received signals during the
connect.
- Changed the OS string for win32 to become "i386-pc-win32".
Daniel (9 March 2004)
- Changed the internals to use curl_socket_t for socket variable type. This
should enable us to build with less warnings on Windows, where SOCKET is
used which is an unsigned int, while most other platforms use a mere int.
- Modified lib/config-win32.h to build fine on MSVC again.
Version 7.11.1-pre1 (8 March 2004)
Daniel (8 March 2004)
- Minor fix to make curl CURL_VERSION_LARGEFILE is only set if curl_off_t is
larger than 4 bytes.
Daniel (4 March 2004)
- Improved PUT/POST with NTLM/Digest authentication, the so called issue 12.
- Modified the test HTTP server a lot to work with the upcoming changes for
PUT/POST with NTLM/Digest authentication (like test case 88). Added Andrés
García's win32-changes. Improved the logging.
- Fixed the file:-related progress/getinfo stuff a bit more.
Daniel (4 March 2004)
- I corrected a problem with the multi interface when following a Location:
header or when doing multiple-request authentications. A subsequent request
could erroneously re-use a previous connection that was sent with
Connection: close. Christopher R. Palmer reported.
- Andrés García patched curl to prevent warnings while compiling with mingw,
mainly because it is now possible to have both WIN32 and HAVE_CONFIG_H
defined.
- When transferring files from a file: URL, the progress meter and other
transfer metrics were not updated properly.
- David Byron provided a "version resource" file to the curl executable for
the windows builds.
Daniel (3 March 2004)
- David Byron's work on making libcurl only require winsock 1.1 on Windows
machines.
- More variable cleanups based on compiler warnings generated by Tor Arntsen's
autobuilds with MIPSPro.
- Joe Halpin helped us fix some pedantic compiler warnings on FreeBSD.
- Applied Tom Bates' patch to build on nsr-tandem-nsk.
- Dan Fandrich corrected some flaws in the configure GSS detection.
Daniel (2 March 2004)
- Fixed the libcurl code to use FORMAT_OFF_T for printf() formatting
curl_off_t types internally.
Daniel (1 March 2004)
- Added CURL_VERSION_LARGEFILE as a feature-bit in the curl_version_info()
response, that signals if this libcurl supports >2GB files. curl -V now
outputs 'Largefile' in the Features: field if this is the case. Most systems
are likely to support this.
- We offer a CURL_FORMAT_OFF_T define in the public header, which can be used
to printf() curl_off_t variables. We also modified the libcurl sources to
use this define instead of the previous %Od approach (although I've left the
O-flag functional in the code). This should also prevent compilers to warn
on the home-grown option.
- Fixed the resume-check code to test for a working resume at the end of the
headers and not at the first body-byte.
- CURLOPT_DNS_USE_GLOBAL_CACHE is now considered obsolete. Stop using it. If
you need a global DNS cache for whatever reason, use the share interface and
you'll get a global cache that works the way it should work. You can even
have any number of global caches, all at your command. This is now also
mentioned in the docs.
- Made the *printf code support the z-flag to enable size_t printf() in a
manner similar to how glibc allows it. To make printfing of this work on
platforms with 64bit size_t and 32bit ints. If there even are any! ;-)
- Christopher R. Palmer discovered that if you CURLOPT_FRESH_CONNECT and
CURLAUTH_NTLM (or CURLAUTH_ANY and libcurl then picked NTLM), libcurl would
loop without succeeding to authenticate due to the new connection that was
made for all round-trips in the authentication. Now, the FRESH_CONNECT is
remade to only matter for the first connection made with curl_easy_perform()
and all the rest that might follow due to FOLLOWLOCATION or HTTP
authentication are now ignoring that option.
- Adjusted the QUIT code slightly since it could core-dump.
- Corrected the test suite's FTP server to provide a correct size to the
'verifiedserver' request.
Daniel (27 February 2004)
- Joe Halpin made the FTP code send QUIT on the control connection before
disconnecting the TCP connection. This is what good-behaving ftp clients
should do.
Daniel (26 February 2004)
- David Byron updated several files to make curl build fine on MSVC 6. He
also added the 'buildconf.bat' that works like the 'buildconf + configure'
combo does on unixes.
- Gisle Vanem made the memdebug stuff support calloc() as well.
- Tor Arntsen pointed out that testcurl.sh needed to remove the generated
files in order to have them re-generated in each build.
- Andy Serpa found out that the share interface did not enjoy life when not
having the lock and unlock callbacks set, even though documented to be
OK. It still is OK, and now the code won't segfault anymore!
Daniel (25 February 2004)
- Based on a patch by Greg Hewgill I modified how long long is used in the
mprintf code, as we can use a 64bit type with MSVC that is a long long
equivalent. This corrects some weird large file behaviors on windows.
- Tor Arntsen helped me work out --enable-debug to work better with different
versions of the gcc and icc compilers.
- Added CURLOPT_SHARE to the curl_easy_setopt.3 man page.
Daniel (22 February 2004)
- Applied the final pieces of Gisle Vanem's patch that brings a working name
resolve timeout to the windows versions of curl!
Daniel (21 February 2004)
- David Byron's fix to allow the speed-limit logic work even if you set
limit-rate. It does work on the expense of the rate limiter.
Daniel (20 February 2004)
- configure --enable-debug with gcc now also tries to detect the icc compiler
(which somehow gets treated as if it is a gcc) to stop using all the gcc
options with it, and we also provide -isystem options for each extra -I
option the configure script has figured out (for OpenSSL, kerberos, zlib,
Heimdal etc). This of course to prevent warnings on headers we don't have
control of.
Daniel (19 February 2004)
- Doug Porter made libcurl use the HOME environment variable before the
getpwuid results when looking for .netrc files.
- If 'configure --enable-debug' is used with gcc, it now checks which gcc
version it is and uses as picky compiler options as possible for the
particular version.
- Code that can be used in both the lib and in the curl app is now made to use
the curlx_ prefix. The first function to be available like this is the
curlx_strtoll() function. This is made to allow the app to use existing code,
but without polluting the libcurl API. Further explanations posted here:
http://curl.haxx.se/mail/lib-2004-02/0215.html
Daniel (18 February 2004)
- Fixed buildconf to not use "which" as AIX and Tru64 have what have been
referred to as "horribly broken 'which' programs".
- Made sure dns cache timeout set to -1 really means caching forever.
Daniel (17 February 2004)
- Made it possibly to build c-ares with the libcurl memdebug system to better
track memory.
Daniel (16 February 2004)
- When using ares, we now initialize the ares 'channel' in curl_easy_init()
and re-use that same handle during the entire curl handle's life-time. It
improves performance.
- Fixed a problem when displaying verbose for ipv6-enabled libcurls and
re-used connections. Problem reported and fix verified by Grigory Entin.
- Jeff Lawson fixed the version-check in the SOCKS5 code.
Daniel (15 February 2004)
- Fixed a case where a host cache entry was not flagged in-use properly when a
cached entry was used.
- Andrés García's patch that checks for winmm in the configure script was
applied.
Daniel (13 February 2004)
- Ben Greear's SO_BINDTODEVICE patch for the binding of the local end to a
specific network interface.
- Greg Hewgill found out that the variable holding 'contentlength' wasn't big
enough to hold a large file!
- Tor Arntsen fixed a 64bit-related problem in date-related code in the ftp
department, and there was another potential problem in the name resolve code
too.
Daniel (11 February 2004)
- Removed a few variables that were only set but never used, as some compilers
warn about that and we do not like compiler warnings!
- Removed the need for symlinks in the tests/data directory if curl is built
outside of the source directory and the 'make test' is used. This was done
by providing a "source dir path" to the scripts/servers.
- Now, if the configure script can't find an nroff tool or an option to nroff
to use to convert man pages with, it will completely switch off the built-in
manual.
- 'configure --disable-manual' completely disables the built-in manual from
the curl command tool.
- Andrés García fixed the configure script and a minor source edit, and now
he has managed to get msys/mingw to run configure and then build!
Daniel (9 February 2004)
- The default HTTP Accept: header was modified to the much simpler
"Accept: */*".
- P R Schaffner updated the curl-ssl spec file for RPMs.
- Dominick Meglio brought lots of documentation for the share interface's man
pages that were previously missing.
- Tor Arntsen provided a patch that makes libcurl work-around a bug in the
AIX5 implementation of getaddrinfo(). This makes the FTP PORT stuff work on
ipv6-enabled AIX builds.
- Ken Rastatter provided portability fixes for the curlgtk.c example, and now
it runs on windows with GTK as well!
Daniel (6 February 2004)
- Andrés García made the configure script find gethostbyname() fine when run
with mingw on windows.
- Modified the ldap code to use proper function pointers all over (instead of
mixed data and function pointers) to work-around the picky MIPSPro compiler
warnings.
- A custom Host: header is only considered if the request is not made by
following a location. After discussions with Tim Baker.
Daniel (5 February 2004)
- The libz part of the configure script now only set the two libz-related
define HAVE_ZLIB_H and HAVE_LIBZ if both the lib and the header is found.
If one is missing, none of the defines is set.
- Andrés García fixed the Mingw makefiles.
- Len Krause reported that curl 7.9.X could do uploading from stdin without
doing chunked encoding, which current curl cannot do even if you disable
the transfer-encoding chunked header. Now it can again, and test case 98
verifies this functionality.
- Tor Arntsen fixed a weird getaddrinfo() usage in the FTP code, preventing
the ipv6-code for PORT work on AIX 5.2. We now also provide (better) error
messages when bailing out in the that function.
- Tor Arntsen now provides AIX and IRIX (using gcc, xlc and the MIPSPro
compilers) automated build logs (http://curl.haxx.se/auto/) and we've fixed
numerous minor quirks to make less warnings appear.
Daniel (4 February 2004)
- Based on a patch by Gilad, we now use the custom timeouts when waiting for a
server to connect when using FTP PORT. Previously we always waited 10
seconds, no more no less. We now also changed the default (if no timeout is
set) to wait 60 seconds for the connect before we fail.
Daniel (3 February 2004)
- Modified to link with c-ares instead of ares.
Daniel (2 February 2004)
- Added a configure test to check for which option the (g)nroff tool wants
to extract plain text from the man pages. Tor Arntsen told us the AIX
version of GNU gnroff doesn't support -man!
- Added an undef of accept in memdebug.h to make curl build with --enable-debug
on AIX 5.2 which seems to have accept defined. Reported by Tor Arntsen.
- curl_version() now includes c-ares version info, and curl_version_info() now
returns a struct with version SECOND that also includes that info.
- We are now officially using c-ares for asynch name resolves. c-ares is the
new library, based on the existing ares but with an extended and slightly
modified API.
- Dirk improved the ares timeout code, and now we also include the ares error
string when we fail to resolve a name.
- Another tweak to make test case 91 run fine. Now we have another bit on a
connection that is set true if the connection is marked for 'retry'. That
makes the connection get closed and re-opened and the HTTP-done code must
not complain on the fact that no data was received.
- Based on Dirk Manske's patch, I modified the name resolving with ares to
feature a timeout for really slow lookups. It now defaults to 300 seconds,
but is now adjusted to the CONNECTTIMEOUT/TIMOUE timeouts if one of them
is set.
- Fixed the inclusion of ca-bundle.h to really use the one in the build dir
before the one in the source dir. Domenico Andreoli found out and reported.
- Added test case 97, a simple POST with a custom Content-Type header
replacing the original application/x-www-form-urlencoded one.
Daniel (30 January 2004)
- Added code that attempts to fix the test 91 failure. As has been figured out
by Patrick Smith, the error happens because we re-use a connection that the
server is just about to close and we even manage to send away the request
without seeing an error. On the first read attempt we get a ECONNRESET.
Starting now, we attempt to detect this and if so, we retry the request on a
fresh connection.
- I added test case 510 which is a custom program that does a POST using a
read callback, with chunked transfer-encoding.
- Adjusted one of the MPE/iX changes as it made test case 504 fail all over.
- Added --socks as a recognized option. It works just like --proxy but sets a
SOCKS5 proxy to use. SOCKS5 support has been available in libcurl for a
while, just not provided by the curl tool. This does not currently work for
IPv6-enabled libcurls.
Daniel (29 January 2004)
- Stadler Stephan pointed out that src/hugehelp.c included config.h without
checking the define if its present...
- Ken Hirsch provided patches to make curl build fine on the MPE/iX operating
system.
- Dan Fandrich compiled curl with lots of aggressively pedantic compiler
options and thus found a few minor errors and did some general cleanups to
avoid them.
- Dirk Manske fixed a flaw in ares that prevented it to use non-blocking
sockets properly.
Daniel (28 January 2004)
- Richard Bramante fixed chunked transfer-encoded "uploads" to send a final
CRLF combo properly.
Daniel (27 January 2004)
- Made the response-headers during a CONNECT request to a proxy get passed on
as regular headers, so they appear with -i/-I options and similar.
- Based on a patch by Gisle Vanem, I've made the progress meter display
properly switch to a GB-display when more than 9999MB have been transfered.
Daniel (23 January 2004)
- Gisle Vanem pointed out a curlrc parser problem/crash when an option with a
required didn't have one and was on the last line of a file.
- More Windows fixes for large files. We now build and link with
../lib/strtoofft.c in the app code since Curl_strtoll() is not a provided
libcurl function... Perhaps we should consider a 'common' dir or similar
where we put source code used in both the lib and the client. Or perhaps
we'll just make this function available in the library...
- Vincent Bronner found out the socks5 code crashed when no username was
set.
- Vincent Bronner spotted a problem with proxy username/password when re-using
a persistent connection.
- Fixed the progress meter display for files larger than 2^31 bytes. Gisle
Vanem reported.
Daniel (22 January 2004)
- Gisle Vanem made strtoll() get used when curl is built with the mingw
compiler.
- Gisle Vanem fixed the compressed help text code to display properly.
- Removed the '#define HttpPost' from the public header file, as curl_httppost
is the proper name and it has been for quite some time now. Fixes another
name space pollution.
- Added 'curl_off_t' typedef in the public header file, to be used to provide
large file sizes to the *_LARGE options. Adjusted the code all over to use
this variable type instead of 'off_t'. This is an attempt to make the large
file support work on more platforms. The configure script now checks the
size of the curl_off_t instead of the plain off_t.
Version 7.11.0 (22 January 2004)
Daniel (21 January 2004)
- Removed the defines in the public header file with TIMECOND_ prefixes. They
have been obsolete since April 22nd 2002, and if this causes anyone any
problems now it is very easy to just add CURL_ to the names. This corrects
this name space pollution.
Daniel (19 January 2004)
- David Byron cleaned up how --trace with no option was treated, and also
arguments in a config file without a required parameter!
Daniel (16 January 2004)
- Gisle Vanem fixed a few issues where compilers warned about variables
possibly being used unassigned.
- Minor Interix build problem fixed.
Daniel (15 January 2004)
- Peter Sylvester pointed out some necessary escaping needed in the
acinclude.m4 file when automake 1.8 or later is used.
Daniel (14 January 2004)
- Vincent Bronner fixed the Curl_resolv() return code. This extends the fix
Steve Green provided on december 3...
Daniel (13 January 2004)
- Luke Call made the win32 version of the password prompting function support
backspace.
- Dan Fandrich fixed the hugehelp source file to contain both a compressed and
an uncompressed version in the distribution, so that more people easier can
build curl with the compressed version.
- Diego Casorran brought another AmigaOS build patch for native Amiga builds.
- Matt Veenstra updated the Mac OS X framework files.
- Brian R Duffy brought a section to the INSTALL file on how to build a
SSL-enabled curl using the free Borland C++ compiler. He also updated the
Borland lib/Makefile.b32.
- I fixed the test case 509 which I broke yesterday. Now the libtest are
compiled with an include path that points to the library's source dir, so
that the libtests can include files from the source tree. This was made to
make it possible to use the USE_SSLEAY define in the library test files.
Daniel (12 January 2004)
- Peter Sylvester brought code that now allows a callback to modified the URL
even when the multi interface is used, and then libcurl will simulate a
"follow location" to that new URL. Test 509 was added to test this feature.
- Extended the time we retry servers in the test script, and I also made it
retry the https and ftps servers before they are considered bad. I believe
the previous approach could turn problematic on really slow hosts.
Version 7.11.0-pre1 (12 January 2004)
Daniel (11 January 2004)
- Dominick Meglio pointed out FTPS should use default port 990 according to
IANA.
Daniel (8 January 2004)
- Fixed the SPNEGO configure check to not use -R or other non-portable options
in the LDFLAGS. Reported by Pierre in bug report #872930.
Daniel (5 January 2004)
- Dan Fandrich provided a fix on our zlib usage.
- David J Meyer's patch that introduce large file support to libcurl was
applied. New curl_easy_setopt options that accept 'off_t' arguments are:
INFILESIZE_LARGE
RESUME_FROM_LARGE
MAXFILESIZE_LARGE
Daniel (4 January 2004)
- Based on Dominick Meglio's comments, I made our private version of
gettimeofday() declared static. This would otherwise collide with the same
function in other libs (like ares for example).
- Added Dominick Meglio's description on how to build libcurl with ares
on win32.
Daniel (19 December)
- CURLOPT_IPRESOLVE was not possible to set.
- Gisle Vanem updated the djgpp build files.
Daniel (18 December)
- John McGowan reported a redirect-problem that happened if a site used a URL
like "url.com?var=content" (without a proper slash) and from that address
redirected the user-agent to an absolute directory.
- David Byron made libcurl build fine with both the .NET and VC6 versions of
MSVC
Daniel (16 December)
- Updated test 506 since it started to fail after the cache prune change
yesterday. I also changed it slightly to feature a counter in each debug
output for easier tracing.
Daniel (15 December)
- Old DNS cache entries are now only pruned after curl is done with a request,
and not in the actual name resolve call.
- corrected the --enable-ares patch
- Giuseppe Attardi found and fixed a problem within libcurl that re-used
already freed memory.
Daniel (10 December)
- Gisle Vanem reported that the dict support was broken. I broke it during my
ftps-changes overhaul. I've now added a 'curlassert' function that can be
used to verify expressions, to prevent future errors of the same
kind. They're only present in debug-builds.
- Diego Casorran made curl and libcurl possible to build natively (no more
need for the ixemul library) on AmigaOS.
- Dominick Meglio made configure --enable-ares support a given path to the
installed ares lib, instead of always using it in the curl source tree.
This also fixed the curl-config --libs output.
- Eric S. Raymond patched a very minor man page format error in
libcurl-errors.3
Daniel (8 December)
- Fixed the flaw that made -lz appear twice on the link command line.
- After correspondence with Gisle Vanem, I changed the 'connection aborted'
error text when the FTP response reader failed to more specificly identify
what the problem is.
- Based on a patch from Dominick Meglio, curl-config --feature now outputs
'AsynchDNS' as a feature if libcurl was built with ares. The feature name
is the same that 'curl -V' outputs, for simplicity.
Daniel (3 December)
- Marty Kuhrt made the build up-to-date on VMS, and moved most of the VMS-
specific stuff in the client code to a separate header file.
- Steve Green fixed a return code bug in Curl_resolv(), that made the socks5
code fail.
- swalkaus at yahoo.com patched libcurl to ignore Content-Length: headers
when Transfer-Encoding: chunked is used, as mandated by RFC2616.
Daniel (2 December)
- --ftp-pasv was added, which serves the only purpose of overriding a
previously set --ftpport option. Starting now, --ftp-port is a recognized
alias for --ftpport for consistency.
- Giuseppe Attardi pointed out that we should use MSG_NOSIGNAL when we use
send() and recv(). I added checks for the define in the configure script and
adjusted the code accordingly. If the symbol is present, we won't attempt
to ignore the SIGPIPE signal.
Daniel (1 December)
- Mathias Axelsson set up a bsdftpd-ssl server for me and I could make curl
run fine against its FTPS implementation. Now these FTPS-related things
work:
o explicit and implicit FTPS
o active (PORT) and passive (PASV)
o upload and download
o verified against bsdftpd-ssl and RaidenFTPD
Daniel (27 November)
- James Clancy made the Borland Makefiles up to date.
- Markus Moeller improved the SPNEGO detection in the configure script.
Daniel (25 November)
- Dave May filed bug report #848371, identifying that if you'd do POST over a
proxy to a https server, libcurl didn't POST at all, it just made a GET! It
turned out to be because libcurl wrongly didn't consider the authentication
"negotiation phase" to be complete yet.
I added test case 95 to verify my fix for this.
Daniel (24 November)
- Thanks to Mathias Axelsson, I've been able to work on FTPS for libcurl and it
seems to work somewhat fine now.
The FTPS stuff is based on RFC2228 and the murray-auth-ftp-ssl draft
(version 12). There seems to exist quite a few servers that have implemented
the server side of this.
We can now use ftps:// URLs to explicitly switch on SSL/TSL for the control
connection and the data connection (dealing with two SSL connections forced
me to change a lot of stuff in libcurl).
Alternatively, and what seems to be the recommended way, we can set the new
option CURLOPT_FTP_SSL to one of these values:
CURLFTPSSL_NOPE, - do not attempt to use SSL
CURLFTPSSL_TRY - try using SSL, proceed anyway otherwise
CURLFTPSSL_CONTROL - SSL for the control connection or fail
CURLFTPSSL_ALL - SSL for all communication or fail
Any failure to set the desired level will make libcurl fail with the error
code CURLE_FTP_SSL_FAILED. This new option makes a "normal" ftp:// transfer
attempt to be made securely.