Compare commits

..

2794 Commits

Author SHA1 Message Date
Daniel Stenberg
b122959c8b 7.16.2 2007-04-11 13:12:33 +00:00
Yang Tse
84c5e846b3 convenience SIG_ATOMIC_T macro definition 2007-04-11 11:02:13 +00:00
Dan Fandrich
47f044265e Fixed some out of memory handling issues. 2007-04-11 00:25:41 +00:00
Dan Fandrich
d46d995766 Fixed some out of memory handling issues. 2007-04-10 22:52:50 +00:00
Daniel Stenberg
1a0cc60741 blah 2007-04-10 20:52:30 +00:00
Daniel Stenberg
7cbbd1b56b 41. When doing an operation over FTP that requires the ACCT command (but not
when logging in), the operation will fail since libcurl does detect this and
  thus fails to issue the correct command:
  http://curl.haxx.se/bug/view.cgi?id=1693337
2007-04-10 20:51:52 +00:00
Daniel Stenberg
5daa6b9367 Ravi Pratap provided fixes for HTTP pipelining 2007-04-10 20:46:40 +00:00
Yang Tse
a7aca2e8af configure script will ignore --enable-sspi option for non-native Windows 2007-04-10 19:09:10 +00:00
Yang Tse
d8d3dc9302 --enable-sspi only supported on Windows native builds 2007-04-10 18:53:21 +00:00
Yang Tse
5be7b543d8 Update NTLM flag and description 2007-04-10 02:17:06 +00:00
Dan Fandrich
910ee13b20 Fixed an out of memory handling issue. 2007-04-10 00:38:41 +00:00
Dan Fandrich
35935d71d2 Honour the -a option when -t is enabled. 2007-04-10 00:37:56 +00:00
Dan Fandrich
de17f4436e Changed error return codes to match update code. 2007-04-09 18:24:56 +00:00
Yang Tse
be5ade5c7a VC8+ (VS2005+) has C99 variadic macro support 2007-04-09 17:46:01 +00:00
Yang Tse
0e05a6329a fix out of memory handling issue 2007-04-08 22:49:38 +00:00
Daniel Stenberg
c518c52aba Nick Zitzmann did ssh.c cleanups 2007-04-08 22:44:21 +00:00
Daniel Stenberg
e4c28abdc1 builds on QNX 6 again 2007-04-08 22:23:41 +00:00
Yang Tse
a11374d994 fix out of memory handling issue 2007-04-07 17:25:19 +00:00
Yang Tse
d9e89e170f fix out of memory handling issue 2007-04-07 04:51:35 +00:00
Yang Tse
47594be5c0 fix compiler warning 2007-04-07 00:38:46 +00:00
Yang Tse
0d635a1119 fix out of memory handling issue 2007-04-06 20:53:15 +00:00
Dan Fandrich
e9ffa9a3b8 Fixed a few memory leaks in OOM conditions.
Made libssh2 logging more verbose when debugging is enabled.
2007-04-06 06:32:05 +00:00
Yang Tse
248a5381d4 In case of test failure, try not to show log files of other tests 2007-04-06 04:24:13 +00:00
Dan Fandrich
c1ab3e2d59 Enabled the ssh tests 600-609. 2007-04-05 19:28:33 +00:00
Yang Tse
c895dc8a19 runtests -t discovered this out of memory handling issues 2007-04-05 11:09:46 +00:00
Yang Tse
a0a79ce853 unify fopen() failure error message among tests, allowing
the testsuite to count them as errors of the same kind
2007-04-05 11:05:36 +00:00
Yang Tse
70f9a13ecb Further improve displaying of individual logfiles 2007-04-05 00:14:27 +00:00
Dan Fandrich
c321b9f704 Fixes some more out of memory handling bugs. 2007-04-04 23:41:35 +00:00
Dan Fandrich
7e74349b86 Fixed file handle leak in OOM condition. 2007-04-04 22:49:12 +00:00
Dan Fandrich
fd016fb3ee Fixed curl_slist_append handling of out of memory conditions on the
easycode list (discovered by runtests' torture test).
2007-04-04 20:27:47 +00:00
Yang Tse
09dd2d3856 Building Windows DLLs and C run-time (CRT) linkage issues 2007-04-04 18:03:28 +00:00
Yang Tse
5625e5d5b8 add debug message and expand comment 2007-04-04 08:58:36 +00:00
Yang Tse
8a529bd987 test can be allowed to run if fopen() is capable of fopen()ing
three additional files once that we have already open()ed the
big bunch of file descriptors.
2007-04-04 06:39:03 +00:00
Yang Tse
8fe9376d54 move WinSock definitions of EBADF, EINTR, EINVAL and EAFNOSUPPORT to setup_once.h 2007-04-04 06:06:36 +00:00
Yang Tse
a1f72943e9 cleanup 2007-04-04 05:04:47 +00:00
Dan Fandrich
0969a96732 Whoops--didn't mean to enable the ssh tests quite yet. 2007-04-04 04:57:40 +00:00
Yang Tse
ec8019b2a8 test can be allowed to run if fopen() is capable of fopen()ing
SAFETY_MARGIN additional files once that we have already open()ed
the big bunch of file descriptors.
2007-04-04 03:19:59 +00:00
Dan Fandrich
27d2d78059 Added more SSH tests (left disabled for now). 2007-04-04 00:48:37 +00:00
Dan Fandrich
7d48d851a2 Fixed a memory leak and improper shutdown on SFTP post-quote command failure. 2007-04-04 00:46:16 +00:00
Daniel Stenberg
6a2cecf153 Only one issue left to deal with. Most of the others cut due to lack of
response and/or my personal lack of time to deal further with them at this
point.
2007-04-03 21:15:31 +00:00
Daniel Stenberg
990b15e402 Rob Jones fixed better #ifdef'ing for a bunch of #include lines. 2007-04-03 20:54:37 +00:00
Yang Tse
584f3639e3 update copyright year 2007-04-03 18:25:18 +00:00
Yang Tse
2886ce96b0 Verify if the test is limited by an ancient stdio with a 256
open file limit.  In this case the test is skipped with a
message showing this limitation when the number of open files
needed for the test is greater than 256.
2007-04-03 18:02:02 +00:00
Yang Tse
3344142b87 fix enumeration of disabled tests when they have the highest number 2007-04-03 15:59:52 +00:00
Yang Tse
f1b4f5e2ae fix MSDOS symbol check 2007-04-03 15:35:19 +00:00
Yang Tse
bcf0af9ddb recover code simplification lost with last commit 2007-04-03 13:26:05 +00:00
Yang Tse
70550a0572 Improve displaying of logfiles making sure all lines end with \n
and avoid using ! as last char of line.
2007-04-03 12:27:03 +00:00
Gisle Vanem
d7088d1032 djgpp isn't the only possible DOS target.
Use the more traditional DJGPP define.
Added basename() for non-djgpp targets.
2007-04-03 10:55:01 +00:00
Gisle Vanem
d07a874899 Simplify setting binary mode on file-descriptors.
Work around the non-standard _setmode() in Metaware's HighC.
2007-04-03 10:30:36 +00:00
Gisle Vanem
c420113795 DOS targets do have setmode(). 2007-04-03 10:18:38 +00:00
Dan Fandrich
5c850b825b Added --ftp-account to --help output. 2007-04-03 04:11:12 +00:00
Yang Tse
7bbad0b534 try not to link with unneeded libs, avoiding global LDADD 2007-04-03 02:57:54 +00:00
Yang Tse
305e03905f Cleanup. Warnings related with FD_SET, FD_ISSET, and FD_ZERO macros
are not icc 9.0 specific.
2007-04-03 02:45:04 +00:00
Yang Tse
161be66c89 when detecting un/supported sshd options use curl's sshd config file. 2007-04-03 02:36:55 +00:00
Dan Fandrich
4095c9de37 Eliminate the sshd option checking dependency on wc and make it faster. 2007-04-03 00:06:39 +00:00
Daniel Stenberg
20d33ad7e5 Nick Zitzmann made CURLOPT_POSTQUOTE work for SFTP as well. 2007-04-02 21:24:05 +00:00
Yang Tse
b8c12fe658 fix error in previous commit 2007-04-02 04:14:59 +00:00
Yang Tse
e4d4ee8db5 fix compiler warning 2007-04-02 03:38:18 +00:00
Yang Tse
8a7d58378b fix compiler warning 2007-04-02 02:13:26 +00:00
Yang Tse
bdbaedc452 verify ssh daemon version 2007-04-02 01:21:57 +00:00
Gunter Knauf
0839621f47 print update message only if we really update CVS. 2007-04-01 13:59:50 +00:00
Gunter Knauf
bf2c1e099c ignore another generated file. 2007-04-01 12:37:51 +00:00
Daniel Stenberg
6c6e4710b5 Robert Iakobashvili made curl_multi_remove_handle() a lot faster when many
easy handles are added to a multi handle, by avoiding the looping over all
the handles to find which one to remove.
2007-04-01 08:24:23 +00:00
Daniel Stenberg
5e7164f87a Matt Kraai provided a patch that makes curl build on QNX 6 fine again. Mostly
by letting configure check for setmode and ifdef on HAVE_SETMODE. NOTE: non-
configure platforms that havve setmode() needs their hard-coded config.h files
fixed. I fixed the src/config-win32.h.
2007-04-01 07:51:30 +00:00
Dan Fandrich
ef10eaeb29 Added scp and sftp nonexistent file retrieval tests, but leave them
disabled for now.
2007-04-01 06:28:12 +00:00
Daniel Stenberg
fce4dcccd8 26 flaws identified by coverity.com 2007-03-31 21:38:59 +00:00
Daniel Stenberg
f2beee209b Since the str2num() function gets called with the 'nextarg' pointer from
within the getparameter a lot, we must check it for NULL before accessing the
str data.
CID 14 of the coverity.com scan
2007-03-31 21:35:56 +00:00
Daniel Stenberg
9d8b22d3de check the correct variable to want about --stderr failures properly
CID 18 by the coverity.com scan
2007-03-31 21:28:38 +00:00
Daniel Stenberg
5796c7b132 fix memory leak in case of memory problems
CID 16 by coverity.com scan
2007-03-31 21:20:16 +00:00
Daniel Stenberg
dc2ea33e32 fix a (minor) memory leak in case of error
CID 21 in the coverity.com scan
2007-03-31 21:15:37 +00:00
Daniel Stenberg
c1f117700a Pointless to check for non-NULL pointers that already have been dereferenced
and they have to be non-NULL long before this check.
CID 22 in the coverity.com scan
2007-03-31 21:10:05 +00:00
Daniel Stenberg
7ea90c46eb avoid dereferencing a NULL pointer by setting a default word to lookup in case
it is missing
CID 5 in the coverity.com scan
2007-03-31 21:06:40 +00:00
Daniel Stenberg
4d9e24d1e4 Better deal with NULL pointers.
CID 3 and 4 from the coverity.com scan.
2007-03-31 21:01:18 +00:00
Daniel Stenberg
1f236ba108 "Pixel" fixed a problem that appeared when you used -f with user+password
embedded in the URL.
2007-03-31 20:47:23 +00:00
Daniel Stenberg
d27813c2dd *** empty log message *** 2007-03-31 20:46:47 +00:00
Daniel Stenberg
453e9b0dce add units to a few info 2007-03-31 20:19:02 +00:00
Daniel Stenberg
b8626c3df8 new URL for wxWidgets binding 2007-03-31 20:17:26 +00:00
Dan Fandrich
f8d78d57a7 Disable the SSH tests until the libssh2 bugs that causes test hangs
are sorted out.
2007-03-31 20:00:40 +00:00
Daniel Stenberg
371a25eee9 When curl_easy_duphandle() fails because it can't get or make a connection
cache, we must make sure not to derefence the NULL pointer...
CID 6 coverity.com scan
2007-03-31 11:28:03 +00:00
Daniel Stenberg
e535a71c71 The info types cannot be checked for explicity by ANDing the types since they
have not been properly defined to allow this! Instead of changing the defines
and break the ABI/API, I opted to modify the code to check for exact type
matches.
CID 10 coverity.com scan
2007-03-31 11:12:28 +00:00
Daniel Stenberg
b9e5fecf5f Check for a NULL easy->easy_conn in multi_getsock() since it can in fact
happen when curl_multi_remove_handle() is called.
CID 13. coverity.com scan
2007-03-31 10:56:07 +00:00
Daniel Stenberg
3af08472ad Removed check for ftpcode being NULL, as later it is derefenced unconditionally
anyway and we can just as well rely on it being valid.
CID 12, coverity.com scan
2007-03-31 10:39:54 +00:00
Yang Tse
fdc1b61507 sshd might fail to start if given an unsupported configuration option.
Try to avoid this problem checking for some possible unsupported options,
and avoid using them in the configuration file.
2007-03-31 03:21:08 +00:00
Dan Fandrich
7fd154f094 Fixed some typos in the comments. 2007-03-30 22:07:48 +00:00
Dan Fandrich
a209c32bf3 Resurrected old FTPS error tests 402 and 403 as 404 and 405. 2007-03-30 22:04:14 +00:00
Daniel Stenberg
75db459f0a Pointer "conn" dereferenced before NULL check. found by coverity.com scan 2007-03-30 20:54:32 +00:00
Daniel Stenberg
74e54c5a49 Pointer "cur_pos" dereferenced before NULL check, found by coverity.com scan.
Removed the NULL check since the pointer must be valid already.
2007-03-30 20:52:42 +00:00
Daniel Stenberg
6fc151577e pointless check for 'out' being non-NULL, since it was badly done and is
unnecessary - found by coverity.com scan
2007-03-30 20:50:31 +00:00
Daniel Stenberg
3dcc7202d5 dead code removed, found by the coverity.com scan 2007-03-30 19:59:15 +00:00
Dan Fandrich
40981286ea Added HTTP --max-filesize tests and FTPS CCC failure test. 2007-03-30 18:50:55 +00:00
Yang Tse
f55a1c3a6c Searching for sshd and sftp-server will be done first
in the PATH and afterwards in other common locations.
2007-03-30 10:11:49 +00:00
Yang Tse
c5586a65c2 ignore more generated files 2007-03-30 02:59:39 +00:00
Dan Fandrich
ffb11ad5c6 Don't tear down the ftp connection if the maximum filesize was exceeded
and added tests 290 and 291 to check.
2007-03-30 01:13:47 +00:00
Dan Fandrich
fbb1e49215 Added FTP-SSL failure test 402 2007-03-30 00:08:41 +00:00
Dan Fandrich
c26320d94f Added ftps upload test 401 2007-03-29 22:50:23 +00:00
Dan Fandrich
f6e892b1b6 Added a libssh2 section. 2007-03-29 21:01:07 +00:00
Dan Fandrich
59302d4ba0 Show an absolute sftp: file path to give an additional example. 2007-03-29 20:44:06 +00:00
Dan Fandrich
c563a53c16 Eliminated extra / in scp/sftp URLs. 2007-03-29 19:19:06 +00:00
Dan Fandrich
7763bb9172 Send an EOF message before closing a channel, as recommended by RFC4254.
Enable libssh2 tracing when ssh debugging is turned on.
2007-03-29 19:17:18 +00:00
Dan Fandrich
e37a49086e Add another option to tighten the test environment. 2007-03-29 18:46:09 +00:00
Yang Tse
a1e5c621c0 fix compiler warning 2007-03-29 12:29:32 +00:00
Dan Fandrich
f776c1d2eb Abort if attempting to run as root. 2007-03-29 05:25:11 +00:00
Yang Tse
3d5a8515a6 fix error introduced in last commit 2007-03-29 00:11:55 +00:00
Yang Tse
42a7905205 Update comment 2007-03-28 23:53:13 +00:00
Yang Tse
bfa0f8c6c2 fix compiler warning 2007-03-28 19:05:43 +00:00
Yang Tse
869d192ffc Improve detection of socket events which allow a further recv() call
to complete with no delay and actually find out what happened with
the socket. As well as detection of socket send()able condition.

This also allows removal of a Cygwin specific block of code.
2007-03-28 18:59:42 +00:00
Gisle Vanem
60bc103a78 djgpp uses gcc which has varadic macros. 2007-03-28 04:48:11 +00:00
Gisle Vanem
8a0a7ce3a8 Fix compiler warning. 2007-03-28 04:44:14 +00:00
Dan Fandrich
31b1e988f4 Only show exit status in verbose mode. 2007-03-28 04:36:09 +00:00
Gisle Vanem
25c064c888 Simplified code around 'tld_errmsg' a bit. 2007-03-28 04:23:33 +00:00
Dan Fandrich
884171aecf Don't launch sshd as a daemon so its output can be logged. 2007-03-28 04:05:55 +00:00
Gunter Knauf
45b2577974 added variadic macro stuff. 2007-03-27 19:27:43 +00:00
Yang Tse
d58c7a8bdd Update message 2007-03-27 18:16:35 +00:00
Yang Tse
eed47311f8 New Internal wrapper function Curl_select() around select (2), it
uses poll() when a fine poll() is available, so now libcurl can be
built without select() support at all if a fine poll() is available.
2007-03-27 18:15:26 +00:00
Yang Tse
59eaae42b8 don't retry select() call upon unrecoverable error EBADF 2007-03-27 15:22:49 +00:00
Dan Fandrich
59c620bfa5 Daniel Johnson's fix for shared object extension detection on Mac OS X. 2007-03-27 05:10:20 +00:00
Yang Tse
4294cac701 Platforms that lack autotools support should define HAVE_VARIADIC_MACROS_C99
and/or HAVE_VARIADIC_MACROS_GCC for specific compiler versions that support
variadic macros with C99 style and/or old gcc style in their specific config.h
file.

If previous definitions are not done, even when aplicable, and --disable-verbose
is used, the fallback (void) method will be used to define infof, avoiding the
inclusion of unwanted strings in the resulting library/executable.
2007-03-27 04:17:26 +00:00
Dan Fandrich
282127fbff Tighten up a few more OpenSSH options 2007-03-27 04:01:39 +00:00
Yang Tse
d49e9fad19 Fix date 2007-03-26 23:26:07 +00:00
Yang Tse
fba4cd0e62 Internal function Curl_select() renamed to Curl_socket_ready() 2007-03-26 23:23:46 +00:00
Dan Fandrich
2166645ce4 Added SFTP and SCP upload tests in test602 & test603 2007-03-26 19:23:00 +00:00
Dan Fandrich
844f5b6b45 Added test600 and test601, SFTP and SCP file retrieval tests. 2007-03-26 18:04:05 +00:00
Gunter Knauf
424063235b catch up new lib extension when build with gcc/nlmconv. 2007-03-26 17:18:36 +00:00
Gunter Knauf
8272abef28 changed link lib order to make nlmconv happy. 2007-03-26 17:01:35 +00:00
Gunter Knauf
5fbc93c3eb added CVS Id tag. 2007-03-26 01:54:06 +00:00
Gunter Knauf
8851df41c5 fixed build to use compiler-default lib extension. 2007-03-26 01:50:44 +00:00
Daniel Stenberg
a6f4612154 #92 is fixed 2007-03-25 08:41:41 +00:00
Daniel Stenberg
52e5e869e6 Added the How to get your patches into the libcurl sources instruction posted
recently
2007-03-25 08:41:22 +00:00
Daniel Stenberg
12ef1035bb added Daniel Johnson 2007-03-25 08:16:42 +00:00
Daniel Stenberg
6c56b5301f - Daniel Johnson fixed multi code to traverse the easy handle list properly.
A left-over bug from the February 21 fix.
2007-03-25 08:16:16 +00:00
Daniel Stenberg
07b6625573 addressed (replied to with comments) most out-stading release issues and moved
one over to KNOWN_BUGS
2007-03-25 07:44:05 +00:00
Yang Tse
fa0780bb91 fix compiler warning 2007-03-25 03:20:17 +00:00
Yang Tse
f08ac86834 fix compiler warning 2007-03-25 02:30:58 +00:00
Yang Tse
d6eca89229 fix compiler warning 2007-03-25 01:59:52 +00:00
Dan Fandrich
2bd1d7e996 Fixed a couple of compile problems. 2007-03-24 17:23:01 +00:00
Dan Fandrich
3b355421ec Added sshserver.pl 2007-03-24 06:29:58 +00:00
Dan Fandrich
0dd1219668 Fixed a memory leak when specifying a proxy with a file: URL and added
test case 288 to verify it.
2007-03-24 02:15:20 +00:00
Dan Fandrich
b7131009fb Changed the test harness to attempt to gracefully shut down servers
before resorting to the kill -9 hammer.

Added test harness infrastructure to support scp/sftp tests, using
OpenSSH as the server.
2007-03-24 01:01:28 +00:00
Daniel Stenberg
3d528e1b15 add missing state name for the debug state switch output 2007-03-23 22:25:04 +00:00
Daniel Stenberg
f9a339a225 fix debug message 2007-03-23 22:24:33 +00:00
Dan Fandrich
0043e87014 Added --pubkey option to curl and made --key also work for SCP/SFTP,
plus made --pass work on an SSH private key as well.
2007-03-23 17:59:40 +00:00
Yang Tse
0f634a0c89 fix yet another leftover in previous commit 2007-03-23 12:13:08 +00:00
Yang Tse
047cd1a533 fix leftover in previous commit 2007-03-23 12:09:16 +00:00
Yang Tse
f9eb61e90a fix compiler warning: empty body in an if/else-statement 2007-03-23 12:01:19 +00:00
Yang Tse
34afb0b257 Change spelling, ONE_TERRABYTE -> ONE_TERABYTE
Shave off a couple of function calls in the part of
Curl_pgrsUpdate() which is always executed when called.

Fix a couple of comments.
2007-03-23 04:23:53 +00:00
Dan Fandrich
6bb9bd8b69 Don't shut down sftp in an error if it was never started. 2007-03-23 00:03:34 +00:00
Dan Fandrich
72175c738f Free some additional strings on exit to avoid memory leaks. 2007-03-22 19:45:20 +00:00
Yang Tse
2288094b26 fix wrong macro name introduced in las commit 2007-03-22 18:59:14 +00:00
Yang Tse
273b2b230b Add check for compiler variadic macro support in configuration script 2007-03-22 18:25:38 +00:00
Dan Fandrich
3229a80c9f Fixed unused variable compiler warning. 2007-03-22 17:58:01 +00:00
Dan Fandrich
5eba84eed3 Use C99-style variadic macros when available. 2007-03-22 17:18:41 +00:00
Yang Tse
4fb483012c Add a couple of local macros to improve code readability.
For completeness sake, wait_ms() might also get interrupted when
experimental CURL_ACKNOWLEDGE_EINTR is defined.
2007-03-22 15:32:28 +00:00
Daniel Stenberg
f1a8fd843f -z hasn't supported "yesterday" for quite some time... 2007-03-22 15:23:00 +00:00
Yang Tse
8920606b8b attempt to keep message length below 80 chars 2007-03-22 14:41:10 +00:00
Yang Tse
90ce18019c reverted back to previous version => http://curl.haxx.se/mail/lib-2007-03/0258.html 2007-03-21 13:09:39 +00:00
Yang Tse
fe10cb2ef5 avoid the use of variadic macros for greater portability 2007-03-21 08:17:13 +00:00
Yang Tse
842be6c52f fix compiler warning: implicit conversion from "long" to "int" 2007-03-21 07:29:03 +00:00
Yang Tse
e4b754f64e Fixed: When a signal was caught awaiting for an event using Curl_select()
or Curl_poll() with a non-zero timeout both functions would restart the
specified timeout. This could even lead to the extreme case that if a
signal arrived with a frecuency lower to the specified timeout neither
function would ever exit.

Added experimental symbol definition check CURL_ACKNOWLEDGE_EINTR in
Curl_select() and Curl_poll(). When compiled with CURL_ACKNOWLEDGE_EINTR
defined both functions will return as soon as a signal is caught. Use it
at your own risk, all calls to these functions in the library should be
revisited and checked before fully supporting this feature.
2007-03-20 20:00:40 +00:00
Gisle Vanem
34ed4642ec Remove unneeded 'HAVE_*' defines. 2007-03-20 16:30:14 +00:00
Yang Tse
248f057137 Avoid false positive detection of yaSSL 2007-03-19 15:41:28 +00:00
Daniel Stenberg
2b6a0c0a7c committed 2007-03-19 12:14:49 +00:00
Yang Tse
072a8b2955 Bryan Henderson fixed the progress function so that it can get called
more frequently allowing same calling frecuency for the client progress
callback, while keeping the once a second frecuency for speed calculations
and internal display of the transfer progress.
2007-03-19 12:02:33 +00:00
Daniel Stenberg
0c817b6614 language fix 2007-03-18 23:16:36 +00:00
Daniel Stenberg
e9cbd0c366 Removed: yassl build breaks
Added: Frequent calling of user progress callback
2007-03-18 23:13:45 +00:00
Daniel Stenberg
ff314d7600 detect and show if built with yassl, but also set the "openssl" flag internally
since that is the API yassl attempts to provide
2007-03-18 22:37:23 +00:00
Daniel Stenberg
d052e545af detect if built with the OpenSSL API "emulated" by yassl 2007-03-18 22:36:34 +00:00
Yang Tse
da2b75a026 Fix compiler warning/error: ISO C90 forbids mixed declarations and code 2007-03-18 17:29:24 +00:00
Yang Tse
0e2d3b7b6c Code refactoring, extracting a new function wait_ms() from Curl_select and
Curl_poll() which is called whenever not a single valid file descriptor is
passed to these functions.

Improve readibility using a poll() macro to replace WSApoll().
2007-03-18 04:51:40 +00:00
Gisle Vanem
46a50aa001 Remove unneeded 'HAVE_*' defines. Detect i386 OS-target (gcc). 2007-03-17 18:19:15 +00:00
Gisle Vanem
605a391178 Added cvs id. Use TOPDIR variable. Updated CSOURCES.
Dependencies are now put in external file depend.dj.
2007-03-17 17:58:45 +00:00
Gisle Vanem
de6f82d094 Added a hack to work around the circular dependency when
CURL_DEBUG is defined.
2007-03-17 17:56:21 +00:00
Daniel Stenberg
c1f3edbdd1 openssl/bio.h doesn't exist when we build with yassl so avoid trying 2007-03-16 22:44:46 +00:00
Dan Fandrich
a20a6f67c5 Fixed the test case to use a truly invalid urlglob range. 2007-03-16 04:34:53 +00:00
Daniel Stenberg
75931492c3 Sebastien Trottier's issue 2007-03-15 22:43:11 +00:00
Daniel Stenberg
800b55c702 eight fresh issues to keep track of 2007-03-15 22:34:49 +00:00
Dan Fandrich
a53411c0dd Various memory leaks plugged and NULL pointer fixes made in the ssh code. 2007-03-15 22:29:10 +00:00
Daniel Stenberg
b169aa2992 - Nick made the curl tool accept globbing ranges that only is one number, i.e
you can now use [1-1] without curl complaining.
2007-03-15 22:05:01 +00:00
Dan Fandrich
9189ac1141 Fixed some memory leaks in various error paths. 2007-03-15 21:25:56 +00:00
Yang Tse
5c7c79bd08 show better description for AMD64-linux static libraries PIC check 2007-03-15 15:35:51 +00:00
Dan Fandrich
8605321d06 Fixed a memory leak. 2007-03-15 00:04:41 +00:00
Daniel Stenberg
d314453037 yassl doesn't have SSL_get_shutdown() in its OpenSSL() layer so we check for
it and avoid it, even if this cripples the CCC command
2007-03-14 23:40:46 +00:00
Dan Fandrich
9cb69f77f1 Fixed a NULL pointer dereference on sftp initialization failure.
Added some more debug logs.
2007-03-14 02:04:17 +00:00
Dan Fandrich
ee332e0c8e --ftp-ssl-control is now honoured on ftps:// URLs 2007-03-13 19:54:10 +00:00
Gisle Vanem
0188493d54 Use Curl_inet_pton() instead of inet_pton(). 2007-03-13 12:52:28 +00:00
Dan Fandrich
ae07fd2ba8 libcurl supplies its own crypto hash functions when SSL is disabled, so
'crypto' tests aren't dependent on SSL.  Compiling with
--disable-crypto-auth will cause test failures, however.
2007-03-12 20:50:16 +00:00
Daniel Stenberg
d76a734043 RECV is for download 2007-03-12 13:20:39 +00:00
Yang Tse
b66def2b4c Emmanuel Dreyfus fixed not being able to find ber_free() in
libldap when available in liblber.
2007-03-12 05:09:25 +00:00
Daniel Stenberg
20b9ab49a7 can just as well NULLify the pointer in a single spot 2007-03-11 22:48:58 +00:00
Daniel Stenberg
c8cd13337e reverted the pselect patch => http://curl.haxx.se/mail/lib-2007-03/0100.html 2007-03-11 09:11:29 +00:00
Yang Tse
40e9e40cb4 fix compiler warning: unused variable 2007-03-11 00:26:01 +00:00
Daniel Stenberg
09c70dec08 Eygene Ryabinkin fixed a use-after-free issue with HTTP transfers with the
multi interface
2007-03-10 22:51:20 +00:00
Daniel Stenberg
0dc570862a Bryan Henderson 2007-03-10 22:36:53 +00:00
Daniel Stenberg
dbaf4f9361 - Bryan Henderson introduces two things:
1) the progress callback gets called more frequently (at times)
  2) libcurl *might* call the callback when it receives a signal
2007-03-10 12:11:21 +00:00
Daniel Stenberg
433575068c pycurl 7.16.1 2007-03-10 11:54:38 +00:00
Yang Tse
40087ce7c0 change max allowed time for this test to complete to 90 seconds 2007-03-10 00:19:05 +00:00
Dan Fandrich
e12d46ac50 Updated the test harness to add a new "crypto" feature check and updated the
appropriate test case to use it.  For now, this is treated the same as the
"SSL" feature because curl doesn't list it separately.
2007-03-09 23:39:42 +00:00
Daniel Stenberg
1e55ed5c7d - Robert Iakobashvili fixed CURLOPT_INTERFACE for IPv6. 2007-03-09 22:48:07 +00:00
Daniel Stenberg
6dd4fe0740 - Robert A. Monat improved the maketgz and VC6/8 generating to set the correct
machine type too.
2007-03-09 22:26:59 +00:00
Daniel Stenberg
3789e2e6ce - Justin Fletcher fixed a file descriptor leak in the curl tool when trying to
upload a file it couldn't open. Bug #1676581
  (http://curl.haxx.se/bug/view.cgi?id=1676581)
2007-03-09 21:51:38 +00:00
Dan Fandrich
1962ebf8e7 Updated the test harness to check for protocol support before running each
test, fixing KNOWN_BUGS #11.  Fixed some tests to more accurately specify
their required servers and features.
2007-03-09 21:01:39 +00:00
Dan Fandrich
7c144d5a7e Made a few cleanups. 2007-03-08 20:00:28 +00:00
Dan Fandrich
0f0540d00b Added SSL as a required feature for test case 400. 2007-03-08 19:50:32 +00:00
Yang Tse
3f29ed6d44 remove code superceeded by the new method used to force
libtool to skip C++ and Fortran checks in patchset:
http://cool.haxx.se/cvs.cgi/curl/ares/configure.ac.diff?r1=1.60&r2=1.64
2007-03-08 12:04:30 +00:00
Dan Fandrich
1bfa7dfe39 Added test infrastructure to support basic FTPS tests. This currently
supports only ftps:// URLs with --ftp-ssl-control specified, which
implicitly encrypts the control channel but not the data channels.  That
allows stunnel to be used with an unmodified ftp server in exactly the
same way that the test https server is set up.
Added test case 400 as a basic FTPS test.
2007-03-08 02:38:49 +00:00
Dan Fandrich
85daec253c Honour --ftp-ssl-control on ftps:// URLs to allow encrypted control and
unencrypted data connections.
2007-03-07 22:42:05 +00:00
Yang Tse
389a15a867 fix test leftover in previous commit 2007-03-07 18:02:35 +00:00
Yang Tse
74befdfbe0 force libtool to build static libraries with PIC on AMD64 2007-03-07 17:59:03 +00:00
Yang Tse
d31feb8ff9 Autoconf redefines the M4 builtin macro 'm4_undefine' in such a way that
it fails if the macro that is being undefined is not already defined. To
make this work under all cases and be sure that at a certain point some
specific macro isn't defined we must use the following style in configure:

m4_ifdef([macro], [m4_undefine([macro])])
2007-03-07 01:13:03 +00:00
Dan Fandrich
4c3568bfd6 Fixed a couple of problems detected by valgrind in test cases 181 & 216 2007-03-06 19:55:11 +00:00
Dan Fandrich
b4ef5e22e0 Autoconf 2.57 didn't like these m4_undefine for some reason (probably a bug).
Luckily, they weren't needed.
2007-03-06 18:08:20 +00:00
Yang Tse
23786eae32 skip libtool C++ and Fortran linker checks 2007-03-06 16:53:53 +00:00
Yang Tse
c84f84c70d skip libtool C++ and Fortran checks 2007-03-06 05:05:50 +00:00
Yang Tse
e5f8e5e57a stricter newline policy 2007-03-03 05:16:57 +00:00
Yang Tse
53a3abc76b 30 seconds isn't long enough for this test on a loaded server. 2007-03-03 04:27:19 +00:00
Yang Tse
bfd6474f6b stricter newline policy 2007-03-03 02:06:44 +00:00
Daniel Stenberg
d3b89e114a - Robert A. Monat and Shmulik Regev helped out to fix the new */Makefile.vc8
makefiles that are included in the source release archives, generated from
  the Makefile.vc6 files by the maketgz script. I also modified the root
  Makefile to have a VC variable that defaults to vc6 but can be overridden to
  allow it to be used for vc8 as well. Like this:

    nmake VC=vc8 vc
2007-03-02 22:42:43 +00:00
Daniel Stenberg
aeddea2b71 remove unncessary and wrong remark 2007-03-01 21:26:23 +00:00
Yang Tse
cef5b14baa Reduce the posibility of leaving the sockfilter hanging around when
tearing down the test ftp server due to a read error condition.
2007-03-01 16:42:02 +00:00
Yang Tse
82d310d0d9 Do not remove CURLM_STATE_WAITPROXYCONNECT from the CURLMstate enum
in builds with HTTP support disabled to keep consistent enum values
for CURLMstate in all kind of builds.
2007-03-01 12:02:17 +00:00
Yang Tse
4fdb42377b proper symbol definition check for Novell NetWare 2007-02-28 15:10:20 +00:00
Yang Tse
be8a5d0aef proper symbol definition check for all AmigaOS flavours 2007-02-28 14:45:48 +00:00
Daniel Stenberg
dd433679e6 clarify that -K files are expected to have one option per line 2007-02-28 10:30:57 +00:00
Yang Tse
99dcd33f04 protect from themselves those who need it 2007-02-28 05:15:56 +00:00
Yang Tse
e817eb6cec log a 1120 chars long string to aid in quoted-printable and soft
line break detection in daily build logs.
2007-02-27 23:46:48 +00:00
Daniel Stenberg
060f7ca2d2 - Hang Kin Lau found and fixed: When I use libcurl to connect to an https
server through a proxy and have the remote https server port set using the
  CURLOPT_PORT option, protocol gets reset to http from https after the first
  request.

  User defined URL was modified internally by libcurl and subsequent reuse of
  the easy handle may lead to connection using a different protocol (if not
  originally http).

  I found that libcurl hardcoded the protocol to "http" when it tries to
  regenerate the URL if CURLOPT_PORT is set. I tried to fix the problem as
  follows and it's working fine so far
2007-02-27 22:12:15 +00:00
Gisle Vanem
638c715a51 Added "CSOURCES = $(CURL_SOURCES)". 2007-02-27 15:44:25 +00:00
Gisle Vanem
af9a63287e Added TOPDIR variable. Put dependencies in external file.
Added -DHAVE_STRUCT_TIMEVAL to CFLAGS.
2007-02-27 15:35:06 +00:00
Gisle Vanem
00f36c5f45 Remove $(CURL_SOURCES). 2007-02-27 15:32:29 +00:00
Gisle Vanem
e69d82a5fb Added TOPDIR variable. Put dependencies in external file.
config.h includes ../lib/config.dos.
2007-02-27 15:27:00 +00:00
Gisle Vanem
d165da07fe Added TOPDIR variable. Put dependencies in external file. 2007-02-27 15:24:32 +00:00
Gisle Vanem
15363cd6dc Added TOPDIR variable. Updated package locations.
Simplified dependency generation.
2007-02-27 15:22:37 +00:00
Daniel Stenberg
b3272fd799 HTTP Digest header parsing fix 2007-02-27 13:51:20 +00:00
Daniel Stenberg
fa31335926 Somewhat updated, changes include: I tried to be more agnostic about the
specific SSL library that might be used, and I cut out the closepolicy stuff
that we no longer support
2007-02-27 12:44:14 +00:00
Yang Tse
acc4cf87cd no proxy support if libcurl is built with HTTP disabled 2007-02-27 02:24:13 +00:00
Daniel Stenberg
7444342675 Jose Kahan pointed out a Digest server that provided the algorith last in the
header line without quotes and with a CRLF immediately following...
2007-02-26 22:03:01 +00:00
Gisle Vanem
ee1235a7cd Removed inclusion of <sys/types.h> in .c-files
since it's already included through "setup.h".
2007-02-26 04:33:19 +00:00
Gisle Vanem
c514a2a89a Removed inclusion of <sys/types.h> and <sys/stat.h> in .c-files
since they're already included through "setup.h".
2007-02-26 04:24:26 +00:00
Gisle Vanem
e2f0580dfe Removed unneeded 'HAVE_x' defines. 2007-02-26 03:41:25 +00:00
Gisle Vanem
d165bed2d6 Fix typo. 2007-02-26 03:38:26 +00:00
Gisle Vanem
802a5b618e Constify some arguments. 2007-02-25 18:02:27 +00:00
Gisle Vanem
1ca763d1d1 Use dynamic version of libcurl. Use '\' in dependencies. 2007-02-25 17:34:10 +00:00
Daniel Stenberg
8b26c93a59 Two new mirrors, but the total amount of mirrors still don't go up very much
due to the frequent dying of mirrors...
2007-02-25 11:50:11 +00:00
Daniel Stenberg
b819c72700 - Adam D. Moss made the HTTP CONNECT procedure less blocking when used from
the multi interface. Note that it still does a part of the connection in a
  blocking manner.
2007-02-25 11:38:13 +00:00
Daniel Stenberg
d2cfb7fd13 Works for me 2007-02-23 10:08:46 +00:00
Daniel Stenberg
e37973913d - Added warning outputs if the command line uses more than one of the options
-v, --trace and --trace-ascii, since it could really confuse the user.
  Clarified this fact in the man page.
2007-02-23 09:48:01 +00:00
Daniel Stenberg
8b5295d003 setting CURLOPT_PROXY to "" explicitly disables the use of a proxy (even if
there is an environment variable set)
2007-02-22 21:21:05 +00:00
Dan Fandrich
fe0afb211e 5 seconds isn't always enough time to start a server on a loaded system. 2007-02-22 18:35:57 +00:00
Yang Tse
141b3d0c2f remove redundant check in timestamp detection 2007-02-22 17:34:02 +00:00
Yang Tse
2a6a22a3b0 include <sys/types.h> when checking availability of the bool type 2007-02-22 16:44:43 +00:00
Yang Tse
4937281ddc compiler warning fix 2007-02-22 07:39:45 +00:00
Yang Tse
8e27ed2fdd Fix compiler warning "statement is unreachable" 2007-02-22 06:22:19 +00:00
Yang Tse
9bf9617ad6 Fix compiler warnings
"case label value exceeds maximum value for type" and
"comparison is always false due to limited range of data type"

Both triggered when using a bool variable as the switch variable
in a switch statement and using enums for the case targets.
2007-02-22 06:19:39 +00:00
Yang Tse
69565afab0 Check for stdbool.h at configuration stage, and include it if available.
Check for lowercase 'bool' type at configuration stage. If not available
provide a suitable replacement with a type definition of 'unsigned char'
in setup_once.h

Move definitions of TRUE and FALSE to setup_once.h
2007-02-22 02:51:54 +00:00
Daniel Stenberg
39aac63521 silence two cases of "comparison between signed and unsigned" 2007-02-21 22:02:13 +00:00
Daniel Stenberg
f19d333ef6 - Ravi Pratap provided work on libcurl making pipelining more robust and
fixing some bugs:
  o Don't mix GET and POST requests in a pipeline
  o Fix the order in which requests are dispatched from the pipeline
  o Fixed several curl bugs with pipelining when the server is returning
    chunked encoding:
    * Added states to chunked parsing for final CRLF
    * Rewind buffer after parsing chunk with data remaining
    * Moved chunked header initializing to a spot just before receiving
      headers
2007-02-21 21:59:40 +00:00
Yang Tse
3a634a273a curlassert macro replaced with DEBUGASSERT macro defined in setup_once.h 2007-02-21 19:03:20 +00:00
Dan Fandrich
06d1b029f6 Include some possible dependencies of arpa/inet.h 2007-02-21 18:05:38 +00:00
Gisle Vanem
45bf417301 Cleanup WIN32 target using WSACleanup(). 2007-02-21 15:01:51 +00:00
Yang Tse
48029d7e74 fix compiler warning "enumerated type mixed with another type" 2007-02-21 05:48:07 +00:00
Linus Nielsen Feltzing
83e078256c New FTP CCC functionality - adds passive and active mode to accomodate for different server behaviour 2007-02-20 22:08:50 +00:00
Linus Nielsen Feltzing
2f5e99ca02 New FTP CCC functionality - adds passive and active mode to accomodate for different server behaviour 2007-02-20 22:02:11 +00:00
Dan Fandrich
6014c21bc9 Include network byte order conversion macros on Minix. 2007-02-20 17:31:20 +00:00
Yang Tse
8c0b1dc3c5 compiler warning fix 2007-02-20 14:26:15 +00:00
Yang Tse
be3c5f0b94 compiler warning fix 2007-02-20 14:01:04 +00:00
Yang Tse
e268e8559e curl tool was using functions curlx_tvnow and curlx_tvdiff which are not
part of the official libcurl API http://curl.haxx.se/lxr/source/lib/README.curlx
The documented way of using them would be to use timeval.c as a source code file.

The above described method works very well when statically linking libcurl and
apps, curl tool, but has several drawbacks when you build a true shared
libcurl (i.e. Name space clash at linkage stage as functions are defined more
than once. Windows makefiles are not capable of handling this system of
source-level sharing)

So...

Now curlutil.h and curlutil.c define and implement cutil_tvnow and cutil_tvdiff
which replace curlx_tvnow and curlx_tvdiff for the curl tool. Doing this we
avoid the above described problems.
2007-02-20 12:13:14 +00:00
Yang Tse
29bb6f65f1 Move header file inclusion logic and definition of timeval
struct for platforms that don't have it to setup_once.h
2007-02-20 12:12:27 +00:00
Yang Tse
37f07a54bd Several corrections & changes to what has been stated in revision 1.45
1) The maketgz script does not insert the timestamp in curlver.h,
   it actually updates it. For CVS versions it is the "CVS" string.

2) testcurl.pl will always print the "date" string which represents
   the moment the test build is run.

3) testcurl.pl may not print the "timestamp" string since the script
   may end before it is printed out. (i.e. unable to update from CVS)

4) The "timestamp" string printed will be the same as the "date" one
   unless one of the following conditions is met.

   *) It is a tarball-based build. Timestamp will be creation time.

   *) CVS update has been done. Timestamp will be end of CVS update.
2007-02-20 05:28:41 +00:00
Yang Tse
da8c666e4f add tutil_tvdiff_secs() for completeness 2007-02-20 01:09:38 +00:00
Dan Fandrich
c11681becd Mention curl-config dependencies fix. 2007-02-19 21:50:03 +00:00
Yang Tse
78a1e5d1a6 fix typo 2007-02-19 19:46:07 +00:00
Yang Tse
116f60e063 Show libcurl's timestamp. This timestamp is only available in curlver.h
for tarball-based tests and builds, the maketgz script inserts it when
the tarball is created. For CVS-based tests and builds the timestamp we
show is the current UTC build time as it is the CVS version timestamp.

In this way, all builds will have a valid source code timestamp which
isn't related to the moment the tests and build is performed, with the
exception of CVS-based ones which have the same "date" and "timestamp"
2007-02-19 19:41:48 +00:00
Gisle Vanem
7725853446 Added ares_parse_ns_reply.obj etc. 2007-02-19 17:44:59 +00:00
Gisle Vanem
9993e2121d INADDR_NONE no longer used. 2007-02-19 17:41:38 +00:00
Gisle Vanem
9a70ce4245 Fixed typo. 2007-02-19 17:40:36 +00:00
Daniel Stenberg
7ba53a4f41 Vlad Dinulescu added ares_parse_ns_reply() 2007-02-19 14:06:11 +00:00
Daniel Stenberg
1297c54b26 Ian Turner fixed the libcurl.m4 macro's support for --with-libcurl.
AC_PATH_PROG was not used properly.
2007-02-19 12:37:04 +00:00
Daniel Stenberg
1045b8d382 - Shmulik Regev found a memory leak in re-used HTTPS connections, at least
when the multi interface was used.
2007-02-19 12:20:32 +00:00
Daniel Stenberg
d2bdad5945 and fix warnings due to lack of protos 2007-02-19 11:55:49 +00:00
Daniel Stenberg
17e8d60c01 - Robson Braga Araujo made passive FTP transfers work with SOCKS (both 4 and
5).
2007-02-19 11:53:54 +00:00
Daniel Stenberg
ec1b351317 fixed code to compile and removed one warning 2007-02-19 11:47:04 +00:00
Yang Tse
75fca27f8e log a message, stating the need of openssl to run this test 2007-02-19 04:51:47 +00:00
Yang Tse
f2cd2882a0 Oops missing var 2007-02-19 03:59:41 +00:00
Yang Tse
07d8a14ec0 compiler warning fix 2007-02-19 02:29:35 +00:00
Yang Tse
31e598d2f3 add debug messages for initialization failures 2007-02-19 02:03:58 +00:00
Daniel Stenberg
cbf58d88d0 - Jeff Pohlmeyer identified two problems: first a rather obscure problem with
the multi interface and connection re-use that could make a
  curl_multi_remove_handle() ruin a pointer in another handle.

  The second problem was less of an actual problem but more of minor quirk:
  the re-using of connections wasn't properly checking if the connection was
  marked for closure.
2007-02-18 23:02:42 +00:00
Yang Tse
300cbc2e21 Michal Marek comment fix 2007-02-18 00:54:26 +00:00
Yang Tse
ec9e399668 fix ENAMETOOLONG and ENOTEMPTY may already be defined in errno.h 2007-02-18 00:34:37 +00:00
Dan Fandrich
2691f1efc8 Use configure's new LIBCURL_LIBS variable 2007-02-17 17:55:19 +00:00
Yang Tse
d9bf55570b Move portable error number symbolic name definitions to setup_once.h 2007-02-17 13:51:24 +00:00
Yang Tse
b54a8531a9 compiler warning fix 2007-02-17 11:59:08 +00:00
Yang Tse
789fd0b74a Replicate the configure tests that determined that timeval was available. 2007-02-17 11:43:52 +00:00
Yang Tse
8103915797 compiler warning fix 2007-02-17 11:34:33 +00:00
Dan Fandrich
c461254dea Do a better job at determining what test servers *really* need to link against. 2007-02-17 08:49:04 +00:00
Dan Fandrich
3f140a6008 getpart implicitly drags in some networking functions, so it needs to be
linked to the networking libraries.
2007-02-17 08:16:53 +00:00
Dan Fandrich
a0a47f2767 Better separate the library dependencies into those required by libcurl
and those required by other components to avoid forcing unneeded
dependencies into the target objects.
2007-02-17 01:29:01 +00:00
Dan Fandrich
213017e9cf Remove C99isms 2007-02-17 01:25:32 +00:00
Dan Fandrich
69f2f5cb6f Replicate the configure tests that determined that timeval was available. 2007-02-17 01:23:37 +00:00
Yang Tse
d46cab4a94 add debug messages for fopen() failures 2007-02-16 19:41:25 +00:00
Yang Tse
4dc453c087 add debug messages for fopen() failures 2007-02-16 19:17:05 +00:00
Yang Tse
a1d5983991 use macros ERRNO, SET_ERRNO(), SOCKERRNO and SET_SOCKERRNO() for errno handling 2007-02-16 18:19:35 +00:00
Yang Tse
4894ce16fc use macros ERRNO, SET_ERRNO(), SOCKERRNO and SET_SOCKERRNO() for errno handling 2007-02-16 16:01:19 +00:00
Daniel Stenberg
aa4435c23b - Duncan Mac-Vicar Prett and Michal Marek reported problems with resetting
CURLOPT_RANGE back to no range on an easy handle when using FTP.
2007-02-16 15:37:05 +00:00
Daniel Stenberg
dca8f962e0 maxdownload is actually -1 for unlimited 2007-02-16 15:27:49 +00:00
Yang Tse
059b57677c use macros ERRNO, SET_ERRNO(), SOCKERRNO and SET_SOCKERRNO() for errno handling 2007-02-16 15:04:44 +00:00
Yang Tse
9896421586 compiler warning fix 2007-02-16 14:22:08 +00:00
Yang Tse
6663608d15 avoid redefinition of SET_ERRNO() 2007-02-15 18:44:32 +00:00
Yang Tse
d21e4eb8ae introduce uppercase macros SOCKERRNO, SET_SOCKERRNO(), ERRNO and SET_ERRNO()
making them available to any source code file which includes "setup.h".

Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno
(or equivalent) on this platform to hide platform details to code using it.

Macro ERRNO / SET_ERRNO() returns / sets the NOT *socket-related* errno
(or equivalent) on this platform to hide platform details to code using it.
2007-02-15 16:23:24 +00:00
Yang Tse
d381dd68cf icc 9.0 when compiling its generated code for its own FD_SET,
FD_ISSET, and FD_ZERO macros emits warnings #1469 and #593.
So for icc 9.0 we also ignore warnings #1469 and #593.
* 593 warns on "variable __d0 was set but never used"
* 1469 warns on "cc clobber ignored"
2007-02-15 14:02:32 +00:00
Yang Tse
7a97e66fb3 compiler warning fix 2007-02-15 12:14:34 +00:00
Yang Tse
d86e6d3ed2 Do not define HAVE_GMTIME_R for native Windows builds 2007-02-15 01:58:37 +00:00
Yang Tse
f99ca90540 Daniel Mirchandani fix to make libcurl build nicely on Winsock
build targets when --disable-verbose is specified.
2007-02-15 01:38:07 +00:00
Gunter Knauf
e24cb6cb90 enabled IPV6 builds. 2007-02-15 01:36:35 +00:00
Dan Fandrich
b05f408348 Added --ftp-ssl-ccc issue. 2007-02-14 20:02:08 +00:00
Dan Fandrich
c5e7d839d5 Don't bother adding a library path of /usr/lib in curl-config --libs 2007-02-14 18:13:16 +00:00
Yang Tse
e3ade3ccb5 Oops, missing argument separator comma 2007-02-14 17:38:41 +00:00
Yang Tse
71afe05b9f in debug messages also show error description 2007-02-14 14:11:47 +00:00
Yang Tse
5a267c4312 compiler warning fix 2007-02-14 13:46:08 +00:00
Yang Tse
fbcf86b83e avoid using funtion isblank() and just use our ISBLANK
macro to provide this functionality on all platforms
2007-02-14 13:31:37 +00:00
Yang Tse
5c3f36b4b4 compiler warning fix 2007-02-14 04:45:30 +00:00
Dan Fandrich
9de4e5ebe4 Fixed the problem of curl-config --libs specifying unneeded libraries
dependencies to applications.
2007-02-14 03:00:08 +00:00
Yang Tse
7033a1c072 enhance HTTP server request input writing,
retrying upon EINTR errors.
2007-02-14 00:28:01 +00:00
Daniel Stenberg
4efa0d9f68 ftp@example.com is now the new anonymous FTP password. I opted for 'ftp' on
the left side of @ to make it short(er).
2007-02-13 22:50:16 +00:00
Daniel Stenberg
e021fe9444 - Robert A. Monat made libcurl build fine with VC2005 - it doesn't have
gmtime_r() like the older VC versions. He also made use of some machine-
  specific defines to differentiate the "OS" define.
2007-02-13 21:21:44 +00:00
Dan Fandrich
23d1041bd8 Added last-resort dynamic library names. 2007-02-13 19:59:58 +00:00
Yang Tse
be71ccbce3 check for isblank() at configuration stage. If not available
provide a suitable replacement for use in our ISBLANK macro
2007-02-13 19:01:03 +00:00
Yang Tse
0db485a448 use our own ISUPPER and ISLOWER macros 2007-02-13 18:02:20 +00:00
Yang Tse
6d05a33ed9 use our own ISBLANK macro 2007-02-13 17:47:27 +00:00
Yang Tse
569c169559 use our own ISSPACE macro 2007-02-13 17:28:40 +00:00
Yang Tse
ecbc7f89c0 Fix c-ares failing to get the search sequence of /etc/hosts and
DNS from /etc/nsswitch.conf, /etc/host.conf or /etc/svc.conf when
/etc/resolv.conf did not exist or was unable to read it.
2007-02-13 16:14:25 +00:00
Yang Tse
5649b738be compiler warning fix 2007-02-13 02:30:31 +00:00
Daniel Stenberg
0f9f6cf180 mention today's LIBCURL_TIMESTAMP fix 2007-02-12 22:41:43 +00:00
Daniel Stenberg
7f70dbcad5 Rob Crittenden added support for NSS (Network Security Service) for the
SSL/TLS layer. http://www.mozilla.org/projects/security/pki/nss/
2007-02-12 22:32:37 +00:00
Daniel Stenberg
28b932fb4e - Shmulik Regev fixed so that the final CRLF of HTTP response headers are sent
to the debug callback.

- Shmulik Regev added CURLOPT_HTTP_CONTENT_DECODING and
  CURLOPT_HTTP_TRANSFER_DECODING that if set to zero will disable libcurl's
  internal decoding of content or transfer encoded content. This may be
  preferable in cases where you use libcurl for proxy purposes or similar. The
  command line tool got a --raw option to disable both at once.
2007-02-12 21:13:47 +00:00
Daniel Stenberg
a631741141 Jeff Pohlmeyer for his bug fix today, but too specific to get desrcibed
as a bugfix here ;-)
2007-02-12 12:17:11 +00:00
Daniel Stenberg
c7d0966201 - Jeff Pohlmeyer fixed a flaw in curl_multi_add_handle() when adding a handle
that has an easy handle present in the "closure" list pending closure.
2007-02-12 12:15:41 +00:00
Daniel Stenberg
cf491357b6 When building tarballs, we also set the timestamp of the generated package. This is meant
to primarily be used for the autobuilds to know from what point in time a particular tarball
is, and thus what changes it contains (or not).
2007-02-12 11:53:35 +00:00
Daniel Stenberg
02c17651bf updated with recent info and cut out some of the more speculating parts and
instead focus on explaining on how the libs differ from each other
2007-02-11 10:10:08 +00:00
Daniel Stenberg
890b34d22e updated 2007-02-11 09:55:17 +00:00
Daniel Stenberg
e89fb10736 darned tab completion on a late evening... :-P 2007-02-10 23:24:18 +00:00
Daniel Stenberg
48e8b52fbb minor updates to reflect reality better 2007-02-10 23:23:42 +00:00
Daniel Stenberg
61f19c6ca3 file:// transfers are blocking 2007-02-10 12:07:46 +00:00
Yang Tse
8c9233f6b2 Include both testutil.c and testutil.h, and not just testutil.c, in the
list of source files for those tests that use it. Otherwise testutil.h
might not be found by the compiler.
2007-02-09 12:41:57 +00:00
Yang Tse
6fcf98f617 Some tests were using functions curlx_tvnow and curlx_tvdiff which are not
part of the official libcurl API http://curl.haxx.se/lxr/source/lib/README.curlx
The documented way of using them would be to use timeval.c as a source code file.

The above described method works very well when statically linking libcurl and
apps, test programs, but has several drawbacks when you build a true shared
libcurl (i.e. Name space clash at linkage stage as functions are defined more
than once. Windows makefiles are not capable of handling this system of
source-level sharing)

So...

Now testutil.h and testutil.c define and implement tutil_tvnow and tutil_tvdiff
which replace curlx_tvnow and curlx_tvdiff for the libtest programs. Doing this
we avoid the above described problems, and the code in the testsuite does not
impose the need to keep those functions public in libcurl even when not part of
the API.
2007-02-09 01:17:24 +00:00
Yang Tse
2f4fe0175b Some tests were using functions curlx_tvnow and curlx_tvdiff which are not
part of the official libcurl API http://curl.haxx.se/lxr/source/lib/README.curlx
The documented way of using them would be to use timeval.c as a source code file.

The above described method works very well when statically linking libcurl and
apps, test programs, but has several drawbacks when you build a true shared
libcurl (i.e. Name space clash at linkage stage as functions are defined more
than once. Windows makefiles are not capable of handling this system of
source-level sharing)

So...

Now testutil.h and testutil.c define and implement tutil_tvnow and tutil_tvdiff
which replace curlx_tvnow and curlx_tvdiff for the libtest programs. Doing this
we avoid the above described problems, and the code in the testsuite does not
impose the need to keep those functions public in libcurl even when not part of
the API.
2007-02-09 01:11:14 +00:00
Yang Tse
9f62ff5df6 compiler warning fix 2007-02-08 17:01:40 +00:00
Yang Tse
4e3f3e751e use macro AC_AIX to define `_ALL_SOURCE', if on AIX. 2007-02-08 00:28:21 +00:00
Daniel Stenberg
04e6568a7e SCP upload done non-blocking 2007-02-07 22:00:33 +00:00
Yang Tse
7a39b98471 use same AIX XLC compiler options as curl's 2007-02-07 18:13:40 +00:00
Yang Tse
4ab91a93e8 AIX xlc has to have strict aliasing turned off. If not, the optimizer
assumes that pointers can only point to an object of the same type.
2007-02-07 17:34:30 +00:00
Yang Tse
6647ca6ec5 *) Remove duplicate declaration of TYPE_SOCKADDR_STORAGE
*) Update CURL_CC_DEBUG_OPTS from curl's script
2007-02-07 15:15:15 +00:00
Gisle Vanem
529e01736c INADDR_NONE no longer used. 2007-02-06 19:14:33 +00:00
Gisle Vanem
078fc4186b Added debug option ('-d') for Watt-32 programs. 2007-02-06 19:12:38 +00:00
Gisle Vanem
fabbb3fc34 Added HAVE_PROCESS_H for DOS/Win32.
Include <process.h> for getpid() in ares_init.c.
2007-02-06 19:09:57 +00:00
Gisle Vanem
1db063e705 Fix compiler warning. 2007-02-06 19:00:42 +00:00
Gisle Vanem
1fa9ef246a Include <sys/time.h> and <unistd.h> inside HAVE_x_H.
Added 'optind' and 'optarg' as in adig.c.
2007-02-06 18:56:34 +00:00
Gisle Vanem
e12220cc4c Include <sys/time.h> and <unistd.h> inside HAVE_x_H. 2007-02-06 18:54:35 +00:00
Yang Tse
77fcad041f fix for millisecond resolution timeouts 2007-02-06 18:08:11 +00:00
Yang Tse
e213555c98 compiler warning fix 2007-02-06 18:06:37 +00:00
Daniel Stenberg
3a813b3c3b non-blocking SSH stuff 2007-02-06 16:07:15 +00:00
Daniel Stenberg
028a9d6785 read SFTP with the non-blocking API 2007-02-06 15:41:19 +00:00
Yang Tse
d0aca8017f compiler warning fix 2007-02-06 03:31:27 +00:00
Daniel Stenberg
91386937ff - Michael Wallner provided a patch that adds support for CURLOPT_TIMEOUT_MS
and CURLOPT_CONNECTTIMEOUT_MS that, as their names should hint, do the
  timeouts with millisecond resolution instead. The only restriction to that
  is the alarm() (sometimes) used to abort name resolves as that uses full
  seconds. I fixed the FTP response timeout part of the patch.

  Internally we now count and keep the timeouts in milliseconds but it also
  means we multiply set timeouts with 1000. The effect of this is that no
  timeout can be set to more than 2^31 milliseconds (on 32 bit systems), which
  equals 24.86 days.  We probably couldn't before either since the code did
  *1000 on the timeout values on several places already.
2007-02-05 22:51:32 +00:00
Gisle Vanem
0fc51ac5a6 Remove '-Dselect=select_s'. Remove depend.dj- 2007-02-05 11:32:18 +00:00
Yang Tse
bc2183b440 compiler warning fix 2007-02-05 04:10:32 +00:00
Yang Tse
01c4fba15c cookie expiry date in several test cases set to year 2030/2035 2007-02-05 02:43:21 +00:00
Yang Tse
9b6474378a Year 2038 has its own problems (32 bit integer overflow).
So cookie expiration date is lowered to expire at most in 2035.
2007-02-05 02:38:25 +00:00
Gisle Vanem
5446ed4733 Use correct 3rd argument for ioctlsocket() under Watt-32. 2007-02-04 13:34:34 +00:00
Gisle Vanem
a50414f594 Use correct calling convention. 2007-02-04 13:02:31 +00:00
Gisle Vanem
fe7fa8e794 Added DllMain() function for Watcom. 2007-02-04 12:50:53 +00:00
Gisle Vanem
6a175b42db Suppress warning "'nread' might be used uninitialized in this function". 2007-02-04 12:18:22 +00:00
Gisle Vanem
a7748c2024 Constify argument to suburl(). Remove trailing space. 2007-02-04 12:12:02 +00:00
Daniel Stenberg
8f87c15bda some additional info 2007-02-03 21:35:11 +00:00
Yang Tse
82f52e5a6f compiler warning fix 2007-02-03 13:05:28 +00:00
Daniel Stenberg
67d2dd62f9 - Yang Tse fixed the cookie expiry date in several test cases that started to
fail since they used "1 feb 2007"...

- Manfred Schwarb reported that socks5 support was broken and help us pinpoint
  the problem. The code now tries harder to use httproxy and proxy where
  apppropriate, as not all proxies are HTTP...
2007-02-03 09:34:03 +00:00
Daniel Stenberg
138b4f27b4 - Manfred Schwarb reported that socks5 support was broken and help us pinpoint
the problem. The code now tries harder to use httproxy and proxy where
  apppropriate, as not all proxies are HTTP...
2007-02-03 09:33:54 +00:00
Yang Tse
c26ec47e90 compiler warning fix 2007-02-02 17:16:06 +00:00
Yang Tse
8337a375dd add debug messages for initialization failures 2007-02-02 16:01:55 +00:00
Yang Tse
8260243be1 add missing strings for existing error codes 2007-02-02 16:01:15 +00:00
Yang Tse
ef6f24a7ce move DEBUGF macro definition to setup_once.h 2007-02-02 15:31:32 +00:00
Daniel Stenberg
abe90019d3 prefer using the (upcoming) non-blocking libssh2 API 2007-02-02 15:26:57 +00:00
Daniel Stenberg
c185cdf2b4 don't require OpenSSL for libssh2 linking to work, in preparation for
upcoming libgcrypt-capable libssh2-versions
2007-02-02 15:26:26 +00:00
Yang Tse
f71c8c7d84 fix leftover updating cookie expiration date 2007-02-02 11:49:15 +00:00
Yang Tse
d32f1390b3 In testsuite, update test cookies expiration from 2007-Feb-1 to 2038-Feb-1 2007-02-02 02:30:16 +00:00
Yang Tse
68f3c2adca reported in bug: #1566077 the former URL mentioned in the generated cookie
jar has died and we now instead point out our own version of that
2007-02-02 02:12:34 +00:00
Yang Tse
2a8e2edf83 fix test case 62 which was failing due to cookies expiring 1 Feb 2007 2007-02-02 01:36:08 +00:00
Yang Tse
401598c2fe more fixes for the testsuite cookie expiration issue 2007-02-02 01:05:50 +00:00
Yang Tse
d60848d04b cookie expiration time got us with pants at our knees.
Next time in 2038 :-)
2007-02-02 00:10:40 +00:00
Yang Tse
d2dd3d7e16 compiler warning fix 2007-02-01 15:36:56 +00:00
Gisle Vanem
1c63ceb317 Suppress the "'convbuf' might be used uninitialized in this function" warning. 2007-02-01 12:23:00 +00:00
Yang Tse
c25283185a fogot to change Curl_mk_connc in header file 2007-02-01 11:27:42 +00:00
Yang Tse
54db98c220 compiler warning fix 2007-02-01 01:42:13 +00:00
Dan Fandrich
5565f45f5e Properly use libtool macros to fix OpenLDAP library name detection on Darwin. 2007-01-31 23:15:47 +00:00
Yang Tse
49c4d9c9cd add debug messages for initialization failures 2007-01-31 19:47:49 +00:00
Yang Tse
c2639e0738 when using select() instead of poll, skip the test if the number of
open file descriptors is greater than FD_SETSIZE minus SAFETY_MARGIN,
also skip the test if any of the open file descriptors has a number
greater than FD_SETSIZE minus SAFETY_MARGIN.
2007-01-31 15:34:53 +00:00
Daniel Stenberg
e485a23a3e Marty Kuhrt's VMS updates 2007-01-31 09:37:39 +00:00
Yang Tse
d7d5baa0e2 fix temp string buffer variable name 2007-01-30 13:21:39 +00:00
Gisle Vanem
e1e55e4d04 Support for OpenWatcom (Win32): It do have getpid(), but no
<sys/time.h>.
2007-01-30 13:15:07 +00:00
Daniel Stenberg
1eb530d8dc start working on 7.16.2 2007-01-30 12:25:55 +00:00
Yang Tse
bad67830b3 skip test on platforms on which we use select() instead
of poll() and select() happens to be bound by FD_SETSIZE
2007-01-30 03:48:29 +00:00
Yang Tse
db22c83031 fix compiler warning "discards qualifiers from pointer target type" in debug builds 2007-01-29 20:56:27 +00:00
Daniel Stenberg
a4b39c6ab8 the same source file is re-used for multiple tests and I missed to add the
timval.c dependency on some of those
2007-01-29 20:37:02 +00:00
Gisle Vanem
d10e174fd1 Some compilers lacks <sys/time.h>. Include "timeval.h" to simplify the #ifdefs. 2007-01-29 20:24:00 +00:00
Gisle Vanem
e994c6af75 Use DOS line-endings. 2007-01-29 19:08:04 +00:00
Daniel Stenberg
ef442d5803 release time 2007-01-29 14:53:01 +00:00
Daniel Stenberg
8680e010c2 the user-agent fix 2007-01-29 10:12:30 +00:00
Daniel Stenberg
4d8dcf7b77 the libtest source codes that use curlx_tv* functions MUST use the
lib/timeval.c source code since those functions are not in the API (and might
not be accessible)
2007-01-29 10:09:06 +00:00
Daniel Stenberg
abdbd3100f - Michael Wallner reported that when doing a CONNECT with a custom User-Agent
header, you got _two_ User-Agent headers in the CONNECT request...! Added
  test case 287 to verify the fix.
2007-01-29 09:26:36 +00:00
Gunter Knauf
ddace02efe fixed segfault when compiled with MingW32 and cmd or command shell. 2007-01-29 00:51:02 +00:00
Daniel Stenberg
1f4c8c4f09 Andreas Rieke added extra infof() for when a connection is not re-used due to
SSL conditions not being the same
2007-01-28 22:45:22 +00:00
Daniel Stenberg
8162b32bad silence compiler warnings 2007-01-28 22:36:23 +00:00
Gunter Knauf
daf527b276 enabled build with sspi. 2007-01-28 21:54:10 +00:00
Gunter Knauf
ee51c07be6 enabled build with hardcoded ca-bundle path;
added distclean target.
2007-01-28 15:31:06 +00:00
Gunter Knauf
856ba4c6c6 force to create ca-bunde.h even if it exists already. 2007-01-28 15:07:53 +00:00
Gunter Knauf
b3e23373bd use var for awk. 2007-01-28 14:43:25 +00:00
Daniel Stenberg
e5adab39b1 curl_easy_reset() now resets the CA bundle path correctly 2007-01-28 12:58:13 +00:00
Gunter Knauf
d31153584e another small fix to directory listing output; disabled CURL_LIBSSH2_DEBUG. 2007-01-28 12:35:39 +00:00
Daniel Stenberg
823d296e12 recent contributors 2007-01-28 09:59:11 +00:00
Yang Tse
e09450103b Compiler warning fix 2007-01-28 03:51:10 +00:00
Daniel Stenberg
fbc4407583 - David McCreedy fixed the Curl command line tool for HTTP on non-ASCII
platforms.
2007-01-27 23:02:17 +00:00
Gunter Knauf
a79e5d7925 fix sftp directory listing so that it works without -v and is redirectable with -o/-O. 2007-01-27 12:14:02 +00:00
Gunter Knauf
82491d5c06 tell us what we put out here... 2007-01-27 11:50:42 +00:00
Yang Tse
b6f889085d update copyright year notice 2007-01-27 03:43:05 +00:00
Yang Tse
cdbbb7d900 Compiler warning fix 2007-01-27 03:14:25 +00:00
Yang Tse
2bf4d9a22c sync with lib/setup_once.h 2007-01-27 01:56:57 +00:00
Yang Tse
f1918aa343 sync comment with reality 2007-01-27 01:56:20 +00:00
Gunter Knauf
56580fc6f8 remove the res file too with clean target. 2007-01-26 21:00:02 +00:00
Gunter Knauf
2e6600425e removed CFLAGS from linking. 2007-01-26 20:05:38 +00:00
Gunter Knauf
cc021fc200 fix redefine warning when build from CVS. 2007-01-26 20:00:55 +00:00
Dan Fandrich
e6aed92742 Fixed compiler warning. 2007-01-26 17:50:06 +00:00
Gisle Vanem
02fb4d96d1 Remove LoadLibrary() (from my private build). 2007-01-26 16:36:59 +00:00
Gisle Vanem
43e3c5e5fa Free 'config->libcurl' at exit. 2007-01-26 16:24:52 +00:00
Gisle Vanem
4f496f2f70 Use "%Od" instead of CURL_FORMAT_OFF_T for <curlx.h> functions. 2007-01-26 16:18:47 +00:00
Gisle Vanem
d681bc7520 Options of type CURLOPTTYPE_FUNCTIONPOINT are never printable. 2007-01-26 15:15:27 +00:00
Gunter Knauf
f21a2b3270 updated mingw build instructions for libssh2. 2007-01-26 13:55:18 +00:00
Gunter Knauf
5f5a28d20e added project header to lib resource file; fixed header copyright. 2007-01-26 08:53:03 +00:00
Gunter Knauf
89f9cb4041 use provided resource file for exe. 2007-01-26 08:50:06 +00:00
Daniel Stenberg
2b280bcc69 fix compiler warnings for SSL-disabled builds 2007-01-25 21:00:03 +00:00
Daniel Stenberg
1c0224be42 ugha, prevent a buffer overflow and allow very long strings in the generated
libcurl source...
2007-01-25 20:47:47 +00:00
Daniel Stenberg
dbdb7fa55a - Added the --libcurl [file] option to curl. Append this option to any
ordinary curl command line, and you will get a libcurl-using source code
  written to the file that does the equivalent operation of what your command
  line operation does!
2007-01-25 15:58:00 +00:00
Gunter Knauf
83a43bea8a removed unused define. 2007-01-25 15:00:01 +00:00
Gunter Knauf
abb4cdafe9 set proper lib extension for non-configure mingw32 builds on Win32. 2007-01-25 14:06:38 +00:00
Gunter Knauf
2b7bcf2505 fixed copyright for new year. 2007-01-25 13:17:20 +00:00
Gunter Knauf
5aefdd93cb added targets for libssh2 builds. 2007-01-25 13:15:47 +00:00
Gunter Knauf
4b27fae069 enabled build with libssh2. 2007-01-25 13:14:42 +00:00
Daniel Stenberg
10a13eba72 fix non-SSL builds again 2007-01-25 11:09:56 +00:00
Dan Fandrich
44ac2776ae Fixed a dangling pointer problem that prevented the http_proxy environment
variable from being properly used in many cases (and caused test case 63
to fail).
2007-01-25 01:35:43 +00:00
Gunter Knauf
36e3e6ed16 removed not used define. 2007-01-25 00:26:29 +00:00
Dan Fandrich
5f9cbc4209 Only shut down SSL if the CCC command succeeded. 2007-01-24 19:09:12 +00:00
Daniel Stenberg
3239f059b8 moved the SSL pending function to the proper place and name 2007-01-24 17:19:08 +00:00
Daniel Stenberg
45bac25d90 bail out on strdup() errors 2007-01-24 12:34:23 +00:00
Daniel Stenberg
354c8dcd82 - David McCreedy did NTLM changes mainly for non-ASCII platforms:
#1
  There's a compilation error in http_ntlm.c if USE_NTLM2SESSION is NOT
  defined.  I noticed this while testing various configurations.  Line 867 of
  the current http_ntlm.c is a closing bracket for an if/else pair that only
  gets compiled in if USE_NTLM2SESSION is defined.  But this closing bracket
  wasn't in an #ifdef so the code fails to compile unless USE_NTLM2SESSION was
  defined.  Lines 198 and 140 of my patch wraps that closing bracket in an
  #ifdef USE_NTLM2SESSION.

  #2
  I noticed several picky compiler warnings when DEBUG_ME is defined.  I've
  fixed them with casting.  By the way, DEBUG_ME was a huge help in
  understanding this code.

  #3
  Hopefully the last non-ASCII conversion patch for libcurl in a while.  I
  changed the "NTLMSSP" literal to hex since this signature must always be in
  ASCII.

  Conversion code was strategically added where necessary.  And the
  Curl_base64_encode calls were changed so the binary "blobs" http_ntlm.c
  creates are NOT translated on non-ASCII platforms.
2007-01-23 22:57:42 +00:00
Daniel Stenberg
b1e4cc370d recount 2007-01-23 22:13:52 +00:00
Daniel Stenberg
2293474b90 #79 is no problem to me (and no response on my mail) 2007-01-23 22:13:34 +00:00
Daniel Stenberg
9e1aef7183 very minor indent change 2007-01-23 22:13:05 +00:00
Dan Fandrich
f68323da7d Ignore XML DOCTYPEs and declarations. 2007-01-23 20:24:26 +00:00
Gisle Vanem
a61aafa325 Speed-up djgpp's stat() by avoid checking for uneeded stuff. 2007-01-23 08:57:12 +00:00
Dan Fandrich
33bea767eb Convert (most of) the test data files into genuine XML. A handful still
are not, due mainly to the lack of support for XML character entities
(e.g. & => &amp; ).  This will make it easier to validate test files using
tools like xmllint, as well as edit and view them using XML tools.
2007-01-23 02:25:56 +00:00
Gunter Knauf
9ab7cda010 enabled build with libssh2; fixed copyright for new year.. 2007-01-23 00:26:45 +00:00
Dan Fandrich
6da70628c6 Make the test script tag parser a bit more robust.
Check for the .exe extension on mingw32 builds.
2007-01-18 20:32:46 +00:00
Dan Fandrich
3bae748256 Added precheck that curl supports the 'openssl' engine in test 307. 2007-01-18 18:04:20 +00:00
Dan Fandrich
521c4b303d Fixed some tag typos in the test data files. 2007-01-17 20:36:56 +00:00
Dan Fandrich
a2effd123a Disabled test 307 for now. 2007-01-17 19:23:32 +00:00
Gisle Vanem
7b704e173c Supress "comparison between signed and unsigned" warning. 2007-01-17 15:15:21 +00:00
Daniel Stenberg
6045d051d7 two other still outstanding issues 2007-01-17 12:00:08 +00:00
Daniel Stenberg
cfe00ed4ad more reported bugs we need to address at some point, possibly before a release 2007-01-17 10:15:09 +00:00
Daniel Stenberg
0b4bdcf18f clarify the INFILESIZE option(s) 2007-01-17 08:57:20 +00:00
Daniel Stenberg
8cade952bf David McCreedy fixed a flaw from his previous non-ascii HTTP patch 2007-01-16 22:26:50 +00:00
Daniel Stenberg
385e612fa5 - Armel Asselin improved libcurl to behave a lot better when an easy handle
doing an FTP transfer is removed from a multi handle before completion. The
  fix also fixed the "alive counter" to be correct on "premature removal" for
  all protocols.
2007-01-16 22:22:10 +00:00
Daniel Stenberg
1886388791 restore previous addition to the amount of data that is returned 2007-01-16 21:28:45 +00:00
Dan Fandrich
32fe5b14ec Added simple OpenSSL crypto engine tests. 2007-01-16 18:34:58 +00:00
Dan Fandrich
bbdc483671 Fixed a small memory leak in tftp uploads discovered by curl's memory leak
detector.  Also changed tftp downloads to URL-unescape the downloaded
file name.
2007-01-16 18:33:25 +00:00
Dan Fandrich
f11d3c329c Added TFTP upload tests. 2007-01-15 21:06:12 +00:00
Dan Fandrich
b0d13fa4cb Leave the TFTPD test server running after a file upload.
Flush the protocol log data so it's immediately available to the test harness.
2007-01-15 21:03:53 +00:00
Daniel Stenberg
0fb5a65a58 - David McCreedy provided libcurl changes for doing HTTP communication on
non-ASCII platforms. It does add some complexity, most notably with more
  #ifdefs, but I want to see this supported added and I can't see how we can
  add it without the extra stuff added.
2007-01-14 14:57:51 +00:00
Daniel Stenberg
c8afb02b4c 4GB download and cookielist "ALL" fixes 2007-01-13 23:33:50 +00:00
Daniel Stenberg
869d65337e fixed bad variable use when getting the size which we should read when
attempting not to read data that might belong to the next response (if
pipelining)
2007-01-13 23:33:21 +00:00
Daniel Stenberg
277df1c6b1 make Curl_cookie_clearall() survive getting called with a NULL pointer 2007-01-13 23:32:14 +00:00
Dan Fandrich
5ec5b95f54 Added test for TFTP retrieve of boundary case 512 byte file. 2007-01-10 23:40:22 +00:00
Dan Fandrich
9e61c904ac Display crypto engine name correctly in debug message. 2007-01-10 21:21:53 +00:00
Dan Fandrich
7efb955fd0 Added test of TFTP server error reporting. 2007-01-10 03:32:19 +00:00
Daniel Stenberg
75899741b9 corrected example 2007-01-09 18:58:16 +00:00
Linus Nielsen Feltzing
d465199411 Correct error code for CCC/SSL shutdown failure 2007-01-08 11:24:11 +00:00
Linus Nielsen Feltzing
55123424c8 Removed unused variable in Curl_ossl_shutdown() 2007-01-08 10:03:19 +00:00
Daniel Stenberg
f5e4a78b59 no suprise really, but it works fine on SH4 as well... 2007-01-08 09:32:02 +00:00
Linus Nielsen Feltzing
7515a75206 Fix compilation errors when building without SSL 2007-01-06 10:49:11 +00:00
Daniel Stenberg
4750e6f3c5 - Linus Nielsen Feltzing introduced the --ftp-ssl-ccc command line option to
curl that uses the new CURLOPT_FTP_SSL_CCC option in libcurl. If enabled, it
  will make libcurl shutdown SSL/TLS after the authentication is done on a
  FTP-SSL operation.
2007-01-05 23:11:14 +00:00
Gisle Vanem
b7aaa4d907 Include <dos.h> for delay() on MSDOS. 2007-01-05 15:56:28 +00:00
Daniel Stenberg
e61e09f658 prevent compiler warning since we use base64.h from libcurl which now has
function(s) using SessionHandle pointers
2007-01-04 23:04:50 +00:00
Daniel Stenberg
058e993acb one issue less before release 2007-01-03 23:13:49 +00:00
Daniel Stenberg
359d500908 - David McCreedy made changes to allow base64 encoding/decoding to work on
non-ASCII platforms.
2007-01-03 23:04:38 +00:00
Daniel Stenberg
cb42855445 new year 2007-01-03 22:24:01 +00:00
Daniel Stenberg
d8ff0336a5 - Matt Witherspoon fixed the flaw which made libcurl 7.16.0 always store
downloaded data in two buffers, just to be able to deal with a special HTTP
  pipelining case. That is now only activated for pipelined transfers. In
  Matt's case, it showed as a considerable performance difference,
2007-01-03 22:18:38 +00:00
Daniel Stenberg
0682d25da5 - Victor Snezhko helped us fix bug report #1603712
(http://curl.haxx.se/bug/view.cgi?id=1603712) (known bug #36) --limit-rate
  (CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE) are broken
  on Windows (since 7.16.0, but that's when they were introduced as previous
  to that the limiting logic was made in the application only and not in the
  library). It was actually also broken on select()-based systems (as apposed
  to poll()) but we haven't had any such reports. We now use select(), Sleep()
  or delay() properly to sleep a while without waiting for anything input or
  output when the rate limiting is activated with the easy interface.
2007-01-02 22:34:56 +00:00
Daniel Stenberg
d86d14074d - Modified libcurl.pc.in to use Libs.private for the libs libcurl itself needs
to get built static. It has been mentioned before and was again brought to
  our attention by Nathanael Nerode who filed debian bug report #405226
  (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=405226).
2007-01-02 12:14:21 +00:00
Daniel Stenberg
8500397cf1 curl_easy_cleanup kills this memory too 2006-12-31 13:53:19 +00:00
Daniel Stenberg
bd600fbebe curl_easy_duphandle() sets the magic number in the new handle 2006-12-29 11:32:14 +00:00
Daniel Stenberg
064bbb999f mention the no_proxy work 2006-12-25 22:35:48 +00:00
Daniel Stenberg
bedc61ac45 - Robert Foreman provided a prime example snippet showing how libcurl would
get confused and not acknowledge the 'no_proxy' variable properly once it
  had used the proxy and you re-used the same easy handle. I made sure the
  proxy name is properly stored in the connect struct rather than the
  sessionhandle/easy struct.
2006-12-22 15:04:59 +00:00
Daniel Stenberg
61a6992559 Curl_getinfo() now checks for a NULL SessionHandle pointer 2006-12-22 13:44:10 +00:00
Daniel Stenberg
ebee2e323d - David McCreedy fixed a bad call to getsockname() that wrongly used a size_t
variable to point to when it should be a socklen_t.
2006-12-22 13:30:54 +00:00
Daniel Stenberg
b2f8de571f When setting a proxy with environment variables and (for example) running
'curl [URL]' with a URL without a protocol prefix, curl would not send a
correct request as it failed to add the protocol prefix.
2006-12-22 07:30:21 +00:00
Daniel Stenberg
cb4a5f5a2b minor indent fix 2006-12-21 15:47:19 +00:00
Daniel Stenberg
1beb7de7e0 removed unused variables 2006-12-21 10:18:15 +00:00
Daniel Stenberg
89ab5f4380 Robson Braga Araujo reported bug #1618359
(http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a
patch for it: when downloading 2 zero byte files in a row, curl 7.16.0
enters an infinite loop, while curl 7.16.1-20061218 does one additional
unnecessary request.

Fix: During the "Major overhaul introducing http pipelining support and
shared connection cache within the multi handle." change, headerbytecount
was moved to live in the Curl_transfer_keeper structure. But that structure
is reset in the Transfer method, losing the information that we had about
the header size. This patch moves it back to the connectdata struct.
2006-12-21 10:15:38 +00:00
Daniel Stenberg
439b84c782 CURLOPT_CAPATH is OpenSSL-only 2006-12-21 09:36:03 +00:00
Daniel Stenberg
0e899d7728 * removed the SSH-based protocols as they are now being implemented
* added mentioning of doing the stunnel equivalent ourselves for the test suite
* spell-check
2006-12-19 14:28:01 +00:00
Daniel Stenberg
1a85fb2bd0 37. Having more than one connection to the same host when doing NTLM
authentication (with performs multiple "passes" and authenticates a
  connection rather than a HTTP request), and particularly when using the
  multi interface, there's a risk that libcurl will re-use a wrong connection
  when doing the different passes in the NTLM negotiation and thus fail to
  negotiate (in seemingly mysterious ways).

36. --limit-rate (CURLOPT_MAX_SEND_SPEED_LARGE and
  CURLOPT_MAX_RECV_SPEED_LARGE) are broken on Windows (since 7.16.0, but
  that's when they were introduced as previous to that the limiting logic was
  made in the application only and not in the library). This problem is easily
  repeated and it takes a Windows person to fire up his/hers debugger in order
  to fix. http://curl.haxx.se/bug/view.cgi?id=1603712
2006-12-19 09:09:44 +00:00
Daniel Stenberg
8d11767048 recv() doesn't take MSG_NOSIGNAL in its forth argument so let's not pass it.
Brendan Jurd pointed out.
2006-12-16 22:28:08 +00:00
Daniel Stenberg
fcccf9aa0d Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
during certain conditions when GnuTLS is used.
2006-12-16 21:33:51 +00:00
Daniel Stenberg
72bd027537 Brendan Jurd pointed out these typos 2006-12-16 21:05:33 +00:00
Gisle Vanem
1d44c9ccc1 Plug more leaks. 2006-12-15 16:57:28 +00:00
Gisle Vanem
33831759b5 Fix typo. 2006-12-15 16:49:40 +00:00
Daniel Stenberg
6fe932b255 minor syntax mistake 2006-12-14 18:20:46 +00:00
Gisle Vanem
8da02df8e0 Free 'config->iface' if set. 2006-12-14 16:42:53 +00:00
Gisle Vanem
587c99351d ahost.exe needs getopt.obj. 2006-12-11 15:18:52 +00:00
Daniel Stenberg
88c8d72a21 Alexey Simak found out that when doing FTP with the multi interface and
something went wrong like it got a bad response code back from the server,
libcurl would leak memory. Added test case 538 to verify the fix.

I also noted that the connection would get cached in that case, which
doesn't make sense since it cannot be re-use when the authentication has
failed. I fixed that issue too at the same time, and also that the path
would be "remembered" in vain for cases where the connection was about to
get closed.
2006-12-11 09:32:58 +00:00
Daniel Stenberg
cf99fed17a PROT_CLOSEACTION doesn't have to be its own bit but can just as well just
include the protocol bits of such actions, which currently only means FTP
2006-12-11 09:31:08 +00:00
Daniel Stenberg
ca48b6bf35 fixed the printf formatting after I changed the type of 'excess' 2006-12-07 15:33:06 +00:00
Daniel Stenberg
4dcd606b47 7.16.1 knows SFTP too 2006-12-06 10:07:12 +00:00
Daniel Stenberg
393ddd6e1f clarify --limit-rate somewhat: it might send away/receive chunks of date in
temporarily higher speeds than requested, but the given limiting is considered
"over time" and is an average
2006-12-06 09:52:04 +00:00
Daniel Stenberg
840e796aa9 Sebastien Willemijns reported bug #1603712
(http://curl.haxx.se/bug/view.cgi?id=1603712) which is about connections
getting cut off prematurely when --limit-rate is used. While I found no such
problems in my tests nor in my reading of the code, I found that the
--limit-rate code was severly flawed (since it was moved into the lib, since
7.15.5) when used with the easy interface and it didn't work as documented so
I reworked it somewhat and now it works for my tests.
2006-12-06 09:37:40 +00:00
Daniel Stenberg
5fd096da8d Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
passing a curl_off_t argument to the Curl_read_rewind() function which takes
an size_t argument. Curl_read_rewind() also had debug code left in it and it
was put in a different source file with no good reason when only used from
one single spot.
2006-12-05 21:40:14 +00:00
Daniel Stenberg
eb29c5c285 removed the final traces of the closepolicy option 2006-12-05 21:39:24 +00:00
Daniel Stenberg
1eb286e43e update after today's work 2006-12-05 16:04:46 +00:00
Daniel Stenberg
ae76ebe2d1 Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
no code present in the library that receives the option. Since it was not
possible to use, we know that no current users exist and thus we simply
removed it from the docs and made the code always use the default path of
the code.
2006-12-05 16:04:01 +00:00
Daniel Stenberg
e4505aefd9 Jared Lundell filed bug report #1604956
(http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting
CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl
will always internally use no less than 1 entry in the connection cache.
2006-12-05 15:36:26 +00:00
Daniel Stenberg
d6b0612882 better preprocessor check for recent MSVC versions 2006-12-05 15:24:18 +00:00
Daniel Stenberg
4c65eb0af8 CURLOPT_FORBID_REUSE works again with a cleaned up order of doing things in
Curl_done()
2006-12-05 15:17:32 +00:00
Daniel Stenberg
318a8258fd oops, fix belonging to the previous curl_getdate() fix since it makes MSVC
use gmtime_r
2006-12-05 15:00:14 +00:00
Daniel Stenberg
17ae28e0fe Martin Skinner brought back bug report #1230118 to haunt us once again.
(http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work
properly for all input dates on Windows. It was mostly seen on some TZ time
zones using DST. Luckily, Martin also provided a fix.
2006-12-05 14:57:43 +00:00
Daniel Stenberg
3c4f622479 Alexey Simak filed bug report #1600447
(http://curl.haxx.se/bug/view.cgi?id=1600447) in which he noted that active
FTP connections don't work with the multi interface. The problem is here that
the multi interface state machine has a state during which it can wait for the
data connection to connect, but the active connection is not done in the same
step in the sequence as the passive one is so it doesn't quite work for
active. The active FTP code still use a blocking function to allow the remote
server to connect.

The fix (work-around is a better word) for this problem is to set the
boolean prematurely that the data connection is completed, so that the "wait
for connect" phase ends at once.
2006-12-05 13:49:29 +00:00
Daniel Stenberg
3ce43764be Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
HTTP upload was disconnected:

"What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is
setting *only* POLLHUP on poll() when the conditions in my previous mail
occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So
basically what was happening, is poll() was returning immediately (with
POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or
POLLOUT was set. This still caused Curl_readwrite() to be called, which
quickly returned. Then the transfer() loop kept continuing at full speed
forever."
2006-12-05 13:37:05 +00:00
Daniel Stenberg
b555c60e49 curl.dsmirror.nl is another mirror 2006-12-05 13:21:55 +00:00
Daniel Stenberg
2336d010ef fixed in CVS 2006-12-05 13:20:28 +00:00
Daniel Stenberg
b9af0d89d5 fix the libssh2 include path somewhat when --with-libssh2 is used and added
a warning output if no OpenSSL was found
2006-12-03 09:19:23 +00:00
Daniel Stenberg
6f2afe0c30 CURLOPT_CLOSEPOLICY can't be set 2006-12-01 11:54:00 +00:00
Daniel Stenberg
d8c61d459e Toon Verwaest reported that there are servers that send the Content-Range:
header in a third, not suppported by libcurl, format and we agreed that we
could make the parser more forgiving to accept all the three found
variations.
2006-12-01 07:49:22 +00:00
Daniel Stenberg
7ae5ebbeb2 the extra copy of downloads should be fixed too 2006-11-30 09:21:21 +00:00
Daniel Stenberg
7335b71dfb two more 2006-11-29 21:47:22 +00:00
Daniel Stenberg
9583b03074 Is CURLOPT_FORBID_REUSE broken? 2006-11-29 14:39:50 +00:00
Daniel Stenberg
3c81d5f125 adding notes of what to work on and fix before next release 2006-11-27 22:07:56 +00:00
Daniel Stenberg
688699a046 no need to access it with conn->data since data is already a local variable
holding the conn->data value
2006-11-27 13:38:32 +00:00
Daniel Stenberg
090f5a9a45 added the new test 282 2006-11-25 13:32:48 +00:00
Daniel Stenberg
da58d03ff7 Venkat Akella found out that libcurl did not like HTTP responses that simply
responded with a single status line and no headers nor body. Starting now, a
HTTP response on a persistent connection (i.e not set to be closed after the
response has been taken care of) must have Content-Length or chunked
encoding set, or libcurl will simply assume that there is no body.

To my horror I learned that we had no less than 57(!) test cases that did bad
HTTP responses like this, and even the test http server (sws) responded badly
when queried by the test system if it is the test system. So although the
actual fix for the problem was tiny, going through all the newly failing test
cases got really painful and boring.
2006-11-25 13:32:04 +00:00
Daniel Stenberg
9ea3831c08 James Housley fixed SCP downloading by setting the maxdownload. 2006-11-25 09:49:29 +00:00
Yang Tse
a46f55b9de Make sure RETSIGTYPE is properly defined 2006-11-25 01:02:52 +00:00
Daniel Stenberg
a634f64400 James Housley did lots of work and introduced SFTP downloads. 2006-11-24 22:14:39 +00:00
Yang Tse
bcd8a3b240 Define HAVE_SIGNAL_H, HAVE_SIG_ATOMIC_T and HAVE_SIG_ATOMIC_T_VOLATILE
as appropriate for platforms that don't have autotools support
2006-11-24 16:38:58 +00:00
Daniel Stenberg
04d5d1895c Michael Wallner fixed this problem: When I set domains in the options
struct, and there are domain/search entries in /etc/resolv.conf, the domains
of the options struct will be overridden.
2006-11-22 22:54:41 +00:00
Daniel Stenberg
abd2775a70 Install ares_dns.h too 2006-11-22 22:51:01 +00:00
Yang Tse
73226415fc Added a check in configure that verifies if <signal.h> is available,
defining HAVE_SIGNAL_H if the header is available.

Added a check in configure that tests if the sig_atomic_t type is
available, defining HAVE_SIG_ATOMIC_T if it is available. Providing
a suitable default in setup_once.h if not available.

Added a check in configure that tests if the sig_atomic_t type is
already defined as volatile, defining HAVE_SIG_ATOMIC_T_VOLATILE
if it is available and already defined as volatile.
2006-11-22 18:41:34 +00:00
Daniel Stenberg
ab160ef445 new french mirror 2006-11-21 07:45:49 +00:00
Yang Tse
268fe09322 Revert ftpserver.pl back to revision 1.74 Adding change done in 1.76
This is done to back out changes done in revisions 1.77 and 1.75
2006-11-20 16:58:41 +00:00
Yang Tse
7a557e984a Revert runtests.pl back to revision 1.212
This is done to back out changes done from revisions 1.213 to 1.217
2006-11-20 16:58:04 +00:00
Yang Tse
f1a55cbe6d Revert ftp.pm back to revision 1.5 Adding copyright notice.
This is done to back out changes done from revisions 1.6 to 1.10
2006-11-20 16:57:01 +00:00
Yang Tse
1e35d95df8 Add some message logging 2006-11-20 10:35:25 +00:00
Yang Tse
d8387b418d stop slaves before stopping servers 2006-11-20 06:22:51 +00:00
Yang Tse
adea16a294 Revert to KILL test servers until all test servers
have proper TERM and INT signal handlers implemented.
2006-11-20 03:25:17 +00:00
Daniel Stenberg
7f2d5cab2d log the sleep, like when done in test 190 2006-11-19 22:48:40 +00:00
Daniel Stenberg
c6ff612f6e Frank Teo provided an updated, mostly docs changed 2006-11-19 21:55:34 +00:00
Yang Tse
8db353e1d7 Avoid passing child pid and test server pid, using the running
servers hash, and adjust message arguments accordingly.
2006-11-19 03:47:56 +00:00
Yang Tse
e6978117a7 Comment out the use of the "warnings" module now that ftp.pm seems to
be clear of warnings. Uncomment it if this module is further modified.

The "warnings" module requires perl 5.006 or later. Previous perl
versions don't have it and die on missing modules.
2006-11-19 03:47:11 +00:00
Daniel Stenberg
5dcb055077 new ruby binding, new tclcurl release 2006-11-18 14:46:33 +00:00
Yang Tse
0b5e1a9b2f Avoid keeping dupe pids When forked pid and test server pid is the same one. 2006-11-18 04:07:01 +00:00
Yang Tse
2e17a97474 Fix warning "Use of uninitialized value in ...".
If the list has only one item avoid sort subroutine.
2006-11-18 04:05:42 +00:00
Yang Tse
74ddbd8a3b The hash of running servers is now a hash of hashes which for each running
server holds not only its two main pids, but also the pidfile of the test
server and the 'slavepidfiles' for ftp* servers. This allows a better control
when stopping servers.

Now from runtests.pl when test servers are stopped they are signalled in
sequence TERM, INT and KILL allowing time in between for them to die. This
will give us a chance of gracefully stopping test servers, which we didn't
have when we were killing them in first instance.
2006-11-17 16:44:22 +00:00
Gisle Vanem
b8039a821b Call libssh2_session_free() to release memory allocated during
libssh2 startup.
2006-11-15 05:35:35 +00:00
Gisle Vanem
438312f00e Free 'scp->path' in case of libssh2 setup failure. 2006-11-14 20:26:13 +00:00
Daniel Stenberg
381ccaa391 Ron in bug #1595348 (http://curl.haxx.se/bug/view.cgi?id=1595348) pointed
out a stack overwrite (and the corresponding fix) on 64bit Windows when
dealing with HTTP chunked encoding.
2006-11-13 17:29:07 +00:00
Daniel Stenberg
3204494883 bug #1595348 by Ron pointed out this flaw and fix 2006-11-13 17:26:43 +00:00
Daniel Stenberg
e264f699d4 Tor Arntsen spotted this mistake 2006-11-13 13:48:55 +00:00
Daniel Stenberg
68d4b77d44 we did 1.3.2 and are now on the 1.3.3 track! 2006-11-11 22:23:48 +00:00
Daniel Stenberg
e1ac99af1f fix header to match actual proto 2006-11-11 22:05:33 +00:00
Daniel Stenberg
be0d17e812 cleaned up Curl_write() and the sub functions it uses for various protocols.
They all now return ssize_t to Curl_write().

Unfortunately, Curl_read() is in a sorrier state but it too would benefit from
a similar cleanup.
2006-11-11 21:34:43 +00:00
Daniel Stenberg
4eb35406f4 Nir Soffer updated libcurl.framework.make: fix symlinks, should link to
Versions, not to ./Versions and indentation improvments
2006-11-09 21:58:28 +00:00
Daniel Stenberg
624745ab20 Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov
2006. It turned out we wrongly assumed that the connection cache was present
when tearing down a connection.
2006-11-09 21:54:33 +00:00
Daniel Stenberg
9354822e09 Ciprian Badescu found a SIGSEGV when doing multiple TFTP transfers using the
multi interface, but I could also repeat it doing multiple sequential ones
with the easy interface. Using Ciprian's test case, I could fix it.
2006-11-09 21:36:18 +00:00
Yang Tse
17d4f9513e Remove showing stderr log files unconditionally for tests 518 and 537.
Add failure checking for servers when fork()ed.

Use same code path in 'stopserver' when called with a single or multiple pids.
2006-11-09 13:20:42 +00:00
Daniel Stenberg
f830d77307 Bradford Bruce reported that when setting CURLOPT_DEBUGFUNCTION without
CURLOPT_VERBOSE set to non-zero, you still got a few debug messages from the
SSL handshake. This is now stopped.
2006-11-08 21:49:14 +00:00
Daniel Stenberg
a03c76b228 ok stop using old and deprecated options 2006-11-08 08:49:27 +00:00
Daniel Stenberg
35ad61429d add missing names 2006-11-07 15:21:11 +00:00
Daniel Stenberg
b5b3d9e5c7 Olaf fixed a leftover problem with the CONNECT fix of his that would leave a
wrong error message in the error message buffer.
2006-11-07 14:07:02 +00:00
Gisle Vanem
6e682c2b01 Moved select_s() to Makefile.dj since select() is used in applications. 2006-11-07 13:29:15 +00:00
Gisle Vanem
7e2ea2ece0 Update copyright year. 2006-11-07 13:20:01 +00:00
Yang Tse
01926d66d7 add TODO note 2006-11-06 18:28:34 +00:00
Yang Tse
69f7d0a0ce compiler warning fix 2006-11-06 18:27:25 +00:00
Yang Tse
d1c84705ec remove redundant check for Win32 2006-11-06 18:26:36 +00:00
Yang Tse
3274908551 avoid a couple of potential zero size memory allocations 2006-11-06 13:56:51 +00:00
Daniel Stenberg
c730934498 mention the areslib.dsp fix 2006-11-05 23:11:22 +00:00
Daniel Stenberg
471a8b223b add the recent crowd of contributors 2006-11-05 23:11:07 +00:00
Daniel Stenberg
47ee9202c3 Andreas Rieke fixed back the correct line endings! 2006-11-05 23:08:11 +00:00
Yang Tse
1bcbe89802 Prevent multiple initialization of memdebug configuration variables.
This was possible on debug c-ares enabled builds when both CURL_MEMDEBUG
and CARES_MEMDEBUG environment variables were set. Leading to a file handle
leak even when both variables had the same value, and wierd test suite
results when different.
2006-11-05 12:42:50 +00:00
Gisle Vanem
bf57e9bb12 Ifdef around S_IRGRP and S_IROTH (meaningless on Win32). 2006-11-03 15:52:21 +00:00
Yang Tse
318a7584f3 add a couple more of debugging messages 2006-11-03 14:13:25 +00:00
Daniel Stenberg
961ec228d4 SCP support added 2006-11-03 13:45:52 +00:00
Daniel Stenberg
a777eb3d81 Olaf Stueben provided a patch that I edited slightly. It fixes the notorious
KNOWN_BUGS #25, which happens when a proxy closes the connection when
libcurl has sent CONNECT, as part of an authentication negotiation. Starting
now, libcurl will re-connect accordingly and continue the authentication as
it should.
2006-11-03 12:43:55 +00:00
Daniel Stenberg
7f79b52dae initial SCP support is now added 2006-11-03 12:22:13 +00:00
Daniel Stenberg
db680edc26 Update the information about what c-ares version that's required. 1.3.1 had
a fatal bug so we must require 1.3.2 to get flawless functionality with c-ares.
2006-11-03 10:56:37 +00:00
Daniel Stenberg
e6ce80458f stand clear for release 1.3.2 2006-11-03 10:47:35 +00:00
Daniel Stenberg
cdcb123aa8 Andreas Rieke added missing file and changed line endings 2006-11-03 10:41:33 +00:00
Yang Tse
78081a1652 reduce max size of dinamically allocated arrays to minimize the nasty
behaviour some versions of IRIX exhibit of committing suicide on big
mallocs instead of just returning a friendly null pointer
2006-11-03 10:05:21 +00:00
Yang Tse
7408976b15 fix missing '$' for var OPT_LIBSSH2 2006-11-03 03:05:15 +00:00
Yang Tse
763bb73cc3 update copyright year 2006-11-03 02:36:32 +00:00
Yang Tse
1dee2cd55e fix comments and renumber rlimit return codes
fix closing of fd's when limit is reached
2006-11-03 01:57:25 +00:00
Yang Tse
426ecfd136 fix comments and renumber rlimit return codes 2006-11-03 01:56:55 +00:00
Daniel Stenberg
4913baed16 update the counter 2006-11-02 22:11:38 +00:00
Daniel Stenberg
675f6a8901 mention the new options 2006-11-02 22:10:18 +00:00
Daniel Stenberg
2147284cad James Housley brought support for SCP transfers 2006-11-02 21:56:40 +00:00
Yang Tse
7f1870da5f remove leftover comment 2006-11-02 20:56:40 +00:00
Yang Tse
2149a095f7 update and split test cases 518 and 537 into its own source code file 2006-11-02 20:50:18 +00:00
Yang Tse
e8d21adbaa code cleanup 2006-11-02 15:47:24 +00:00
Yang Tse
fa28531322 use our internal string functions and replace sprintf with snprintf 2006-11-02 03:45:07 +00:00
Yang Tse
deef85ca9a Update protocol verification end of lines 2006-11-02 01:21:28 +00:00
Yang Tse
4f4427ff41 check symbol HAVE_UNISTD_H instead of UNISTD_H to include unistd.h 2006-11-02 00:34:21 +00:00
Yang Tse
0ed285e84d prototype for gethostname is in unistd.h 2006-11-02 00:33:43 +00:00
Yang Tse
905ca77c9e test 518 is all about testing libcurl functionality
when more than FD_SETSIZE file descriptors are open.
This means that if for any reason we are not able to
open more than FD_SETSIZE file descriptors then test
518 should not be run.

test 537 is all about testing libcurl functionality
when the system has nearly exhausted the number of
free file descriptors. Test 537 will try to run with
very few free file descriptors.
2006-11-01 18:33:50 +00:00
Gisle Vanem
61043c7e74 Updated dependency output. 2006-10-31 20:45:17 +00:00
Gisle Vanem
4545c9f22f Updated dependencies to not include config.h. 2006-10-31 20:44:36 +00:00
Gisle Vanem
ad772d7b48 Removed unneeded stuff. 2006-10-31 18:01:07 +00:00
Gisle Vanem
a56ef92729 Added Watt-32 section to fix things for Watt32+Win32 targets. 2006-10-31 17:54:51 +00:00
Gisle Vanem
561d01c450 Don't include "nameser.h" for Watt32. Use the normal BSD-socket headers. 2006-10-31 17:51:54 +00:00
Gisle Vanem
c6c8a30da1 Added definition of select() for Watt32. 2006-10-31 17:25:48 +00:00
Gisle Vanem
914dbeb12c Rewritten to use ../packages/DOS/common.dj. 2006-10-31 17:24:25 +00:00
Gisle Vanem
56dc90eaab Change 'FILETYPE' to ' VFT_APP'. 2006-10-31 16:25:30 +00:00
Yang Tse
f51c567de3 Show stderr log file for test 518 unconditionally.
In this way we'll be able to sort out problems that might
arise in the prechek phase of the 518 test.

Once that 518 has been verified this change will be undone.
2006-10-31 01:30:42 +00:00
Yang Tse
9b2acca63e Sync comment with code and add three messages more 2006-10-31 01:24:03 +00:00
Yang Tse
afcd9f1b1c Address some pitfalls in the rlimit() function check that were
preventing execution of this test on many platforms
2006-10-30 17:24:31 +00:00
Gisle Vanem
755ccbc468 Allow 'curl_*printf()' to be used in C++ programs. 2006-10-30 16:26:24 +00:00
Daniel Stenberg
0af7aec211 add contributors from the 7.16.0 release 2006-10-30 09:03:34 +00:00
Daniel Stenberg
ee085ad6bd start working on 7.16.1 2006-10-30 08:52:12 +00:00
Daniel Stenberg
719bec2606 7.16.0 material 2006-10-29 23:03:14 +00:00
Daniel Stenberg
b1db9dbb16 corrected how tests/memanalyze.pl is used 2006-10-29 23:00:52 +00:00
Yang Tse
609044aea2 Compiler warning fix 2006-10-29 21:19:23 +00:00
Yang Tse
ba481718a4 Make more human readable and maintainable previous
compiler warning fix since it was Ok and actually
avoids the targeted compiler warning.
2006-10-29 14:58:59 +00:00
Daniel Stenberg
1be60dde7f updated to current status 2006-10-29 09:18:32 +00:00
Daniel Stenberg
e92e811a61 updated to reflect reality 2006-10-29 09:11:44 +00:00
Daniel Stenberg
5aa0db8681 a small unification of the error text on failed server startups 2006-10-27 21:07:08 +00:00
Yang Tse
d5691211dd Sync with lib/setup_once.h 2006-10-27 15:37:26 +00:00
Yang Tse
a93695a70e Compiler warning fix.
Assigning the const value zero to a pointer to function
results in a null pointer value assignment to the function
pointer.

Assignment of any nonzero value is what should result in a
implementation compiler dependent result.

Since what we want to do here is the first case, this should
not trigger compiler warnings related with conversions from
'pointer to data' to 'pointer to function'.

Our autobuild test suite will judge.
2006-10-27 15:32:18 +00:00
Gisle Vanem
ce935a2697 Fixed 'x_TYPE_ARG2' to match prototypes of recv() and send(). 2006-10-27 14:13:32 +00:00
Gisle Vanem
812ce0d93f Get rid of the special sread()+swrite() for MSDOS. Use recv()
and send(). Added needed HAVE_x defines.
2006-10-27 14:07:32 +00:00
Gisle Vanem
bbae5b49f9 Added 'RECV_TYPE_ARGx' needed in getinfo.c. 2006-10-27 13:57:16 +00:00
Yang Tse
772a985dc3 Update copyright year, since the file has been modified 2006-10-27 03:47:57 +00:00
Yang Tse
8a7514de8a Compiler warning fix 2006-10-27 02:18:29 +00:00
Yang Tse
32ad212ac9 30 seconds isn't long enough for this test on a loaded server. 2006-10-27 01:58:59 +00:00
Yang Tse
8a8d5c784c Do an explicit typecast of data pointers to function pointers
to avoid picky compiler warnings, since this is what we want!
2006-10-27 01:04:41 +00:00
Gisle Vanem
125830ab4b Use proper 'stat' structure for fstat(). I.e. 'struct _stati64' and '_fstati64()'
on Win32.
2006-10-26 14:30:11 +00:00
Yang Tse
5b75b423e6 Improved rlimit logic:
- Take in account RLIM_INFINITY.
- Verify that soft limit is actually changed when doing so.
- Show errno in case getrlimit or setrlimit fails.
- Keep file descriptors open only while runing this test.
2006-10-26 13:55:24 +00:00
Yang Tse
012d7e2878 Fix Curl_open() not reporting failure when allocation of the
buffer used to store headers in the SessionHandle failed.
2006-10-26 11:15:25 +00:00
Yang Tse
cd3029f36f 30 seconds isn't long enough for this test on a loaded server. 2006-10-26 09:50:21 +00:00
Daniel Stenberg
6adaac7e18 a Smalltalk binding 2006-10-25 21:07:26 +00:00
Daniel Stenberg
cde5e35d9b Fixed CURLOPT_FAILONERROR to return CURLE_HTTP_RETURNED_ERROR even for the
case when 401 or 407 are returned, *IF* no auth credentials have been given.
The CURLOPT_FAILONERROR option is not possible to make fool-proof for 401
and 407 cases when auth credentials is given, but we've now covered this
somewhat more.

You might get some amounts of headers transferred before this situation is
detected, like for when a "100-continue" is received as a response to a
POST/PUT and a 401 or 407 is received immediately afterwards.

Added test 281 to verify this change.
2006-10-25 20:40:14 +00:00
Gisle Vanem
ee17fba72e Fixed "'x' might be used uninitialized in this function" warning.
Removed trailing whitespace.
2006-10-25 14:16:01 +00:00
Gisle Vanem
6296b89319 Added '-d' option for Watt32 targets. Added cvs id. 2006-10-25 14:13:35 +00:00
Yang Tse
5450db9151 Compiler warning fix 2006-10-25 10:25:43 +00:00
Yang Tse
b4700f026b Add project notice and file Id 2006-10-25 09:20:44 +00:00
Yang Tse
d771fa7c48 Compiler warning fix 2006-10-25 08:52:00 +00:00
Daniel Stenberg
b2c378267b updated copyright year 2006-10-25 07:19:45 +00:00
Yang Tse
384c8f3560 Use curl_global_init() and curl_global_cleanup().
Improve cleanup in case of initialization failure.
2006-10-25 05:59:46 +00:00
Daniel Stenberg
f44ef427a2 other pipelining fixes by Ravi Pratap, that now makes pipelines get used better 2006-10-24 21:14:40 +00:00
Yang Tse
c54a4301ee Abort test if it seems that it would have run forever. This is just to prevent
test hanging and actually is an indication that there's a condition that is
not being properly handled at some point in the library.

Remove a pair of braces and adjust indentation appropriately.
2006-10-24 15:51:42 +00:00
Daniel Stenberg
36a3514225 the check in ConnectionExists() for not re-using a non-resolved connection now
applies for asynch name resolves in general and not only ares
2006-10-23 20:41:50 +00:00
Daniel Stenberg
e1edd41e1b Ravi Pratap provided a major update with pipelining fixes. We also no longer
re-use connections (for pipelining) before the name resolving is done.
2006-10-23 20:34:56 +00:00
Yang Tse
13e60c55a1 Avoid trying to compare more than strlen bytes. 2006-10-23 19:16:19 +00:00
Dan Fandrich
9b8b1a68f0 30 seconds isn't long enough for this test on a loaded server. 2006-10-23 19:15:14 +00:00
Yang Tse
4ec9316155 Replace is*() macros with our own IS*() ones. 2006-10-23 19:14:54 +00:00
Daniel Stenberg
ef769500d4 Nir Soffer fixed a cp line and got rid of an rm 2006-10-22 22:18:24 +00:00
Daniel Stenberg
23692574a2 until we learn how to use Makefile.inc from here, I've added socks.o in here
as well
2006-10-22 07:43:34 +00:00
Yang Tse
5f6fd682a5 Provide 'datarootdir' parameter to shutup configuration warning,
'packages/EPM/curl.list.in seems to ignore the --datarootdir setting'
2006-10-21 17:08:48 +00:00
Yang Tse
db24518a30 Fix misplaced runtime library specification for 'release-dll' target 2006-10-21 16:25:31 +00:00
Daniel Stenberg
90933ac660 rely on the global LDADD instead of having specific ones for every program 2006-10-21 13:00:51 +00:00
Daniel Stenberg
087579a6f4 Nir Soffer for his Makefile.am fix 2006-10-21 12:49:45 +00:00
Yang Tse
de59cde155 Fix copy-paste error 2006-10-21 12:36:10 +00:00
Yang Tse
3cd95eacdf Compiler warning fix 2006-10-21 12:35:16 +00:00
Daniel Stenberg
deb81b2ad4 Nir Soffer made the tests/libtest/Makefile.am use a proper variable for all
the single test applications' link and dependences, so that you easier can
override those from the command line when using make.
2006-10-21 11:40:04 +00:00
Daniel Stenberg
4e717cdb30 Armel Asselin separated CA cert verification problems from problems with
reading the (local) CA cert file to let users easier pinpoint the actual
problem. CURLE_SSL_CACERT_BADFILE (77) is the new libcurl error code.
2006-10-21 11:32:05 +00:00
Yang Tse
33acd6f041 Compiler warning fix 2006-10-21 10:54:41 +00:00
Daniel Stenberg
7575e6afc4 made the arrow for 'Send SSL data' point in the right direction! 2006-10-20 21:26:10 +00:00
Yang Tse
316a9f6480 Compiler warning fix 2006-10-20 17:54:05 +00:00
Yang Tse
c6de584cad Since now src/setup.h includes setup_once.h, src/config-win32.h needs
the definitions for the return type and arguments types of functions
recv() and send().
2006-10-20 17:16:06 +00:00
Yang Tse
d997ff6aa8 Oops! Actually set the limit to 30 seconds. 2006-10-20 15:45:12 +00:00
Yang Tse
b9ccecf86e Decrease the posibility of aborting a test which actually is not
stale by replacing loop counters with timeouts. In this way the
main loop of the test will be allowed to run up to 30 seconds on
any platform before aborting it.
2006-10-20 15:39:54 +00:00
Daniel Stenberg
bd5d21aaf2 When a resolve is made on a pipelined connection we need to detect it properly
(when the resoling isn't completede yet) and not confuse it with a simple
connection re-use (non-pipelined).
2006-10-20 12:25:39 +00:00
Yang Tse
19e07771d1 Set loop2 counter limit to 60 on this test to avoid a false positive. 2006-10-19 23:35:52 +00:00
Yang Tse
ef267ab449 Replace tabs with spaces and Compiler warning fix. 2006-10-19 22:49:33 +00:00
Yang Tse
4f6ed683e8 Compiler warning fix 2006-10-19 22:48:33 +00:00
Yang Tse
c818e7064f When aborting, show loop counter values when more than one counter exists. 2006-10-19 21:12:27 +00:00
Yang Tse
ead6ab2ef7 Abort test if it seems that it would have run forever. This is just to prevent
test hanging and actually is an indication that there's a condition that is
not being properly handled at some point in the library.

Loop counter limits might need to be further increased on false positives.
2006-10-19 17:29:25 +00:00
Daniel Stenberg
5c3dc49f44 Here's an effort to avoid saying 'data not shown' in the debug parts when the
data is actually shown on screen. Like when you do 'curl -v host' with data
and debug info sent to the same terminal.
2006-10-19 14:28:50 +00:00
Yang Tse
83884180ac Builds using synchronous name resolver dislike marking the connection as async. 2006-10-19 02:30:02 +00:00
Yang Tse
4cac96c33a Sync with lib/setup_once.h 2006-10-18 21:25:12 +00:00
Yang Tse
5df4be1165 Check for USE_WINSOCK instead of WIN32 where the check was done
to verify winsock API availability.
2006-10-18 21:05:40 +00:00
Yang Tse
96445f1b7d Introduce symbol USE_WINSOCK which will be defined when
using winsock or winsock2 API.
2006-10-18 15:57:49 +00:00
Daniel Stenberg
4bdd7596d3 the expire timer is a bit too annoying to see all the time ;-) 2006-10-18 15:11:24 +00:00
Daniel Stenberg
18aae32015 When a connection is re-used, it can be flagged for re-use before the name
resolving is completed so we must make sure to survive it and mark the
connection as async (ie not yet connected completely).
2006-10-18 15:10:49 +00:00
Daniel Stenberg
a8996b9e52 use the return code from lseek() to detect problems and bail out if so 2006-10-18 14:47:58 +00:00
Gisle Vanem
94095c61d8 Added ISPRINT() required for src/main.c. 2006-10-18 13:50:23 +00:00
Daniel Stenberg
1cddd744ad Tor's spell fixes 2006-10-18 12:59:02 +00:00
Daniel Stenberg
786738dd00 changes done the last few days 2006-10-18 11:13:56 +00:00
Daniel Stenberg
5b8d5fdf2f cut out matching host names starting with telnet or ftps, since they hardly
ever actually are used
2006-10-18 11:13:39 +00:00
Daniel Stenberg
694f31ca37 the "work in progress" for #25 was ditched a long time ago 2006-10-18 07:53:24 +00:00
Yang Tse
9c1ad0f9f7 Replace is*() macros with our own IS*() ones.
Get rid of non ANSI/ISO isascii().
2006-10-18 03:42:06 +00:00
Yang Tse
71c6335293 Move definition of IS*() macros to setup_once.h 2006-10-18 03:41:19 +00:00
Dan Fandrich
8c38ea4ebc Fixed compile error in HAVE_SIGACTION case. 2006-10-17 21:45:37 +00:00
Daniel Stenberg
44d84ac164 Avoid typecasting a signed char to an int when using is*() functions, as that
could very well cause a negate number get passed in and thus cause reading
outside of the array usually used for this purpose.

We avoid this by using the uppercase macro versions introduced just now that
does some extra crazy typecasts to avoid byte codes > 127 to cause negative
int values.
2006-10-17 21:32:56 +00:00
Daniel Stenberg
930f9bd534 clear the struct size not the pointer size, pointed out in bug report
#1579171
2006-10-17 20:34:11 +00:00
Daniel Stenberg
b61fbbde46 buildconf already runs ares/buildconf by itself if there is an ares subdir
present, so there's no use to doing it again in this script!
2006-10-17 11:46:42 +00:00
Yang Tse
ec956b0334 Explicit typecast for Curl_debug() size argument 2006-10-17 10:04:13 +00:00
Yang Tse
44ffe0dc79 Typo 2006-10-17 09:07:38 +00:00
Daniel Stenberg
e3a61fba52 make the low_speed check set the expire timer so that it has a chance to work
even when using curl_multi_socket() or even using the multi_perform() when
relying on multi_timeout() to be good.
2006-10-17 09:05:44 +00:00
Daniel Stenberg
65794f60ec Please welcome our new haxx.se curl mirror, for really fast Swedish access. 2006-10-17 08:07:48 +00:00
Daniel Stenberg
7a710b4970 Jeff helped me pinpoint that we didn't properly set the expire timer during
c-ares name resolves, but now we do!
2006-10-17 08:06:27 +00:00
Daniel Stenberg
0bb20cc611 fix the name resolve abort timeout calculation (when signals are used) 2006-10-17 08:05:41 +00:00
Yang Tse
433c0c895e Compiler warning fix 2006-10-17 02:31:06 +00:00
Daniel Stenberg
67e8d22958 Added a check in configure that simply tries to run a program (not when
cross-compiling) in order to detect problems with run-time libraries that
otherwise would occur when the sizeof tests for curl_off_t would run and
thus be much more confusing to users. The check of course should run after
all lib-checks are done and before any other test is used that would run an
executable built for testing-purposes.
2006-10-16 08:30:54 +00:00
Yang Tse
10d1fc0e73 Compiler warning fix 2006-10-15 23:13:12 +00:00
Gisle Vanem
2260c8aa11 Replace ";;" with ";". 2006-10-15 20:28:03 +00:00
Gisle Vanem
97eb62aff8 Rearranged target HAVE_x section. 2006-10-15 19:41:15 +00:00
Yang Tse
1855fc35f2 Declare our own timeval struct if HAVE_STRUCT_TIMEVAL is not defined 2006-10-14 12:02:19 +00:00
Yang Tse
dc3ed35313 Define HAVE_STRUCT_TIMEVAL as appropriate for platforms that lack autotools support 2006-10-14 12:01:44 +00:00
Daniel Stenberg
6b868df554 Prevent ares_getsock() to overflow if more than 16 sockets are used. 2006-10-13 21:25:11 +00:00
Dan Fandrich
5ccbbe40c2 The tagging of application/x-www-form-urlencoded POST body data sent
to the CURLOPT_DEBUGFUNCTION callback has been fixed (it was erroneously
included as part of the header).  A message was also added to the
command line tool to show when data is being sent, enabled when
--verbose is used.
2006-10-13 21:02:27 +00:00
Daniel Stenberg
86f93a53d6 print the actual (externally known) easy handle and not the internal container
for it
2006-10-13 14:54:36 +00:00
Daniel Stenberg
f53347631e Added comments about checking return code and the maxfd counter 2006-10-13 14:01:19 +00:00
Daniel Stenberg
efe3cb6e1a Added curl_multi_dump() when built with CURLDEBUG - this is not a stable public
function, this is only meant to allow easier tracking of the internal handle's
state and what sockets they use. Only for research and development.
2006-10-13 07:11:26 +00:00
Yang Tse
32ac4edeed Check for struct timeval at configuration time 2006-10-13 01:35:14 +00:00
Daniel Stenberg
4c04c09138 ghiper now uses the timer callback in the multi interface 2006-10-12 21:26:50 +00:00
Daniel Stenberg
47ea80baee avoid an overflow if an excessive amount of servers are used 2006-10-12 16:47:50 +00:00
Daniel Stenberg
95c3fa836b clarify more 2006-10-12 14:35:20 +00:00
Daniel Stenberg
ab60a12465 Starting now, adding an easy handle to a multi stack that was already added
to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
2006-10-12 14:30:47 +00:00
Daniel Stenberg
2d38e51867 deleted #19 since it concerted FTP third party transfers and they are no longer
supported
2006-10-12 09:02:46 +00:00
Daniel Stenberg
a5dda669e3 we've cut out third party transfers 2006-10-12 08:55:01 +00:00
Daniel Stenberg
3c4f3a680a point out the sslcert web page for -k/--insecure 2006-10-12 08:52:20 +00:00
Daniel Stenberg
b61c06384a Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
and while doing so it became apparent that the current timeout system for
the socket API really was a bit awkward since it become quite some work to
be sure we have the correct timeout set.

Jeff then provided the new CURLMOPT_TIMERFUNCTION that is yet another
callback the app can set to get to know when the general timeout time
changes and thus for an application like hiperfifo.c it makes everything a
lot easier and nicer. There's a CURLMOPT_TIMERDATA option too of course in
good old libcurl tradition.
2006-10-12 08:36:47 +00:00
Daniel Stenberg
e7742bfb7c the textual arraw for "Send SSL data" was the wrong way 2006-10-12 08:14:13 +00:00
Yang Tse
22307ae0ee Inclusion of time header files based on header existance 2006-10-12 03:57:33 +00:00
Yang Tse
e150150d9f Remove redundant __CYGWIN__ symbol check 2006-10-11 16:01:16 +00:00
Yang Tse
943f0733bb Compiler warning fix 2006-10-10 23:58:02 +00:00
Yang Tse
8274447dd9 Call curl_global_cleanup() in all code paths before exiting test 2006-10-10 23:50:37 +00:00
Daniel Stenberg
083a84e5d0 repair id string 2006-10-10 19:48:24 +00:00
Daniel Stenberg
d5eb386d00 Added ghiper.c, Jeff Pohlmeyer's example code using the curl_multi_socket()
API with glib2
2006-10-10 19:46:57 +00:00
Daniel Stenberg
1ce7b48057 mark the handle as no longer having a broken pipe when a transfer has failed 2006-10-10 14:23:34 +00:00
Daniel Stenberg
cbcdd337aa Added test case 536 in an attempt to add Bogdan Nicula's problematic case
with multi interface and pipelining. This test just works and did not repeat
the problem his test code showed, but could still serve as a useful test.
2006-10-09 21:29:53 +00:00
Daniel Stenberg
c144adf77c used for test 535 too 2006-10-09 21:26:09 +00:00
Daniel Stenberg
d390039873 minor indent fix 2006-10-09 21:24:50 +00:00
Daniel Stenberg
7d0c58a285 when going to completed due to error, mark the handle as not in a pipeline
anymore
2006-10-09 21:24:34 +00:00
Daniel Stenberg
9263001b21 new mirrors 2006-10-09 21:04:48 +00:00
Daniel Stenberg
66ee6d07f8 kill trailing whitespace 2006-10-09 14:59:53 +00:00
Daniel Stenberg
a40dcca794 changed the wording about removal of internal headers with -H 2006-10-09 14:54:11 +00:00
Yang Tse
15e3dfe1d3 Compiler warning fix 2006-10-09 11:21:40 +00:00
Daniel Stenberg
a1de9367ec Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to test
case 535 and it now runs fine. Again a problem with the pipelining code not
taking all possible (error) conditions into account.
2006-10-09 06:58:05 +00:00
Yang Tse
eceb37bde2 Cygwin 1.5.21 needs this hack to pass test 160.
In this way 304 tests out of 304 reported OK.
2006-10-09 00:35:36 +00:00
Daniel Stenberg
56fcf85ab6 slightly improved 2006-10-08 22:19:25 +00:00
Daniel Stenberg
77db81d661 clarified more 2006-10-08 21:41:22 +00:00
Daniel Stenberg
2ad7fcbc2f test 534 added in an attempt to repeat Bogdan Nicula's bug... 2006-10-08 10:51:53 +00:00
Daniel Stenberg
2c62dfd124 modified lib533 to accept both URLs on the command line 2006-10-08 08:50:12 +00:00
Daniel Stenberg
ef66497a0d Fix a "sockfilt" leak. When a new 'data' connection sockfilt server is started,
make sure that a previously used one is killed first (since they re-use the
same .pid file etc)
2006-10-08 08:43:32 +00:00
Daniel Stenberg
1128029599 don't display or act on state changes that doesn't actually change state 2006-10-07 21:04:57 +00:00
Daniel Stenberg
befc30bc55 Bogdan Nicula's hanging test case was converted to test case 533 and the test
now runs fine.
2006-10-06 21:19:57 +00:00
Daniel Stenberg
ca5846cde9 catch silly mistakes better 2006-10-06 21:19:40 +00:00
Gunter Knauf
8547ab1663 updated for latest OpenSSL release. 2006-10-06 00:24:25 +00:00
Daniel Stenberg
9c0e6ac365 planned stuff to do before release 2006-10-05 14:33:23 +00:00
Daniel Stenberg
552b963e6d Dmitriy Sergeyev provided an example source code that crashed CVS libcurl
but that worked nicely in 7.15.5. I converted it into test case 532 and
fixed the problem.
2006-10-04 21:11:08 +00:00
Daniel Stenberg
e2b48366d3 removed more dead code that is unused since the removal of the third party
transfer support
2006-10-02 13:00:54 +00:00
Daniel Stenberg
5e0d9aea32 Support for FTP third party transfers is now dropped 2006-09-30 20:31:11 +00:00
Daniel Stenberg
ae13c93b7d Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl
would crash if a bad function sequence was used when shutting down after
using the multi interface (i.e using easy_cleanup after multi_cleanup) so
precautions have been added to make sure it doesn't any more - test case 529
was added to verify.
2006-09-28 21:26:06 +00:00
Daniel Stenberg
b9f8a4a477 added more explanations 2006-09-27 21:15:36 +00:00
Daniel Stenberg
68e9f75708 As reported in bug: #1566077 the former URL mentioned in the generated cookie
jar has died and we now instead point out our own version of that
2006-09-27 21:00:45 +00:00
Daniel Stenberg
d569693f24 Armel Asselin's fix for the RESUME_FROM docu 2006-09-26 10:38:24 +00:00
Yang Tse
15d8bb2105 Compiler warning fix 2006-09-25 00:54:32 +00:00
Yang Tse
b2ca777a08 Compiler warning fix 2006-09-25 00:16:23 +00:00
Yang Tse
ba01198e6c Compiler warning fix 2006-09-25 00:05:39 +00:00
Yang Tse
6ebd5e1761 Compiler warning fix 2006-09-24 23:55:53 +00:00
Daniel Stenberg
2723eda1e4 Bernard Leak fixed configure --with-gssapi-libs 2006-09-24 22:03:01 +00:00
Daniel Stenberg
1fa3a5cce9 Cory Nelson made libcurl use the WSAPoll() function if built for Windows
Vista (_WIN32_WINNT >= 0x0600)
2006-09-24 10:41:00 +00:00
Daniel Stenberg
fe8aee6b08 eeep, tab completion error 2006-09-24 10:33:25 +00:00
Daniel Stenberg
0639e2a6e2 --ftp-ssl-control requires SSL/TLS, it does not "try" it 2006-09-24 10:30:40 +00:00
Daniel Stenberg
f1d707705e allow user in passwd state for test 280 to work (--ftp-alternative-to-user) 2006-09-24 10:30:02 +00:00
Daniel Stenberg
296a7db960 updated numbers 2006-09-23 20:50:44 +00:00
Daniel Stenberg
4c0936e72f minor edits 2006-09-23 20:46:07 +00:00
Daniel Stenberg
0992e391ba filled in some docs for the FTP server control commands 2006-09-23 20:39:34 +00:00
Daniel Stenberg
b22aaeef6a added simple test of --ftp-alternative-to-user 2006-09-23 20:39:15 +00:00
Daniel Stenberg
8090ee0e5d --ftp-alternative-to-user was missing in the help text 2006-09-23 20:25:45 +00:00
Daniel Stenberg
f7d31bb3e3 Mike Protts added --ftp-ssl-control to make curl use FTP-SSL, but only
encrypt the control connection and use the data connection "plain".
2006-09-23 19:37:23 +00:00
Daniel Stenberg
9cd928674f standard curl source code headers 2006-09-23 19:09:39 +00:00
Daniel Stenberg
3ea8a4d220 Dmitriy Sergeyev provided a patch that made the SOCKS[45] code work better as
it now will read the full data sent from servers. The SOCKS-related code was
also moved to the new lib/socks.c source file.
2006-09-23 19:07:20 +00:00
Dan Fandrich
b0d3ba76a0 -z works on FTP, too 2006-09-21 22:15:05 +00:00
Daniel Stenberg
ab798fe5ba (FTP) a failed upload does not invalidate the control connection 2006-09-21 20:52:58 +00:00
Daniel Stenberg
e7d90e08b9 Added test case 531 in an attempt to repeat bug report #1561470
(http://curl.haxx.se/bug/view.cgi?id=1561470) that is said to crash when an
FTP upload fails with the multi interface. It did not, but I made a failed
upload still assume the control connection to be fine.
2006-09-21 20:52:20 +00:00
Daniel Stenberg
c2404f77e9 Extended the explanation for CURLM_CALL_MULTI_PERFORM somewhat. 2006-09-21 11:09:54 +00:00
Daniel Stenberg
ec4a16f2e0 Armel Asselin fixed problems when you gave a proxy URL with user name and
empty password or no password at all. Test case 278 and 279 were added to
verify.
2006-09-20 21:49:41 +00:00
Daniel Stenberg
ca5de26f50 lots of "HTTPS" features are really "SSL" ones as they are also valid for
FTPS
2006-09-20 13:09:27 +00:00
Daniel Stenberg
71920d61e6 Michael Wallner's test program again help me track down a problem. This time
it basically was that we didn't remove the current connection from the pipe
list when following a redirect. Also in this commit: several cases of
additional debug code for debug builds helping to check and track down some
signs of run-time trouble.
2006-09-20 12:03:50 +00:00
Daniel Stenberg
5de75eee56 PEM is default type for key and cert 2006-09-20 11:35:13 +00:00
Daniel Stenberg
2d5fc39d35 Resize the connection cache upwards when adding more handles than what
currently fits in the cache, to make the cache work better especially for
pipelining cases but also for "mere" (persistent) connection re-use.
2006-09-16 21:50:29 +00:00
Daniel Stenberg
c001ed53fa Armel Asselin - When the easy handle is removed from the multi while libcurl
is still trying to resolve the host name, it seems that the ftp struct is not
yet initialized, but the removal action calls Curl_done() which calls
Curl_ftp_done. So we simply return success from there if no ftp pointer is
set.
2006-09-16 20:57:59 +00:00
Daniel Stenberg
39e01e9349 file-local function should be static and not use Curl_ prefix!
Curl_signalPipeClose is now signalPipeClose().
2006-09-15 08:47:55 +00:00
Gisle Vanem
9e54d4c7d2 Use CSOURCES as other makefiles. Add line for dependency generation. 2006-09-13 13:51:03 +00:00
Gisle Vanem
56bf97ffc9 'in6addr_any' must be placed in .c-file. Added 'REAL_WIN32' for
all Win32 targets except CygWin. Cleanup.
2006-09-13 13:41:53 +00:00
Yang Tse
7d3e719a2c Compiler warning fix 2006-09-13 12:42:12 +00:00
Daniel Stenberg
e55d4fd5c1 nicer reporting of disabled tests 2006-09-13 10:48:03 +00:00
Daniel Stenberg
5ee231415f added CVS id and clarified the comment lines 2006-09-13 10:18:01 +00:00
Daniel Stenberg
c866771cd2 Added a generic way to disable test cases when "all" is run, and added the
FTP 3rd party transfers to that file for now until I have them sorted out.
2006-09-13 10:16:36 +00:00
Yang Tse
4a24219a1a Fix error introduced in file version 1.369 2006-09-13 01:35:28 +00:00
Yang Tse
733a184ce0 Compiler warning fix 2006-09-12 23:51:01 +00:00
Daniel Stenberg
eee09e79e8 stuff we do 2006-09-12 11:31:34 +00:00
Daniel Stenberg
6df85adf3e hiperfifo.c by Jeff Pohlmeyer 2006-09-12 11:25:00 +00:00
Daniel Stenberg
3ee6036551 pipelining support is added now 2006-09-12 09:39:16 +00:00
Daniel Stenberg
fb65080548 example code by Michael Wallner 2006-09-12 07:54:55 +00:00
Daniel Stenberg
3a5f21b0d1 corrected URL 2006-09-12 06:28:34 +00:00
Daniel Stenberg
13a5598dc3 so it seems SOCKS5 too (still) has problems with connect timeouts 2006-09-12 06:14:10 +00:00
Yang Tse
5a6c89661a Cygwin preprocessor adjustments 2006-09-12 01:17:16 +00:00
Daniel Stenberg
7c5745720a If the current connection doesn't fit to get added to the connection cache,
we certainly MUST NOT kill an active connection... Problem tracked down thanks
to Michael Wallner's excellent test program.
2006-09-11 20:50:58 +00:00
Daniel Stenberg
00ae13f966 - Guilherme Balena Versiani: I noted a strange BUG in Win32 port
(ares_init.c/get_iphlpapi_dns_info() function): when I disable the network
  by hand or disconnect the network cable in Windows 2000 or Windows XP, my
  application gets 127.0.0.1 as the only name server. The problem comes from
  'GetNetworkParams' function, that returns the empty string "" as the only
  name server in that case. Moreover, the Windows implementation of
  inet_addr() returns INADDR_LOOPBACK instead of INADDR_NONE.
2006-09-11 20:25:13 +00:00
Daniel Stenberg
29dc39fce1 - Fixed my breakage from earlier today so that doing curl_easy_cleanup() on a
handle that is part of a multi handle first removes the handle from the
  stack.

- Added CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid to disable SSL
  session-ID re-use on demand since there obviously are broken servers out
  there that misbehave with session-IDs used.
2006-09-11 17:18:18 +00:00
Daniel Stenberg
5c184cfc0d stupid mistake rectified by Jeff Pohlmeyer 2006-09-11 11:25:47 +00:00
Yang Tse
055022a55f Compiler warning fix 2006-09-10 23:45:54 +00:00
Yang Tse
c30e908034 Compiler warning fix 2006-09-10 23:37:42 +00:00
Daniel Stenberg
8d24c0212e curl_multi_socket() fix thanks to Jeff's test code 2006-09-10 22:15:57 +00:00
Daniel Stenberg
8240cea628 Jeff Pohlmeyer presented a *multi_socket()-using program that exposed a
problem with it (SIGSEGV-style). It clearly showed that the existing
  socket-state and state-difference function wasn't good enough so I rewrote
  it and could then re-run Jeff's program without any crash. The previous
  version clearly could miss to tell the application when a handle changed
  from using one socket to using another.

  While I was at it (as I could use this as a means to track this problem
  down), I've now added a 'magic' number to the easy handle struct that is
  inited at curl_easy_init() time and cleared at curl_easy_cleanup() time that
  we can use internally to detect that an easy handle seems to be fine, or at
  least not closed or freed (freeing in debug builds fill the area with 0x13
  bytes but in normal builds we can of course not assume any particular data
  in the freed areas).
2006-09-10 22:15:32 +00:00
Daniel Stenberg
f2a33eb372 Added a useful debug function within #if 0. The function makes it easy to
"dump" a hash table which is useful when tracking problems with data stored
in one of our hashes.
2006-09-10 22:12:24 +00:00
Gisle Vanem
e134a40208 Added select_test() function to allow selecting on no sockets on
Winsock.
2006-09-10 19:01:04 +00:00
Gisle Vanem
690888cfc1 SIGALARM -> SIGALRM. 2006-09-09 19:13:13 +00:00
Gisle Vanem
fb8d9b6645 #ifdef around alarmfunc() to supress warning. 2006-09-09 19:11:54 +00:00
Gisle Vanem
f7ddb39ee1 iconv-data needs to be fully reallocated (to prevent a double-free). 2006-09-09 18:23:29 +00:00
Gisle Vanem
145084b699 Print usage in case 'arg2 == NULL'. 2006-09-09 16:55:21 +00:00
Gisle Vanem
f1ba12607a Duplicate iconv-data too in curl_easy_duphandle(). 2006-09-09 16:36:05 +00:00
Yang Tse
bb87b65f08 Compiler warning fix 2006-09-09 13:24:42 +00:00
Daniel Stenberg
b0f6e7cee4 Michele Bini fixed how the hostname is put in NTLM packages. As servers
don't expect fully qualified names we need to cut them off at the first dot.
2006-09-09 11:45:27 +00:00
Daniel Stenberg
ed72d4e104 tab => space 2006-09-09 11:45:05 +00:00
Daniel Stenberg
8ec1bfe897 Peter Sylvester cleaned up and fixed the getsockname() uses in ftp.c. Some
of them can be completetly removed though...
2006-09-08 22:17:39 +00:00
Gisle Vanem
1dec17562f signal() returns 'void (*)(int)'. 2006-09-08 13:06:41 +00:00
Daniel Stenberg
9cc3795f1a Mention that CURLOPT_MAX_RECV/SEND* were added in 7.15.5 2006-09-08 12:46:41 +00:00
Gisle Vanem
be1306a6c2 Update comment reflecting structure change. 2006-09-08 12:17:58 +00:00
Daniel Stenberg
e9160a31e0 removed the comment that isn't valid for this file, just a copy'n paste error 2006-09-08 12:03:55 +00:00
Gisle Vanem
0a670c578f Compilation fix; 'reqdata' is not a pointer. 'path' is part of SessionHandle. 2006-09-08 12:03:39 +00:00
Daniel Stenberg
e3c15fc4b9 test 530 is the first ever HTTP pipelining test for libcurl 2006-09-08 11:56:56 +00:00
Yang Tse
dc7c915553 Compilation fix 2006-09-08 05:18:07 +00:00
Daniel Stenberg
b7eeb6e67f Major overhaul introducing http pipelining support and shared connection
cache within the multi handle.
2006-09-07 21:49:20 +00:00
Yang Tse
7e4193b538 Fix compiler warning 2006-09-07 01:18:46 +00:00
Daniel Stenberg
a932803eac Invoke memanalyze from the source path and hush up about killing the FTP
server as part of test cases
2006-09-06 10:03:34 +00:00
Daniel Stenberg
52560142bf added some fresh new blurb 2006-09-05 21:17:04 +00:00
Daniel Stenberg
874a4ef8c7 spell fix and added Jari 2006-09-04 22:21:32 +00:00
Daniel Stenberg
0bb3ac7c31 Jari Sundell's minor cleanup, added comments and some extra error-checkings
for easier future error-tracking.
2006-09-04 22:19:13 +00:00
Daniel Stenberg
1e9f5845ab I fell over a new libtool that starts with a newline so we need to fetch
the two first lines to get the version string. The good news is that older
libtools have an empty line after the first so I think this works fine all
over...
2006-09-04 08:53:28 +00:00
Daniel Stenberg
c41dfc2501 oops, we're on the .6 track now 2006-09-04 08:43:44 +00:00
Daniel Stenberg
30ac7eced1 proper credit 2006-09-04 06:17:55 +00:00
Daniel Stenberg
466d093a92 - "Dortik" (http://curl.haxx.se/bug/view.cgi?id=1551412) provided a patch that
while not fixing things very nicely, it does make the SOCKS5 proxy
  connection slightly better as it now acknowledges the timeout for connection
  and it no longer segfaults in the case when SOCKS requires authentication
  and you did not specify username:password.
2006-09-03 22:52:42 +00:00
Daniel Stenberg
1e9be353c2 Mohun Biswas' improvements and clarifications about the options and how to use
them.
2006-09-03 22:12:57 +00:00
Gisle Vanem
4f4277d9c7 Simplified #ifdef on WIN32; the statement
" !defined(__GNUC__) || defined(__MINGW32__)" implies
CygWin.
2006-09-03 13:52:07 +00:00
Gisle Vanem
6728bda5c5 Watcom lacks <sys/time.h>. 2006-09-03 13:45:42 +00:00
Daniel Stenberg
dc9f154823 added missing test 2006-08-31 22:18:08 +00:00
Daniel Stenberg
d7168a82e2 Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch
name resolves. It could get stuck in the wrong state.
2006-08-31 12:53:39 +00:00
Gisle Vanem
c9c8ee3796 Added HAVE_SYS_TIME_H for djgpp and HighC. 2006-08-30 16:18:03 +00:00
Gisle Vanem
c7aae10300 Removed "#ifndef__WATCOMC__". Use "#ifdef HAVE_SYS_TIME_H" instead. 2006-08-30 16:17:06 +00:00
Gisle Vanem
909941405f Added support for more MS-DOS compilers. 2006-08-30 12:10:30 +00:00
Gisle Vanem
4031eb1d91 Avoid Metaware's High-C warning "'=' encountered where '==' may have been intended." 2006-08-29 21:11:55 +00:00
Gisle Vanem
59cf6fd4f0 Watcom lacks <sys/time.h>. 2006-08-29 18:45:55 +00:00
Gisle Vanem
6de9732a88 Added support for Watcom/DOS. 2006-08-29 18:40:36 +00:00
Gisle Vanem
1f7f500922 Updated dependency section. 2006-08-29 18:17:43 +00:00
Gisle Vanem
4b1462ec65 Don't include zlib headers in dependency output. 2006-08-29 18:13:54 +00:00
Gisle Vanem
6ed47f0aad Renamed config.dj -> config.dos. 2006-08-29 16:40:47 +00:00
Gisle Vanem
2d8c7ba9fc Use config.dos instead. Updated generated dependencies. 2006-08-29 16:35:11 +00:00
Gisle Vanem
3b342d18bc Removed. New file is config.dos. 2006-08-29 16:34:40 +00:00
Gisle Vanem
f24ad3800c Renamed config.dj -> config.dos. Added #ifdef-section for djgpp. 2006-08-29 16:33:41 +00:00
Gisle Vanem
e2ff369eba BUFSIZE defined in Metaware's <stdio.h>. Undefine to avoid warning. 2006-08-29 16:27:13 +00:00
Gisle Vanem
9691a78f6b Support other MS-DOS compilers (MSDOS is a djgpp built-in define). 2006-08-29 16:26:41 +00:00
Gisle Vanem
7ff6b6fafd Metaware's High-C has an ISO cpp. 2006-08-29 16:16:13 +00:00
Daniel Stenberg
7c621cfbdf Brad Spencer did
o made ares_version.h use extern "C" for c++ compilers
 o fixed compiler warnings in ares_getnameinfo.c
 o fixed a buffer position init for TCP reads
2006-08-29 15:17:47 +00:00
Daniel Stenberg
5acadc9cd7 David McCreedy added CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA to
allow applications to set their own socket options.
2006-08-29 14:39:33 +00:00
Daniel Stenberg
2ff609dd43 Armel Asselin reported that the 'running_handles' counter wasn't updated
properly if you removed a "live" handle from a multi handle with
curl_multi_remove_handle().
2006-08-25 13:53:20 +00:00
Daniel Stenberg
da48a6ba87 clarify the string syntax support in the CURLOPT_PROXY section 2006-08-23 21:49:44 +00:00
Dan Fandrich
cd6c58216a Use /usr/bin/env to invoke perl like the other test scripts. 2006-08-23 21:20:00 +00:00
Daniel Stenberg
bdbd0cf27a David McCreedy fixed a remaining mistake from the August 19 TYPE change. 2006-08-22 21:23:25 +00:00
Daniel Stenberg
d792937686 Peter Sylvester pointed out a flaw in the AllowServerConnect() in the FTP
code when doing pure ipv6 EPRT connections.
2006-08-22 21:21:01 +00:00
Daniel Stenberg
bac66ec26b as Jeff Pohlmeyer pointed out, first get the multi handle _then_ use it 2006-08-22 06:29:21 +00:00
Dan Fandrich
77516822f6 Workaround for Cray UNICOS 9.0 to fix ftp. 2006-08-21 22:28:19 +00:00
Daniel Stenberg
37d8c67530 clarify for what protocols the changes are 2006-08-21 06:39:52 +00:00
Daniel Stenberg
cfdcae4bc7 Based on a patch by Armel Asselin, the FTP code no longer re-issues the TYPE
command on subsequent requests on a re-used connection unless it has to.
2006-08-19 21:18:36 +00:00
Daniel Stenberg
74a6921bc4 Armel Asselin fixed a crash in the FTP code when using SINGLECWD mode and
files in the root directory.
2006-08-18 23:17:33 +00:00
Daniel Stenberg
490cccba3c Andrew Biggs pointed out a "Expect: 100-continue" flaw where libcurl didn't
send the whole request at once, even though the Expect: header was disabled
by the application. An effect of this change is also that small (< 1024
bytes) POSTs are now always sent without Expect: header since we deem it
more costly to bother about that than the risk that we send the data in
vain.
2006-08-18 22:54:57 +00:00
Dan Fandrich
839441e236 Minor portability fixes to get things running on UNICOS 9.0 on a Cray Y-MP 2006-08-16 18:48:27 +00:00
Daniel Stenberg
ba9ea943e2 related info 2006-08-16 17:56:49 +00:00
Gisle Vanem
455087faae Use gnutls_strerror() for clearer error message. 2006-08-16 17:05:54 +00:00
Gisle Vanem
31def9e217 Use '_LIBICONV_VERSION' instead of variable '_libiconv_version'
to support older iconv versions.
2006-08-15 17:02:24 +00:00
Yang Tse
ee3514ccdc Replace exit() with return() in main() 2006-08-14 17:00:08 +00:00
Daniel Stenberg
cf606d7da0 add missing man page 2006-08-14 07:21:33 +00:00
Dan Fandrich
eb26a581f9 Use __minix to detect Minix, which works on both ACK and GCC. 2006-08-11 18:11:42 +00:00
Daniel Stenberg
b04cbebf86 option name spell fix 2006-08-09 20:54:17 +00:00
Dan Fandrich
4272af801f Only define the string prototypes in ANSI mode to reduce interference on
systems that prototype them slightly differently.
2006-08-09 16:36:17 +00:00
Dan Fandrich
0b633027cb Added eCos and Minix sections. 2006-08-09 16:10:20 +00:00
Gunter Knauf
93943ef949 added build info output. 2006-08-09 14:04:51 +00:00
Gunter Knauf
b184b87714 fixed some web links. 2006-08-09 13:59:39 +00:00
Gunter Knauf
a11473f85d fixed some web links. 2006-08-08 23:37:11 +00:00
Daniel Stenberg
1eedad27a2 Armel Asselin made the CURLOPT_PREQUOTE option work fine even when
CURLOPT_NOBODY is set true. PREQUOTE is then run roughly at the same place
in the command sequence as it would have run if there would've been a
transfer.
2006-08-08 22:56:46 +00:00
Gunter Knauf
ac02d379ba moved ugly NetWare hack to hostip.h so that hostip.c uses it too. 2006-08-08 22:37:53 +00:00
Daniel Stenberg
a4ebf5b507 Fixed a flaw in the "Expect: 100-continue" treatment. If you did two POSTs
on a persistent connection and allowed the first to use that header, you
could not disable it for the second request.
2006-08-08 21:12:49 +00:00
Daniel Stenberg
c410769588 make REALLY sure src/config.h.in is a copy of lib/config.h.in 2006-08-08 21:11:31 +00:00
Dan Fandrich
997a987943 Minix 3 doesn't have MSG_PEEK 2006-08-08 18:47:14 +00:00
Daniel Stenberg
6201dc083a better updating of the single timeout 2006-08-08 13:39:40 +00:00
Yang Tse
b33f47804d Allow again proper compilation outside of the source tree 2006-08-07 18:06:37 +00:00
Daniel Stenberg
7ba5e098a3 Jeff Pohlmeyer pointed out this stupid variable type error 2006-08-07 16:54:50 +00:00
Daniel Stenberg
824b78021c start working towards 7.15.6 2006-08-07 06:48:01 +00:00
Daniel Stenberg
31657c85e5 added contributors to 7.15.5 2006-08-07 06:46:05 +00:00
Daniel Stenberg
7010e5ea84 release time for 7.15.5 2006-08-07 06:32:35 +00:00
Yang Tse
2cba6b246d Check for network libraries the _same_ way it is done in cURL. 2006-08-06 10:58:47 +00:00
Yang Tse
52cc2a7a0c Check for network libraries the same way it is done in cURL. 2006-08-05 22:02:47 +00:00
Dan Fandrich
c012e2b408 Initial stab at making libcurl compile under Minix 3. 2006-08-04 18:53:47 +00:00
Yang Tse
646a6b604f Minor compatibility fix 2006-08-04 17:35:05 +00:00
Gisle Vanem
cca00a6378 Added version info for iconv. 2006-08-04 16:10:48 +00:00
Gisle Vanem
10b7fc7e51 Added 'curl_version_info_data::iconv_ver_num' for iconv version. 2006-08-04 16:08:41 +00:00
Gisle Vanem
43e4544d51 Fixed typo. 2006-08-04 16:05:09 +00:00
Gisle Vanem
21aa8f0b45 Added dependency for splay.obj. 2006-08-04 15:57:07 +00:00
Gisle Vanem
b708fa51ad Fixed comment. 2006-08-04 15:41:56 +00:00
Daniel Stenberg
8709f6c4b3 oops, the previous commit was incomplete as we made an unconditional call
to multi_runsingle() without it being really necessary or good
2006-08-04 14:39:19 +00:00
Daniel Stenberg
2ac560e58b even when we get a single connection to deal with, we must still check for
timeout'ed connections and possibly deal with them too
2006-08-04 13:06:36 +00:00
Yang Tse
8f8ba9486d Fix compiler warning 2006-08-04 02:49:04 +00:00
Yang Tse
f55924b3e0 Avoid redundant check. configure script takes care of not defining
HAVE_WINDOWS_H, HAVE_WINSOCK_H, HAVE_WINSOCK2_H, neither
HAVE_WS2TCPIP_H when __CYGWIN__ is defined.
2006-08-04 01:13:24 +00:00
Yang Tse
7240acdebc Being unable to link or find out recv() or send() args types is a fatal error. 2006-08-04 00:39:34 +00:00
Daniel Stenberg
b9b06b00bf This is now a working example using libevent and curl_multi_socket() for really
fast treatment of many simultaneous transfers
2006-08-03 22:57:04 +00:00
Daniel Stenberg
51f258d103 adding CURLM_CALL_MULTI_SOCKET that's just the same as CURLM_CALL_MULTI_PERFORM 2006-08-03 21:31:23 +00:00
Yang Tse
4c75f1c7b7 MinGW/MSYS needs lib ws2_32 for proper operation of configure script. 2006-08-03 21:19:40 +00:00
Daniel Stenberg
ed7bff1fec Ravi Pratap fixed ares_getsock() to actually return the proper bitmap and
not always zero!
2006-08-03 18:20:45 +00:00
Daniel Stenberg
01a79be2c9 removed running_handles argument from multi_runsingle() since it wasn't really
used anymore since multi->num_alive was introduced
2006-08-03 11:47:42 +00:00
Yang Tse
d211fcd34f Silence compiler warning 'unused parameter running_handles' in function multi_runsingle(). This is done here returning multi->num_alive in the running_handles parameter even when functions that call multi_runsingle() at this moment overwrite the returned value with the one that is valid when those functions curl_multi_perform() and multi_socket() have removed expired timers from the splay. Most probably, parameter 'running_handles' in function multi_runsingle() should be just removed. 2006-08-03 11:41:49 +00:00
Daniel Stenberg
159834171e keep count of the number of "alive" handles in a struct member, as otherwise
*multi_socket*() can't return the proper number
2006-08-02 22:29:29 +00:00
Daniel Stenberg
8a38c72c48 Mark Lentczner fixed how libcurl was not properly doing chunked encoding
if the header "Transfer-Encoding: chunked" was set by the application.
http://curl.haxx.se/bug/view.cgi?id=1531838
2006-08-02 18:18:47 +00:00
Daniel Stenberg
fbcdc192d5 a CURLOPT_PROGRESSFUNCTION clarification 2006-08-02 09:33:32 +00:00
Daniel Stenberg
ee642859ef Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
an unknown error number on glibc systems.
http://curl.haxx.se/bug/view.cgi?id=1532289
2006-08-01 09:39:01 +00:00
Daniel Stenberg
9f579f12fc spell-fixed a comment 2006-08-01 09:38:35 +00:00
Daniel Stenberg
825a526789 updated docs with the new parameter 2006-08-01 08:57:32 +00:00
Yang Tse
ae8a01ead6 Avoid the risk of a false positive detection of MSG_NOSIGNAL when cross compiling a Windows target. 2006-07-31 18:41:29 +00:00
Yang Tse
9dde0b54a3 Silence warning: empty body in an if-statement 2006-07-31 17:46:28 +00:00
Yang Tse
f1343b2f55 Force compilation failure in case macros sread() or swrite() are not defined. 2006-07-31 17:12:24 +00:00
Yang Tse
962b7985e6 Provide definitions needed for macros sread() and swrite() in config file. 2006-07-31 16:58:10 +00:00
Daniel Stenberg
5a1c64d316 adapt to the new protos 2006-07-30 22:47:53 +00:00
Daniel Stenberg
01b2cf82ec curl_multi_socket() and curl_multi_socket_all() got modified prototypes: they
both now provide the number of running handles back to the calling function.
2006-07-30 22:44:07 +00:00
Yang Tse
c033c4c71c Winsock and Cygwin need address family specification before bind(), this should be harmless for others. 2006-07-29 16:17:36 +00:00
Yang Tse
aa791ee5cf Fix compiler warnings. 2006-07-29 09:15:03 +00:00
Yang Tse
305671e2ab include setup_once.h dependency and adjust to 80 char lines. 2006-07-29 08:39:20 +00:00
Daniel Stenberg
d654736834 new D binding 2006-07-28 22:04:44 +00:00
Yang Tse
2c81bfead5 Replace send() and recv() with swrite() and sread() macros. 2006-07-28 18:01:23 +00:00
Yang Tse
77b3bc239d First step trying to avoid the multiple header inclusion and recursion nightmare.
Reintroduce checking for HAVE_MSG_NOSIGNAL in configure script, so that we don't depend on header inclusion order for a valid check.
2006-07-28 14:19:02 +00:00
Daniel Stenberg
c10d15aa0f test case 277 - HTTP RFC1867-type formposting with custom Content-Type 2006-07-27 22:44:56 +00:00
Daniel Stenberg
a88deadd6f Yves Lejeune fixed so that replacing Content-Type: when doing multipart
formposts work exactly the way you want it (and the way you'd assume it
works)
2006-07-27 22:35:09 +00:00
Daniel Stenberg
e6ea8f1199 put back the correct logic, as the change dated July 11th 2006 added bad
behaviour and a socket leak
2006-07-27 22:28:53 +00:00
Daniel Stenberg
4d4151f6c1 David McCreedy added --ftp-ssl-reqd which makes curl *require* SSL for both
control and data connection, as the existing --ftp-ssl option only requests
it.
2006-07-26 23:20:47 +00:00
Daniel Stenberg
518becfe2e curl_multi_assign() and CURLMOPT_SOCKETFUNCTION proto change 2006-07-26 22:25:00 +00:00
Daniel Stenberg
6f6b93da02 [Hiper-related work] Added a function called curl_multi_assign() that will
set a private pointer added to the internal libcurl hash table for the
particular socket passed in to this function.
2006-07-26 22:19:42 +00:00
Yang Tse
45b1843dc9 Provide multiple header inclusion prevention definition __ARES_PRIVATE_H 2006-07-26 10:54:08 +00:00
Yang Tse
cb86a302d8 Change multiple header inclusion prevention definition to __ARES_BITNCMP_H 2006-07-26 10:47:11 +00:00
Yang Tse
d15ed439ae Change multiple header inclusion prevention definition to __ARES_INET_NET_PTON_H 2006-07-26 10:43:15 +00:00
Yang Tse
b765e1f3b7 Sync header with source code 2006-07-26 10:33:17 +00:00
Daniel Stenberg
2527b53019 Dan Nelson added the CURLOPT_FTP_ALTERNATIVE_TO_USER libcurl option and curl
tool option named --ftp-alternative-to-user. It provides a mean to send a
particular command if the normal USER/PASS approach fails.
2006-07-25 22:45:21 +00:00
Daniel Stenberg
78a47826b2 Michael Jerris added magic that builds lib/curllib.vcproj automatically (for
newer MSVC versions)
2006-07-25 22:06:42 +00:00
Yang Tse
ecfaa4f869 Fix warning: no newline at end of file 2006-07-25 18:48:12 +00:00
Daniel Stenberg
f36adcdb73 Georg Horn made the transfer timeout error message include more details 2006-07-25 18:38:51 +00:00
Yang Tse
13616f8f96 Simplify check for NEED_MALLOC_H, and make more explicit that NEED_MALLOC_H shall be defined if <malloc.h> header file must be included even when including <stdlib.h>. 2006-07-25 13:49:49 +00:00
Gisle Vanem
ab486d1e27 Silence iconv() warnings. 2006-07-25 11:35:35 +00:00
Gisle Vanem
9111909c1d Added CURL_VERSION_CONV feature string. 2006-07-25 11:08:42 +00:00
Gisle Vanem
4a1a1a75fb Added note for CURLRES_ARES and CURLRES_IPV6. 2006-07-25 10:49:12 +00:00
Gisle Vanem
e4d6ade4b3 Moved functions common to IPv4 and C-ares to hostip.c;
Curl_freeaddrinfo() and Curl_ip2addr().
2006-07-25 10:31:31 +00:00
Gisle Vanem
c82e880f5b Remove comment about c-ares not supporting IPv6. 2006-07-25 10:23:15 +00:00
Gisle Vanem
f2aa3b21e0 Use the proper Curl_freeaddrinfo() for CURLRES_ARES. 2006-07-24 15:58:33 +00:00
Gisle Vanem
385db0e97d Fix typo. 2006-07-24 15:56:40 +00:00
Gisle Vanem
4e58da5222 Ares needs CURLRES_ADDRINFO_COPY. Curl_hostent_relocate() is gone. 2006-07-24 15:48:48 +00:00
Daniel Stenberg
1c6ebb0782 added splay.o 2006-07-23 12:01:06 +00:00
Gisle Vanem
7e8b84c3e7 Added getopt() processing. 2006-07-23 10:10:52 +00:00
Gisle Vanem
132067b081 Added getopt() processing of [-t {a|aaaa}]. 2006-07-22 17:31:00 +00:00
Gisle Vanem
8c36fc8f31 Added CVS id. 2006-07-22 15:38:35 +00:00
Gisle Vanem
93858efe73 2nd try adding CVS id. 2006-07-22 15:37:10 +00:00
Gisle Vanem
ba7f27a3f6 Added CVS id. 2006-07-22 15:21:13 +00:00
Gisle Vanem
2f70fb7015 Use ares_free_string() to avoid detecting leaks. 2006-07-22 15:12:34 +00:00
Gisle Vanem
655ec6bf8e If CURLDEBUG defined, call curl_memdebug() if $CARES_MEMDEBUG is set. 2006-07-22 14:51:39 +00:00
Gisle Vanem
c4ad533300 Constify some arguments in Curl_connecthost() and singleipconnect(). 2006-07-21 06:50:39 +00:00
Gisle Vanem
5cdbd0cf4a Constify arguments to Curl_he2ai() and Curl_addrinfo_copy(). 2006-07-21 06:21:46 +00:00
Gisle Vanem
a55c70d4ae Constify 'hostname' and 'service' to various resolver functions. 2006-07-21 05:51:12 +00:00
Gisle Vanem
02938a010d Changes for combination ENABLE_IPV6 and USE_ARES. 2006-07-21 04:22:44 +00:00
Gisle Vanem
e40641bf7c Use calloc() instead. 2006-07-21 04:19:44 +00:00
Daniel Stenberg
27c0b43897 David McCreedy fixed a build error when building libcurl with HTTP disabled,
problem added with the curl_formget() patch.
2006-07-20 20:04:52 +00:00
Gisle Vanem
d46de5ab8b Avoid warning "comparison of unsigned expression < 0 is always false" 2006-07-20 16:37:05 +00:00
Gisle Vanem
73ebb0edde Avoid warning 'port' might be used uninitialized in this function. 2006-07-20 15:54:01 +00:00
Dan Fandrich
684245d6ce Changes to support building for eCos 1.3.1. This has been tested with
file: URLs only.
2006-07-19 22:27:49 +00:00
Yang Tse
d157c29269 Fix compiler warnings 2006-07-19 21:14:02 +00:00
Yang Tse
4d2e81661b Avoid variable declaration shadowing previously declared one 2006-07-19 19:09:56 +00:00
Yang Tse
483a586d55 Avoid variable declaration shadowing previously declared one 2006-07-19 18:46:56 +00:00
Yang Tse
4ac54f8c2c remove variable declaration shadowing previously declared one 2006-07-19 18:32:38 +00:00
Yang Tse
840aacf7dd Remove variable declaration shadowing previously declared one 2006-07-19 18:19:30 +00:00
Yang Tse
ab4256d53a Abort if unable to write pid file, and close socket when aborting. 2006-07-19 15:28:30 +00:00
Yang Tse
46c5e562bf Abort if unable to write pid file. 2006-07-19 15:26:28 +00:00
Yang Tse
42f5a90d09 -Use curl_socket_t instead of int.
-Log errno in message if setsockopt() fails.

-Close listener socket on major errors.
2006-07-17 22:44:40 +00:00
Yang Tse
ef82da93fb "*connected" must be set to FALSE if trynextip() fails. 2006-07-17 19:22:28 +00:00
Daniel Stenberg
06d05b18b2 Jari Sundell did some excellent research and bug tracking, figured out that
we did wrong and patched it: When nodes were removed from the splay tree,
and we didn't properly remove it from the splay tree when an easy handle was
removed from a multi stack and thus we could wrongly leave a node in the
splay tree pointing to (bad) memory.
2006-07-17 18:35:58 +00:00
Yang Tse
431c4bd6e3 tests/libtest/lib506.c version 1.11 is now also logging CURLSHOPT_LOCKFUNC, CURLSHOPT_UNLOCKFUNC and CURLSHOPT_USERDATA, so we now also have to check them here. 2006-07-17 16:47:07 +00:00
Yang Tse
f72c4e82fd Return NULL if argument is NULL. 2006-07-17 15:25:37 +00:00
Yang Tse
9c83a20a27 Fix compiler warning "enumerated type mixed with another type" 2006-07-17 14:52:31 +00:00
Yang Tse
773bec5ae5 Fix compiler warning "enumerated type mixed with another type" 2006-07-17 14:32:19 +00:00
Yang Tse
f3c508f6e8 Update error buffer size used for SSL_strerror() 2006-07-17 05:05:57 +00:00
Yang Tse
2aa4710745 Minor cleanup 2006-07-17 03:38:13 +00:00
Daniel Stenberg
3b0a920fad don't use 'new' in the proto 2006-07-15 18:57:51 +00:00
Daniel Stenberg
daef1cf34d David McCreedy fixed a flaw where the CRLF counter wasn't properly cleared
for FTP ASCII transfers.
2006-07-14 18:58:42 +00:00
Yang Tse
bd8d4637a3 Fix compiler warning 2006-07-14 11:04:19 +00:00
Yang Tse
d2cefc140a Change the ai_addrlen type of struct addrinfo from size_t to socklen_t, per RFC 3493. 2006-07-14 10:30:44 +00:00
Yang Tse
ccfce89423 Null terminate string in buffer before feeding it to strtol() 2006-07-14 06:31:41 +00:00
Yang Tse
700cd5805c Oops, missing "u" 2006-07-13 18:57:34 +00:00
Yang Tse
498aad8587 Change to meaningful var names and take care of a compiler warning on IRIX 6.5.22 MIPSPro C 7.3 64bit 2006-07-13 18:50:51 +00:00
Yang Tse
73f407b7ae Fix compiler warning. 2006-07-13 18:44:24 +00:00
Gisle Vanem
4be7dcba48 Remove unneeded stuff. 2006-07-12 13:57:18 +00:00
Yang Tse
f0694c582e Remove var not used. 2006-07-12 10:41:07 +00:00
Yang Tse
f90f0c98d9 Log a message if not all data is sent. 2006-07-12 09:39:35 +00:00
Yang Tse
95aecc5dbb Fix compiler warning: comparison between signed and unsigned 2006-07-12 09:03:48 +00:00
Yang Tse
f975fd03a1 Read the return value of the swrite() macro and 'print' a message in case of failure. 2006-07-12 07:33:54 +00:00
Yang Tse
8272874704 Place parenthesis surrounding macro parameters so that the use of sread and swrite is more intuitive. 2006-07-12 06:52:40 +00:00
Yang Tse
86f4cead16 sread now returns ssize_t 2006-07-12 06:14:49 +00:00
Yang Tse
88a1a10e6f Pay attention when typecasting an operation 2006-07-12 06:09:53 +00:00
Yang Tse
624e657210 sread now returns ssize_t 2006-07-12 05:54:06 +00:00
Yang Tse
2278e8f1ba DJGPP/WATT32 does not have functions named recv() send() getnameinfo(). 2006-07-12 05:20:05 +00:00
Yang Tse
58176d1484 Use platform's native types for recv() and send() arguments. 2006-07-12 05:19:00 +00:00
Dan Fandrich
10489879f7 Enable --enable-hidden-symbols for SunPro C 2006-07-11 21:35:35 +00:00
Yang Tse
fe22872d14 include <malloc.h> only if HAVE_MALLOC_H and NEED_MALLOC_H are both defined. 2006-07-11 21:34:23 +00:00
Yang Tse
4d95d23d99 Define NEED_MALLOC_H if including <stdlib.h> is not enough for proper compilation and <malloc.h> must also be included. 2006-07-11 20:40:38 +00:00
Dan Fandrich
c6fc5a1a26 Moved strdup replacement from src/main.c into src/strdup.c so it's available
in libcurl as well, if necessary.
2006-07-11 17:02:06 +00:00
Gisle Vanem
012d75442a Added comment and CVS id. 2006-07-11 13:12:57 +00:00
Yang Tse
dcc7900e7c Socket must be set to CURL_SOCKET_BAD after closing it. 2006-07-11 00:23:21 +00:00
Yang Tse
34f5e8ad0e DNS cache must use the multi DNS cache if the easy handle's one is not using anyone in curl_multi_add_handle. 2006-07-10 16:14:36 +00:00
Daniel Stenberg
c2fee9894a the tool is named curl with lowercase c 2006-07-08 21:30:56 +00:00
Daniel Stenberg
abd983e851 just some more blurb 2006-07-08 21:29:45 +00:00
Daniel Stenberg
28611704d9 Ates Goral pointed out that libcurl's cookie parser did case insensitive
string comparisons on the path which is incorrect and provided a patch that
fixes this. I edited test case 8 to include details that test for this.
2006-07-08 18:52:08 +00:00
Daniel Stenberg
305dddeab0 7.15.5 is planned for August 2006 2006-07-08 18:49:41 +00:00
Daniel Stenberg
ee8112b42f mention the shared DNS stuff 2006-07-07 23:08:03 +00:00
Daniel Stenberg
ca319f63ad Ingmar Runge provided a source snippet that caused a crash. The reason for
the crash was that libcurl internally was a bit confused about who owned the
DNS cache at all times so if you created an easy handle that uses a shared
DNS cache and added that to a multi handle it would crash. Now we keep more
careful internal track of exactly what kind of DNS cache each easy handle
uses: None, Private (allocated for and used only by this single handle),
Shared (points to a cache held by a shared object), Global (points to the
global cache) or Multi (points to the cache within the multi handle that is
automatically shared between all easy handles that are added with private
caches).
2006-07-07 22:58:06 +00:00
Daniel Stenberg
a09a8164db mention the by-default "sharing" 2006-07-07 22:07:10 +00:00
Daniel Stenberg
e5cf6a20a7 yassl can be used now 2006-07-07 20:48:51 +00:00
Daniel Stenberg
af5e6e7e6d HTTP Pipelining is for GET and HEAD requests only. 2006-07-07 20:45:56 +00:00
Dan Fandrich
70f2b5e877 Fixed building curllib.dsp when running make outside the source tree. 2006-07-07 18:37:14 +00:00
Yang Tse
8ef454dcbe Finally get rid of CURL_CHECK_HEADERS_ONCE since it adds very little value and has portability issues.
Change some shell if...then...fi tests into case...esac tests which demand less resources.
2006-07-07 17:34:40 +00:00
Yang Tse
551a041283 Substitution of the literal '-' is only done if it's the first or last character. 2006-07-07 14:03:17 +00:00
Yang Tse
03288943af Using backslashes and slashes in the strings of the sed 'y' command shall be avoided since its interpretation is not the same across platforms.
Now we use the sed 's' command with a bracket expression.
2006-07-07 12:59:45 +00:00
Gisle Vanem
725f734bae Correct the trace for WinCE. 2006-07-07 07:49:16 +00:00
Gisle Vanem
0f32460656 WinCE uses CreateThread(). Hence error is not in 'errno'. 2006-07-07 07:46:40 +00:00
Gisle Vanem
25180cc850 Removed copying 'stderr' since it doesn't have the desired
effect.
2006-07-07 07:41:47 +00:00
Daniel Stenberg
2a0e41cab9 updated after discussions and thinking 2006-07-07 07:22:05 +00:00
Yang Tse
05edd48ad0 Fix excessive escaping. 2006-07-07 05:39:13 +00:00
Yang Tse
266ab95557 Fix CURL_CHECK_HEADERS_ONCE 2006-07-07 04:42:11 +00:00
Yang Tse
0a4bba565c Fix MinGW/MSYS support in CURL_CHECK_FUNC_RECV and CURL_CHECK_FUNC_SEND. 2006-07-06 15:51:03 +00:00
Gisle Vanem
2ddb9d57aa Undefine symbols before redefining them. 2006-07-06 13:57:26 +00:00
Gisle Vanem
4f012ad703 Undefine correct symbol. 2006-07-06 13:33:56 +00:00
Yang Tse
a1cd180082 Oops ! 2006-07-05 23:16:28 +00:00
Yang Tse
bc2f0c7dcb Prevent definition of HAVE_WINxxx_H symbols and avoid inclusion of Windows headers when compiled with Cygwin in POSIX emulation mode. 2006-07-05 23:10:37 +00:00
Gisle Vanem
c6ae0ebcbf Cludge fix for djgpp 2.03 or older; it doesn't have snprintf() etc.
So avoid using x_was_used().
2006-07-05 14:23:09 +00:00
Gisle Vanem
c6ec576cbb Add types and qualifiers for getnameifo(), send() and recv().
(Yang Tse forgot about djgpp)
2006-07-05 14:15:21 +00:00
Yang Tse
55329b56cb Use a more descriptive var name. 2006-07-04 17:19:15 +00:00
Yang Tse
7e43d06b60 Get qualifier of arg 2 for send() apart into SEND_QUAL_ARG2. 2006-07-04 16:54:10 +00:00
Yang Tse
89f54f3739 Platforms that don't have/run configure need default values in their config files for:
HAVE_GETNAMEINFO, GETNAMEINFO_QUAL_ARG1, GETNAMEINFO_TYPE_ARG1, GETNAMEINFO_TYPE_ARG2, GETNAMEINFO_TYPE_ARG46, GETNAMEINFO_TYPE_ARG7

HAVE_RECV, RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3, RECV_TYPE_ARG4, RECV_TYPE_RETV

HAVE_SEND, SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3, SEND_TYPE_ARG4, SEND_TYPE_RETV
2006-07-04 16:10:13 +00:00
Yang Tse
01fa02d0b5 Find out return types and argument types for functions recv() and send() at configuration stage. 2006-07-04 13:03:32 +00:00
Daniel Stenberg
8bed45340a Toshiyuki Maezawa fixed a problem where you couldn't override the
Proxy-Connection: header when using a proxy and not doing CONNECT.
2006-07-04 12:01:59 +00:00
Yang Tse
55138753c6 Test HAVE_GETNAMEINFO definition before using GETNAMEINFO_XXX definitions. 2006-07-04 02:27:11 +00:00
Yang Tse
43369b8096 Fix compiler warning. 2006-07-03 18:38:03 +00:00
Yang Tse
bec1977137 Use CURL_CHECK_FUNC_GETNAMEINFO results in CURL_CHECK_NI_WITHSCOPEID 2006-07-03 15:32:12 +00:00
Yang Tse
4c08eb4b11 Make CURL_CHECK_NI_WITHSCOPEID actually try to compile NI_WITHSCOPEID when cross-compiling. 2006-07-02 23:09:46 +00:00
Yang Tse
0163730437 Fix shell globbing in CURL_CHECK_FUNC_GETNAMEINFO 2006-07-02 01:21:54 +00:00
Yang Tse
39745ac38e Fix shell globbing in CURL_CHECK_FUNC_GETNAMEINFO 2006-07-02 01:17:37 +00:00
Yang Tse
cacf8bbb58 Fix shell globbing in CURL_CHECK_FUNC_GETNAMEINFO 2006-07-02 01:17:37 +00:00
Yang Tse
a1c6d5861a Get some debug info 2006-07-01 17:07:12 +00:00
Yang Tse
589c4596d8 Get some debug info 2006-07-01 15:01:48 +00:00
Yang Tse
7a6d7fca42 Avoid shell globbing 2006-07-01 12:53:24 +00:00
Yang Tse
5305c9f1e8 Get qualifier of arg 1 for getnameinfo apart. Take 3. 2006-07-01 11:21:38 +00:00
Yang Tse
b1022ea4c1 Get qualifier of arg 1 for getnameinfo apart. 2006-07-01 03:07:07 +00:00
Yang Tse
380a74a4ed Get qualifier of arg 1 for getnameinfo apart. Take 2. 2006-07-01 02:53:18 +00:00
Yang Tse
ff709848a6 Get qualifier of arg 1 for getnameinfo apart. 2006-06-30 19:20:16 +00:00
Daniel Stenberg
279dd6d878 typecast the number passed to CURLOPT_INFILESIZE_LARGE as a curl_off_t 2006-06-30 10:26:26 +00:00
Yang Tse
2e0ad842d0 Remove experimental notice from CURL_CHECK_FUNC_GETNAMEINFO 2006-06-30 00:22:38 +00:00
Daniel Stenberg
a3949c7786 with a very recent yassl, we now can display 'yassl' when the OpenSSL API is
in fact provided by yassl instead
2006-06-29 07:35:02 +00:00
Daniel Stenberg
2320606262 changed wording on the curl_multi_fdset() problem and moved the -K change from
bugfixes
2006-06-28 11:31:50 +00:00
Yang Tse
b01286d280 fix better minor compiler warning 2006-06-28 05:22:47 +00:00
Yang Tse
64f72c22b9 fix minor compiler warning 2006-06-28 04:17:04 +00:00
Yang Tse
856114d05c fix minor compiler warning 2006-06-28 02:45:27 +00:00
Daniel Stenberg
98b8c4b0c9 include config-win32.h in release archives 2006-06-26 08:56:04 +00:00
Daniel Stenberg
01f5f0be5a changed wording slightly, and added standard boiler-plate header 2006-06-26 06:43:45 +00:00
Daniel Stenberg
eb6d404753 Wallner's update 2006-06-24 23:11:36 +00:00
Daniel Stenberg
c508ab1aef Added README.pipelining but also extracted the "docs" files to a separate list
to get a better overview
2006-06-24 21:54:22 +00:00
Daniel Stenberg
0793dc922c thoughts and ideas as posted to the list the other day 2006-06-24 21:51:28 +00:00
Daniel Stenberg
00a41ab296 corrected introduction version number 2006-06-24 21:49:40 +00:00
Daniel Stenberg
37f4877e56 Michael Wallner added curl_formget(), which allows an application to extract
(serialise) a previously built formpost (as with curl_formadd()).
2006-06-24 21:46:41 +00:00
Daniel Stenberg
a6fc45c02f 1.3.1 2006-06-24 18:29:18 +00:00
Daniel Stenberg
25411e01db Provide a libcurl API for setting mutex callbacks in the underlying SSL
library, so that the same application code can use mutex-locking
independently of OpenSSL or GnutTLS being used.
2006-06-24 15:21:49 +00:00
Daniel Stenberg
a8ac6f1dc1 Arve Knudsen found a flaw in curl_multi_fdset() for systems where
curl_socket_t is unsigned (like Windows) that could cause it to wrongly
return a max fd of -1.
2006-06-23 22:07:06 +00:00
Daniel Stenberg
dfe1884c25 Peter Silva introduced CURLOPT_MAX_SEND_SPEED_LARGE and
CURLOPT_MAX_RECV_SPEED_LARGE that limit tha maximum rate libcurl is allowed
to send or receive data. This kind of adds the the command line tool's
option --limit-rate to the library.

The rate limiting logic in the curl app is now removed and is instead
provided by libcurl itself. Transfer rate limiting will now also work for -d
and -F, which it didn't before.
2006-06-22 21:36:53 +00:00
Daniel Stenberg
3e5dcc8bcd minor language edits bug reports 1510080 1510098 2006-06-21 17:34:29 +00:00
Daniel Stenberg
ff81900784 the D binding link is dead but we know of no new one! 2006-06-20 07:27:10 +00:00
Daniel Stenberg
4cb30a3057 bad syntax 2006-06-20 07:03:29 +00:00
Daniel Stenberg
72f80b88f7 make -K on a bad file now displays a warning 2006-06-19 21:39:57 +00:00
William Ahern
3008d8133c Remove "big endian" DNS section and RR data integer parser macros from
ares_dns.h, which break c-ares on my Sparc64. Bit-wise operations in C
operate on logical values. And in any event the octets are already in
big-endian (aka network) byte order so they're being reversed (thus the
source of the breakage).
2006-06-19 06:41:55 +00:00
William Ahern
4524618bf2 Handle EAGAIN/EWOULDBLOCK readiness errors, which can occur for both TCP and
UDP even when a poll(2) or select(2) suggest otherwise.
2006-06-19 01:18:05 +00:00
Daniel Stenberg
55d22ba10c when mentioning the default config file, point back to the actual description
of how to write such a file
2006-06-16 07:27:06 +00:00
Daniel Stenberg
76cf020750 select_res is not a socket, it should be a plain int 2006-06-15 21:30:32 +00:00
Dan Fandrich
f13ac35edf Check whether gcc supports --enable-hidden-symbols before allowing it. 2006-06-13 17:43:00 +00:00
Dan Fandrich
59582a9d9d Implemented --enable-hidden-symbols configure option to enable
-fvisibility=hidden on gcc >= 4.0.  This reduces the size of the libcurl
binary and speeds up dynamic linking by hiding all the internal symbols from
the symbol table.
2006-06-12 20:33:04 +00:00
Daniel Stenberg
6246bbc656 oops 2006-06-12 09:32:39 +00:00
Daniel Stenberg
1b028b419b added contributors from the 7.15.4 release 2006-06-12 09:30:14 +00:00
Daniel Stenberg
4c6c768422 starting the journey towards the next release 2006-06-12 07:24:14 +00:00
Daniel Stenberg
1d3969b215 7.15.4 coming up 2006-06-12 06:53:10 +00:00
Daniel Stenberg
94116d9ebc Nah, we refer people to the generic site that lists the mirrors instead of
trying to maintain an accurate list in this file (too).
2006-06-12 06:51:15 +00:00
Gisle Vanem
cc5174a89a Fix "'x' might be used uninitialized in this function" warnings. 2006-06-10 17:35:28 +00:00
Daniel Stenberg
31552100c5 sync with existing list of up-to-date mirrors 2006-06-09 21:08:02 +00:00
Daniel Stenberg
8df5dcb193 proper use of newlines 2006-06-09 12:07:34 +00:00
Daniel Stenberg
7929600798 stricter type use to please compilers 2006-06-09 08:25:16 +00:00
Daniel Stenberg
a05ea124b9 oops, serious breakage in the fdset() function 2006-06-09 07:08:34 +00:00
Daniel Stenberg
6a03ab3ad4 lib525.c does a FTP upload with PORT using multi interface 2006-06-08 22:43:21 +00:00
Daniel Stenberg
6a151c1312 corrected the CURLINFO_TOTAL_TIME description 2006-06-08 11:06:26 +00:00
Daniel Stenberg
990e56fb13 Brian Dessent's fixes for cygwin builds 2006-06-08 06:12:30 +00:00
Daniel Stenberg
2bd3033f68 NTLM2 session response support 2006-06-07 14:14:04 +00:00
Daniel Stenberg
fe105a07e3 two new mirrors and a recount of them 2006-05-31 05:49:37 +00:00
Daniel Stenberg
a5782defd3 Added config-tpf.h to the release package 2006-05-31 05:17:27 +00:00
Daniel Stenberg
bcccd2fe74 Removed a few fixed issues and a few issues currently in progress in the Hiper
project. Also added a few obvious ones.
2006-05-30 08:45:59 +00:00
Daniel Stenberg
404e23734b correct explicit/implicit terms for FTPS 2006-05-28 11:28:40 +00:00
Daniel Stenberg
973d63f4f2 one modified proto and one removed proto 2006-05-27 22:26:41 +00:00
Daniel Stenberg
405d98ee63 adapted to the new Curl_splayremovebyaddr() proto 2006-05-27 22:26:16 +00:00
Daniel Stenberg
f81724969d Ifdef'ed out unused function, added lots of comments and renamed a few
variables, simplified the splayprint function, modified
Curl_splayremovebyaddr() to return error code. All in an effort to track down
the reported splay problem, but I've failed to do that so far...
2006-05-27 22:25:55 +00:00
Daniel Stenberg
edb5444fa3 reverted the previous .libs check for libs, but instead make mingw32 builds
more similar to other configure builds (== use .la for libext and no binext)
2006-05-27 11:36:05 +00:00
Daniel Stenberg
e877cb7bd7 scar Morales Viv updated the libcurl.framework.make file. 2006-05-26 22:23:54 +00:00
Daniel Stenberg
482b3ba702 long/int cleanup to silence picky compiler warnings 2006-05-26 11:26:42 +00:00
Daniel Stenberg
752acedc0b Olaf Stben fixed a bug that caused Digest authentication with md5-sess to
fail. When using the md5-sess, the result was not Md5 encoded and Base64
transformed.
2006-05-25 23:04:20 +00:00
Daniel Stenberg
fb88723afc minor RFC updates, Dan Fandrich brought my attention to them 2006-05-25 11:15:25 +00:00
Daniel Stenberg
3718737091 better check for libs created in the .libs directory since libtool does this
kind of magic
2006-05-25 11:04:08 +00:00
Daniel Stenberg
3d3f056f7e added some missing items 2006-05-24 23:16:22 +00:00
Daniel Stenberg
c60621c367 Copied the NO_UNDEFINED magic from libcurl to make this build fine again with
libtool cross-compiled on linux with mingw32
2006-05-24 23:02:51 +00:00
Daniel Stenberg
606562aa7e Michael Wallner provided a patch that allows "SESS" to be set with
CURLOPT_COOKIELIST, which then makes all session cookies get cleared. (slightly
edited by me, and the re-indent in cookie.c was also done by me)
2006-05-24 22:46:38 +00:00
Daniel Stenberg
f689d06ca9 make sure we pass a time_t * to localtime(), and the timeval struct members
are not always time_t ones
2006-05-24 21:39:52 +00:00
Daniel Stenberg
7cfd7f3fb1 minor fix to make Curl_splayremove() return a NULL as "removed" in case
nothing matched fine
2006-05-24 16:11:31 +00:00
Daniel Stenberg
4a8dfb3461 based on Tor Arntsen's fix, this should correct test case 271 to again run
fine
2006-05-24 15:22:03 +00:00
Daniel Stenberg
3752b3aead Fixed a shell script syntax error that all of a sudden started causing this
script to fail on debian unstable (some specific bash version perhaps?)
2006-05-23 22:55:46 +00:00
Daniel Stenberg
b81d41df22 David McCreedy's update 2006-05-23 21:19:36 +00:00
Daniel Stenberg
dadf3f06ee updated with more recent facts 2006-05-15 08:09:07 +00:00
Daniel Stenberg
8ed0d5675f The SOCKS connection codes don't properly acknowledge (connect) timeouts. 2006-05-14 22:49:23 +00:00
Daniel Stenberg
d5e9041344 The new ftpuploadresume.c example by Philip Bock 2006-05-11 22:24:44 +00:00
Daniel Stenberg
d99c20f628 Ok, when checking for old-style SSLeay headers we cannot just use
AC_CHECK_HEADERS() and the action-if-found since that action is run even if
just one of the six headers is found and I just now fell over a case with
a duplicate file name (a krb4 implementation with an err.h file).

I converted the check to manually make sure three of the headers are present
before considering them fine.
2006-05-11 21:37:58 +00:00
Daniel Stenberg
973ed24dc8 1 - allow much longer time for the test FTP server to startup and get verified
2 - store the time it took to verify it and allow that time to be used as
  %FTPTIME[23] in command lines to allow us to adjust better to slow hosts
  since test 190 failed on my slow solaris machine just because it hadn't
  gotten time to run all the way the test assumed all machines would reach
  before the time-out elapsed.
2006-05-11 06:34:30 +00:00
Daniel Stenberg
5d5f5e3be8 make sure the LASTSOCKET check only checks for SSL status if the socket
truly use SSL
2006-05-11 05:17:40 +00:00
Daniel Stenberg
d9e14408f0 silence warning 2006-05-11 05:16:38 +00:00
Daniel Stenberg
c9c5ce2365 David McCreedy provided a fix for CURLINFO_LASTSOCKET that does extended
checks on the to-be-returned socket to make sure it truly seems to be alive
and well. For SSL connection it (only) uses OpenSSL functions.
2006-05-10 22:17:42 +00:00
Daniel Stenberg
975534370f My Solaris test server was simply too slow to be able to respond within 4
seconds even when everything is fine! Now we allow a test server 8 seconds
to respond to still be considered ok.
2006-05-10 21:38:46 +00:00
Daniel Stenberg
28605f6bd3 cvsignore these files 2006-05-10 14:16:30 +00:00
Daniel Stenberg
3c6d3b69c2 1 - allow DICT with properly URL-escaped words, like using %20 for spaces
2 - properly escape certain letters within a DICT word to comply to the RFC2229
2006-05-10 11:44:31 +00:00
Daniel Stenberg
00312e95fe removed variable declarations shadowing previously declared variables 2006-05-10 09:53:52 +00:00
Daniel Stenberg
4223130bb0 Bram Matthys brought my attention to a libtool peculiarity where detecting
things such as C++ compiler actually is a bad thing and since we don't need
that detection I added a work-around, much inspired by a previous patch by
Paolo Bonzini. This also shortens the configure script quite a lot.
2006-05-10 08:03:54 +00:00
Daniel Stenberg
c811e1ce70 oops, could return an uninitialized variable 2006-05-09 13:02:53 +00:00
Daniel Stenberg
77475f2ad0 Andreas Ntaflos reported a bug in libcurl.m4: When configuring my GNU
autotools project, which optionally (default=yes) uses libcurl on a system
without a (usable) libcurl installation, but not specifying
`--without-libcurl', configure determines correctly that no libcurl is
available, however, the LIBCURL variable gets expanded to `LIBCURL = -lcurl'
in the resulting Makefiles.

David Shaw fixed the flaw.
2006-05-09 12:56:35 +00:00
Daniel Stenberg
3680a2f6f5 mention the other TFTP cleanup sweep from yday 2006-05-09 12:44:11 +00:00
Daniel Stenberg
1946058e7b Robson Braga Araujo fixed two problems in the recently added non-blocking SSL
connects. The state machine was not reset properly so that subsequent
connects using the same handle would fail, and there were two memory leaks.
2006-05-09 12:43:49 +00:00
Daniel Stenberg
73daf8ce33 Robson Braga Araujo fixed a memory leak when you added an easy handle to a
multi stack and that easy handle had already been used to do one or more
easy interface transfers, as then the code threw away the previously used
DNS cache without properly freeing it.
2006-05-09 11:33:00 +00:00
Daniel Stenberg
094ceeba14 check more return codes and skip the initial slash in given file names 2006-05-08 22:23:33 +00:00
Daniel Stenberg
3b7359a27a no longer uses errno but Curl_sockerrno() and now acknowledges return codes
from Curl_client_write
2006-05-08 21:00:44 +00:00
Dan Fandrich
df9108e19b Stop sending retransmitted received blocks up to client
Fixed handling of retransmitted blocks on transmit
Properly aligned data to transmit within packet
Replaced calls to strerror() with Curl_strerror()
2006-05-08 19:41:26 +00:00
Daniel Stenberg
6307e783d8 Fixed known bug #28. The TFTP code no longer assumes a packed struct and
thus works reliably on more platforms.
2006-05-08 15:09:50 +00:00
Daniel Stenberg
b9cd73c76d Fix GnuTLS compile warning. Risking breakage with some older version of GnuTLS? 2006-05-07 18:27:36 +00:00
Daniel Stenberg
b62c230ca2 Curl_https_getsock() was OpenSSL-specific and really should not be present
like this in this source file. The quickfix for now is to provide a simple
version for GnuTLS builds. The GnuTLS version of libcurl doesn't yet allow
fully non-blocking connects anyway so this function doesn't get used.
2006-05-05 22:14:40 +00:00
Daniel Stenberg
800193da9b get the Curl_sockerrno proto 2006-05-05 22:07:01 +00:00
Daniel Stenberg
577ba5783c two more contributors 2006-05-05 21:08:09 +00:00
Daniel Stenberg
9bece2b313 additional renames of Curl_ourerrno => Curl_sockerrno 2006-05-05 10:24:27 +00:00
Daniel Stenberg
e85e30546c Roland Blom filed bug report #1481217
(http://curl.haxx.se/bug/view.cgi?id=1481217), with follow-ups by Michele Bini
and David Byron. libcurl previously wrongly used GetLastError() on windows to
get error details after socket-related function calls, when it really should
use WSAGetLastError() instead.

When changing to this, the former function Curl_ourerrno() is now instead
called Curl_sockerrno() as it is necessary to only use it to get errno from
socket-related functions as otherwise it won't work as intended on Windows.
2006-05-04 22:39:47 +00:00
Daniel Stenberg
758f6eed51 Mark Eichin submitted bug report #1480821
(http://curl.haxx.se/bug/view.cgi?id=1480821) He found and identified a
problem with how libcurl dealt with GnuTLS and a case where gnutls returned
GNUTLS_E_AGAIN indicating it would block. It would then return an unexpected
return code, making Curl_ssl_send() confuse the upper layer - causing random
28 bytes trash data to get inserted in the transfered stream.

The proper fix was to make the Curl_gtls_send() function return the proper
return codes that the callers would expect. The Curl_ossl_send() function
already did this.
2006-05-04 06:00:40 +00:00
Daniel Stenberg
80ee5d3bd8 moved the curl_off_t check to within the --enable-debug block where it belongs since it is a somewhat ugly hack 2006-05-03 22:39:49 +00:00
Daniel Stenberg
dd06c60ada Nick Mathewson added the ARES_OPT_SOCK_STATE_CB option that when set makes
c-ares call a callback on socket state changes. A better way than the
ares_getsock() to get full control over the socket state.
2006-05-03 06:11:44 +00:00
Daniel Stenberg
6ca627ae74 curl-config got a --checkfor option 2006-05-02 22:48:22 +00:00
Daniel Stenberg
80a0b81c2a Make this code use the proper pointers 2006-05-02 09:19:31 +00:00
Gisle Vanem
06a7b0561b Added revision ID-tag. 2006-04-26 17:27:36 +00:00
Gisle Vanem
12db20be4e Fixed signed/unsigned convertion errors in Salford-C.
#ifdef around WSAEDISCON in strerror.c.
2006-04-26 17:26:22 +00:00
Gisle Vanem
3cbb1b2b64 Use the HAVE_MALLOC_H and HAVE_PROCESS_H defines
(more logical).
2006-04-26 17:23:28 +00:00
Gisle Vanem
d75e587613 djgpp has <process.h> too. 2006-04-26 17:15:57 +00:00
Gisle Vanem
414c57d138 Added support for Salford-C under Win32 (scc). HAVE_MALLOC_H and
HAVE_PROCESS_H added for all except scc.
2006-04-26 17:11:05 +00:00
Gisle Vanem
c14a84e6f2 Added SalfordC support. 2006-04-26 17:04:47 +00:00
Daniel Stenberg
def0db30e7 crlf_conversions needs to be a curl_off_t for ASCII transfers > 4GB on 32bit
systems
2006-04-26 13:08:12 +00:00
Daniel Stenberg
6ef7a81a3b updated with more error codes 2006-04-26 13:00:45 +00:00
Daniel Stenberg
95152aec68 David McCreedy brought line end conversions when doing FTP ASCII
transfers. They are done on non-windows systems and translate CRLF to LF.
2006-04-26 07:40:37 +00:00
Daniel Stenberg
8ed6762363 --ftp-method was missing in the --help output, as mentioned by Manfred Schwarb 2006-04-25 21:41:05 +00:00
Daniel Stenberg
87c5ed8bec Paul Querna fixed libcurl to better deal with deflate content encoding when
the stream (wrongly) lacks a proper zlib header. This seems to be the case on
too many actual server implementations.
2006-04-25 20:49:40 +00:00
Daniel Stenberg
ecc6c1f501 prevent signed/unsigned warnings 2006-04-25 05:32:05 +00:00
Daniel Stenberg
3d8338b0d4 Mention my April 20 thoughts. I already changed the README in the lib dir
to be accurate on this.
2006-04-24 22:41:07 +00:00
Daniel Stenberg
c91e25518f added the hipev build 2006-04-24 22:40:20 +00:00
Daniel Stenberg
a8dddeab61 the example that _is_ supposed to use libevent 2006-04-24 22:40:04 +00:00
Daniel Stenberg
8f0a5ab660 this example does NOT use libevent! 2006-04-24 22:39:39 +00:00
Daniel Stenberg
db03d4bdd0 Ale Vesely fixed CURLOPT_INTERFACE when using a hostname 2006-04-21 13:46:19 +00:00
Daniel Stenberg
0ec96e4279 each socket is used by exactly one easy handle, but of course each easy handle
can and will use more than one socket
2006-04-21 13:40:07 +00:00
Daniel Stenberg
6e520c4cdc added SPL and XBLite 2006-04-21 11:17:54 +00:00
Gunter Knauf
1e8683d72d removed -fpack-struct because gcc4 seems to know its obsolete and warns... 2006-04-20 10:26:51 +00:00
Daniel Stenberg
2df622fd14 detect ICC and pass on "-we 147" so that the configure checks for function
arguments work properly - and the option is not harmful for the rest of the
curl build either!
2006-04-19 11:11:10 +00:00
Daniel Stenberg
fede784fa2 the new conversion stuff documented (mostly by David McCreedy) 2006-04-19 09:08:15 +00:00
Daniel Stenberg
f191b143e9 CURL_VERSION_CONV is returned by curl_version_info if libcurl has been built
to allow/support character conversions
2006-04-19 09:03:21 +00:00
Daniel Stenberg
59212553b5 mention the recent thoughts/progress I had 2006-04-18 23:24:23 +00:00
Daniel Stenberg
e532b196cc Robson Braga Araujo provided a patch that makes libcurl less eager to close
the control connection when using FTP, for example when you remove an easy
handle from a multi stack.
2006-04-18 23:14:30 +00:00
Daniel Stenberg
0f5232280c mention Katie Wang as author of the patch 2006-04-18 22:12:22 +00:00
Daniel Stenberg
38898ba4af corrected the SSL timeout, as Ates Goral's patch did it and that works (opposed
to my previous brain-damaged version)
2006-04-18 22:10:19 +00:00
Daniel Stenberg
48f56d9600 attempt to silence the MIPSPro compiler warning 2006-04-18 10:55:41 +00:00
Daniel Stenberg
17bf5ac2fc avoid a warning about declaring a variable that shadows an earlier declared
one
2006-04-18 10:51:07 +00:00
Daniel Stenberg
343b882d80 there's an curl_easy_unescape too now 2006-04-18 09:23:03 +00:00
Gunter Knauf
db06d21339 minor Makefile fix - let's go 2006;
use correct version var.
2006-04-17 18:04:27 +00:00
Gunter Knauf
19240f08bb added missing symbol export. 2006-04-17 17:06:10 +00:00
Daniel Stenberg
d774730f83 added splay 2006-04-12 18:12:46 +00:00
Gisle Vanem
c2edf42567 Added splay.c. 2006-04-12 14:01:21 +00:00
Gisle Vanem
08f0e55b4f Add "multiif.h" for GETSOCK_WRITESOCK() macro. 2006-04-12 13:54:07 +00:00
Daniel Stenberg
deeb74b7e4 #1468330 (http://curl.haxx.se/bug/view.cgi?id=1468330) pointed out a bad
typecast in the curl tool leading to a crash with (64bit?) VS2005 (at least)
since the struct timeval field tv_sec is an int while time_t is 64bit.
2006-04-11 10:49:51 +00:00
Daniel Stenberg
0542002d7a adjusted to the new internal *_getsock() concept for providing info internally
about what sockets to wait for what action on
2006-04-11 07:23:30 +00:00
Daniel Stenberg
c1e307f585 added docs and removed proto 2006-04-11 07:22:55 +00:00
Daniel Stenberg
7b4ba43dcf mention recent additions 2006-04-10 21:57:45 +00:00
Daniel Stenberg
b0e4debaab adding the new man pages to the package 2006-04-10 21:55:48 +00:00
Daniel Stenberg
676597e961 Ates Goral found out that if you specified both CURLOPT_CONNECTTIMEOUT and
CURLOPT_TIMEOUT, the _longer_ time would wrongly be used for the SSL
connection time-out!
2006-04-10 21:49:55 +00:00
Daniel Stenberg
686d90745b First curl_multi_socket() commit. Should primarily be considered as an internal
code rearrange to fit the future better.
2006-04-10 15:00:53 +00:00
Daniel Stenberg
5dc02d53c3 This no longer needs the extra define! 2006-04-10 14:58:38 +00:00
Daniel Stenberg
0598547b58 added README.multi_socket 2006-04-10 14:54:12 +00:00
Daniel Stenberg
67c7745f5d state of the multi_socket API works 2006-04-10 14:44:23 +00:00
Daniel Stenberg
a2c289646d check for fork() as well, so that we can build the sws http test server with
fork support for cooler tests
2006-04-10 13:31:35 +00:00
Daniel Stenberg
e6efecd054 avoid duplicate typedefs, as this type is also defined in our public headers 2006-04-10 13:14:14 +00:00
Daniel Stenberg
778b6a86c0 curl_multi_socket() updates 2006-04-10 13:12:52 +00:00
Daniel Stenberg
e5babd086d if configure found a fork(), sws supports --fork which is *NOT* used by the
ordinary test suite. Also removed the perror() calls and instead made the
logging output the errno code to ease error tracking using logs.
2006-04-10 13:11:52 +00:00
Daniel Stenberg
c212ebbdda output the exit code from stunnel to stderr in case it is non-zero 2006-04-10 13:10:25 +00:00
Daniel Stenberg
83b8de3d43 support --fork and pass that on to sws 2006-04-10 13:09:56 +00:00
Daniel Stenberg
e174d374f2 Scan for 'stunnel4' before 'stunnel' since debian have them setup this way
and it should break most other systems. The "funny" part is that debian
actually have a 'stunnel' setup to simulate stunnel v3 but it breaks our own
stunnel-version-detect-and-adjust-to-it system.

Added initial support for optionally running servers with fork support.
2006-04-10 13:03:20 +00:00
Daniel Stenberg
4edb93508d Use correct content-length. Found out by patching the libcurl read to only
read one byte at a time...
2006-04-10 12:26:08 +00:00
Daniel Stenberg
38c994b83b 33. Doing multi-pass HTTP authentication on a non-default port does not work.
This happens because the multi-pass code abuses the redirect following code
  for doing multiple requests, and when we following redirects to an absolute
  URL we must use the newly specified port and not the one specified in the
  original URL. A proper fix to this would need to separate the negotiation
  "redirect" from an actual redirect.
2006-04-10 08:24:57 +00:00
Daniel Stenberg
1b8643d4c9 65 - curl_multi_socket() added but not extensively tested nor particularly
documented or pushed for.
2006-04-10 08:17:08 +00:00
Daniel Stenberg
d3c796f5b0 we haven't been using yacc/bison in a long time! 2006-04-10 08:16:03 +00:00
Daniel Stenberg
83d8a6a450 forked off the changes from 2005 into its own file 2006-04-10 08:14:05 +00:00
Daniel Stenberg
a21a77d230 CURLE_FTP_USER_PASSWORD_INCORRECT is not returned by libcurl anymore! 2006-04-09 22:41:22 +00:00
Daniel Stenberg
260b88c197 mention RFC 2396 for URL syntax spec 2006-04-09 22:40:49 +00:00
Daniel Stenberg
655331a91b new little example using the new conversion callbacks added in 7.15.4 2006-04-09 08:39:08 +00:00
Daniel Stenberg
09e569f83d mention the outlength argument 2006-04-08 21:29:01 +00:00
Gisle Vanem
e4a4b562c4 readint_le() not needed in USE_WINDOWS_SSPI code. 2006-04-08 11:04:53 +00:00
Gisle Vanem
35b4a755f9 curl_easy_unescape() takes 4 arguments. 2006-04-08 11:01:40 +00:00
Daniel Stenberg
5a4b43848a First commit of David McCreedy's EBCDIC and TPF changes. 2006-04-07 21:50:47 +00:00
Daniel Stenberg
d98869a088 minor re-arrange to return a value in order to avoid compiler warnings
for not returning a value from a non-void function (even though the code
never actually reached that point before)
2006-04-07 12:10:34 +00:00
Daniel Stenberg
4d33cf739d added typedefed function pointers and typecast the NULL assignments in an
attempt to silence picky compilers when assigning data pointers to a function
pointer variable
2006-04-07 11:47:21 +00:00
Daniel Stenberg
34e7daf989 attempt to avoid warnings in picky environments by storing options as
unsigned chars
2006-04-07 11:46:16 +00:00
Daniel Stenberg
b0adcd6a46 cut off a bit more of the type-2 ntlm message since it differs between
hosts
2006-04-05 12:46:03 +00:00
Daniel Stenberg
be285cde3f Michele Bini modified the NTLM code to work for his "weird IIS case"
(http://curl.haxx.se/mail/lib-2006-02/0154.html) by adding the NTLM hash
function in addition to the LM one and making some other adjustments in the
order the different parts of the data block are sent in the Type-2 reply.
Inspiration for this work was taken from the Firefox NTLM implementation.

I edited the existing 21(!) NTLM test cases to run fine with these news. Due
to the fact that we now properly include the host name in the Type-2 message
the test cases now only compare parts of that chunk.
2006-04-05 12:35:48 +00:00
Daniel Stenberg
0ff1faf7f2 for the CURLDEBUG case, we redefine sprintf and vsprintf to make us notice
if any use of such a function slip through
2006-03-28 10:08:54 +00:00
Daniel Stenberg
bcc62cc9e3 #1451929 (http://curl.haxx.se/bug/view.cgi?id=1451929) detailed a bug that
occurred when asking libcurl to follow HTTP redirects and the original URL had
more than one question mark (?). Added test case 276 to verify.
2006-03-28 08:03:25 +00:00
Daniel Stenberg
97b466d409 converted sprintf() to snprintf() to reduce risk 2006-03-28 07:51:59 +00:00
Daniel Stenberg
f17d9bba14 David Byron found a problem multiple -d options when libcurl was built with
--enable-debug, as then curl used free() on memory allocated both with
normal malloc() and with libcurl-provided functions, when the latter MUST be
freed with curl_free() in debug builds.
2006-03-27 21:59:40 +00:00
Gunter Knauf
d74725ce67 minor Makefile fix - let's go 2006;
avoid kiling hugehelp.c when not built from CVS.
2006-03-27 14:34:19 +00:00
Daniel Stenberg
3dad55d7a8 Tor Arntsen figured out that TFTP was broken on a lot of systems since we
called bind() with a too big argument in the 3rd parameter and at least
Tru64, AIX and IRIX seem to be very picky about it.
2006-03-26 08:52:43 +00:00
Daniel Stenberg
598ffeea89 David McCreedy added CURLINFO_FTP_ENTRY_PATH to export the FTP entry path 2006-03-21 22:30:03 +00:00
Daniel Stenberg
83367f67de Xavier Bouchoux made the SSL connection non-blocking for the multi interface
(when using OpenSSL).
2006-03-21 21:54:44 +00:00
Daniel Stenberg
15f2647d71 Tor Arntsen fixed the AIX Toolbox RPM spec 2006-03-21 13:34:41 +00:00
Daniel Stenberg
6421d69bff David McCreedy fixed libcurl to no longer ignore AUTH failures and now it
reacts properly according to the CURLOPT_FTP_SSL setting.
2006-03-20 22:51:08 +00:00
Daniel Stenberg
18081e30e1 mention today's fixes 2006-03-20 22:25:14 +00:00
Daniel Stenberg
97181b5c0d 7.15.3 contributors 2006-03-20 22:24:02 +00:00
Dan Fandrich
a63f9887b9 Fixed a bug whereby a received file whose length was a multiple of
512 bytes could have random garbage appended.  Also, stop processing TFTP
packets which are too short to be legal.
2006-03-20 22:15:22 +00:00
Daniel Stenberg
1282aad4a5 off-by-one for the case when it adds /? and a terminating zero to the URL 2006-03-20 13:14:01 +00:00
Daniel Stenberg
b8fad99f09 start working towards 7.15.4 2006-03-20 09:03:09 +00:00
Daniel Stenberg
c7e9e60b05 fixed the AIX packages 2006-03-20 07:59:45 +00:00
Daniel Stenberg
47f2e1da73 missing in CVS 2006-03-20 07:37:10 +00:00
Daniel Stenberg
5975229919 fixed tftp packet overflow risk 2006-03-20 07:32:50 +00:00
Daniel Stenberg
38295e8a75 slight rewording based on debian bug report #357388 by Justin Pryzby 2006-03-17 08:22:50 +00:00
Daniel Stenberg
f9612b5eaf fixed in CVS 2006-03-16 22:31:04 +00:00
Daniel Stenberg
5cf2ef2ef7 AIX Toolbox RPM spec file by Tor Arntsen 2006-03-16 21:23:41 +00:00
Daniel Stenberg
938b5c886e slightly edited explanation for -f/--fail by the help of Kjell Ericson 2006-03-15 21:21:35 +00:00
Daniel Stenberg
0618e68200 use the new types accordingly 2006-03-14 00:07:21 +00:00
Daniel Stenberg
bac52f3969 --ftp-method and CURLOPT_FTP_FILEMETHOD are now documented and usable 2006-03-14 00:05:15 +00:00
Daniel Stenberg
d494d62953 David McCreedy found a use of the wrong variable when display the error
text from OpenSSL.
2006-03-13 23:34:25 +00:00
Daniel Stenberg
7206181385 David McCreedy found a missing return code assignment 2006-03-13 23:33:46 +00:00
Daniel Stenberg
3f22901a43 Scott Worley's typo fixes 2006-03-13 19:44:36 +00:00
Daniel Stenberg
f70f11fc70 Peter Heuchert's correction for the clear control connection case 2006-03-08 15:46:21 +00:00
Daniel Stenberg
cffebd7fd6 Markus Koetter filed debian bug report #355715 which identified a problem
with the multi interface and multi-part formposts. The fix from February
22nd could make the Curl_done() function get called twice on the same
connection and it was not designed for that and thus tried to call free() on
an already freed memory area!
2006-03-07 23:11:41 +00:00
Daniel Stenberg
b8c8e7349f Peter Heuchert made sure the CURLFTPSSL_CONTROL setting for CURLOPT_FTP_SSL
is used properly.
2006-03-07 22:28:08 +00:00
Daniel Stenberg
8bba99ae56 Lots of users on Windows have reported getting the "SSL: couldn't set
callback" error message so I've now made the setting of that callback not be
as critical as before. The function is only used for additional loggging/
trace anyway so a failure just means slightly less data. It should still be
able to proceed and connect fine to the server.
2006-03-06 22:35:51 +00:00
Daniel Stenberg
b5c5f57613 build fix for Interix 2006-03-04 22:39:31 +00:00
Daniel Stenberg
33df856925 If run on a curl built shared, detect this and invoke libtool for gdb
accordingly.
2006-03-03 14:37:44 +00:00
Daniel Stenberg
ce09cedd2e added test524 2006-03-03 13:12:39 +00:00
Daniel Stenberg
7d68101f83 Prevent uploading to a URL that has no file name part. 2006-03-03 13:09:30 +00:00
Daniel Stenberg
aa50a00898 point out that CAINFO points out a file name by default 2006-03-02 22:09:30 +00:00
Daniel Stenberg
26f112ba55 added large chunk of blurb about the progress meter 2006-03-02 22:04:39 +00:00
Daniel Stenberg
159b9162f8 I'm pretty sure #24 is fixed in 7.15.2 2006-03-02 13:35:54 +00:00
Daniel Stenberg
d7999f9fcb mention Dan F's out-of-file handles fix from the other day 2006-03-02 11:41:23 +00:00
Daniel Stenberg
f13eba4c78 check for and use getprotobyname 2006-03-02 11:37:05 +00:00
Dan Fandrich
050e82e088 Don't lock up at start when there aren't any free file descriptors. 2006-02-28 18:21:33 +00:00
Daniel Stenberg
88377e5b61 added missing files 2006-02-27 21:32:42 +00:00
Daniel Stenberg
241af465fd ack, removed duplicate 2006-02-27 18:17:50 +00:00
Daniel Stenberg
59510a554d 7.15.2 contributors added 2006-02-27 18:16:47 +00:00
Daniel Stenberg
b10aa95d28 start over on what might become 7.15.3 2006-02-27 18:14:14 +00:00
Daniel Stenberg
097bee681a hehe, wrong year but who reads these lines anyway? ;-) 2006-02-27 16:09:24 +00:00
Daniel Stenberg
8548c2fc61 7.15.2 2006-02-27 16:05:16 +00:00
Gisle Vanem
dc4fbd2e97 Small fix. 2006-02-26 18:20:43 +00:00
Gisle Vanem
60b029869f Use getprotobyname() to retrieve protocol number for TCP
(sorry, I don't know how to add this to the configure process).
2006-02-26 17:08:33 +00:00
Gisle Vanem
f592ea6c30 Fix typo. 2006-02-25 18:57:20 +00:00
Dan Fandrich
a39ac3d94a Added user ID support to SOCKS4. 2006-02-24 21:35:48 +00:00
Daniel Stenberg
4b23ddc002 Fixed typo, the option is called --write-out. Bob Bagwill pointed out. 2006-02-23 21:33:02 +00:00
Daniel Stenberg
4486d336a6 argh, forgot the check for a connection before we call Curl_done 2006-02-23 21:29:48 +00:00
Dan Fandrich
45e4b811b0 Fixed a few more comment typos. 2006-02-23 18:39:22 +00:00
Daniel Stenberg
0e6a1a4420 Peter Su's SOCKS4 fix 2006-02-23 14:42:47 +00:00
Daniel Stenberg
b8bf708db9 the last planned fix is done 2006-02-23 12:21:24 +00:00
Daniel Stenberg
6fdbb01194 Lots of work and analysis by "xbx___" in bug #1431750
(http://curl.haxx.se/bug/view.cgi?id=1431750) helped me identify and fix two
different but related bugs:

1) Removing an easy handle from a multi handle before the transfer is done
   could leave a connection in the connection cache for that handle that is
   in a state that isn't suitable for re-use. A subsequent re-use could then
   read from a NULL pointer and segfault.

2) When an easy handle was removed from the multi handle, there could be an
   outstanding c-ares DNS name resolve request. When the response arrived,
   it caused havoc since the connection struct it "belonged" to could've
   been freed already.

Now Curl_done() is called when an easy handle is removed from a multi handle
pre-maturely (that is, before the transfer was complteted). Curl_done() also
makes sure to cancel all (if any) outstanding c-ares requests.
2006-02-23 12:20:48 +00:00
Dan Fandrich
d29147565c Fixed test case 57 (KNOWN_BUG #18) 2006-02-22 23:55:28 +00:00
Dan Fandrich
75c9430559 Fixed some spelling errors in comments, and extraneous \n in failf logs. 2006-02-22 19:09:33 +00:00
Daniel Stenberg
9ac99a80c3 two typos in comments 2006-02-21 15:25:22 +00:00
Daniel Stenberg
a15d107dde Peter Su added support for SOCKS4 proxies. Enable this by setting the proxy
type to the already provided type CURLPROXY_SOCKS4.
I added a --socks4 option that works like the current --socks5 option but
instead use the socks4 protocol.
2006-02-21 07:46:41 +00:00
Daniel Stenberg
09897b8146 ftp upload with url ending with slash 2006-02-20 10:05:47 +00:00
Daniel Stenberg
29e446e508 Shmulik Regev fixed an issue with multi-pass authentication and compressed
content when libcurl didn't honor the internal ignorebody flag.
2006-02-19 23:16:48 +00:00
Daniel Stenberg
10beb36b1c Ulf Hrnhammar fixed a format string (printf style) problem in the Negotiate
code. It should however not be the cause of any troubles. He also fixed a
few similar problems in the HTTP test server code.
2006-02-18 22:27:01 +00:00
Yang Tse
a65a888866 Fix spacing. 2006-02-17 15:58:21 +00:00
Daniel Stenberg
98180b5cc7 fixed formatting 2006-02-17 13:31:49 +00:00
Daniel Stenberg
92009181af Shmulik Regev provided a fix for the DNS cache when using short life times,
as previously it could be holding on to old cached entries longer than
requested.
2006-02-16 23:42:32 +00:00
Dan Fandrich
831bdb9f63 Gopher is no longer supported. 2006-02-16 19:19:32 +00:00
Daniel Stenberg
50a4dbbb5e two items before release 2006-02-16 12:11:20 +00:00
Daniel Stenberg
ad6511c313 Added some clarifying comments 2006-02-16 10:02:11 +00:00
Daniel Stenberg
7a37fa4aef 32. (At least on Windows) If libcurl is built with c-ares and there's no DNS
server configured in the system, the ares_init() call fails and thus
  curl_easy_init() fails as well. This causes weird effects for people who use
  numerical IP addresses only.
2006-02-15 09:36:39 +00:00
Daniel Stenberg
dcee24191f mention the CURLOPT_CONNECT_ONLY connection 2006-02-11 22:36:29 +00:00
Daniel Stenberg
87bcb6f377 Karl M added the CURLOPT_CONNECT_ONLY and CURLINFO_LASTSOCKET options that
an app can use to let libcurl only connect to a remote host and then extract
the socket from libcurl. libcurl will then not attempt to do any transfer at
all after the connect is done.
2006-02-11 22:35:16 +00:00
Daniel Stenberg
b0bc2f00d2 Kent Boortz improved the configure check for GnuTLS to properly set LIBS
instead of LDFLAGS.
2006-02-11 12:56:52 +00:00
Daniel Stenberg
3b19c7d0d9 CURLOPT_NOSIGNAL might be a MUST to make threaded use work, like on AIX 5.2
due to the use of the static variable for sigsetjmp()
2006-02-09 22:25:41 +00:00
Daniel Stenberg
12f5c67bf5 Philippe Vaucher provided a brilliant piece of test code that show a problem
with re-used FTP connections. If the second request on the same connection was
set not to fetch a "body", libcurl could get confused and consider it an
attempt to use a dead connection and would go acting mighty strange.
2006-02-07 23:09:04 +00:00
Daniel Stenberg
d7a83d8995 avoid illegal memory access when doing "-T [URL] [URL]" 2006-02-07 18:56:41 +00:00
Daniel Stenberg
7725729d90 Rene Bernhardt found this typo 2006-02-07 14:03:17 +00:00
Daniel Stenberg
e96445bd02 how silly, the cookie expired! ;-) 2006-02-06 20:02:14 +00:00
Daniel Stenberg
da2c124675 Frank's synctime.c example and an updated list in README 2006-02-04 18:08:54 +00:00
Daniel Stenberg
8cb695a963 fixed --limit-rate 2006-02-01 23:28:22 +00:00
Daniel Stenberg
54cbd7e154 Make --limit-rate [num] mean bytes. Seems I broke it back in november 2005... 2006-02-01 23:26:14 +00:00
Gisle Vanem
5994b62930 Squelch the "warning: 'port' might be used uninitialized in this function".
(occurs w/o ENABLE_IPV6).
2006-01-30 18:57:02 +00:00
Daniel Stenberg
2fbf94b0f3 Added CURLOPT_LOCALPORT and CURLOPT_LOCALPORTRANGE to libcurl. Set with the
curl tool with --local-port. Plain and simply set the range of ports to bind
the local end of connections to. Implemented on to popular demand.

Not extensively tested. Please let me know how it works.
2006-01-30 08:24:07 +00:00
Daniel Stenberg
32bc30e210 Based on an error report by Philippe Vaucher, we no longer count a retried
connection setup as a follow-redirect. It turns out 1) this fails when a FTP
connection is re-setup and 2) it does make the max-redirs counter behave
wrong. This fix was not verified since the reporter vanished, but I believe
this is the right fix nonetheless.
2006-01-30 08:20:52 +00:00
Daniel Stenberg
f3bc8e6ce1 more mirrors 2006-01-29 13:13:45 +00:00
Daniel Stenberg
16f3a32bec we should fix the system includes in the public headers to be based on checks
of the system instead of depending on what particular systems we think need
various headers
2006-01-28 13:14:38 +00:00
Daniel Stenberg
c44d2498e3 include sys/select.h on NetBSD as well 2006-01-28 13:13:58 +00:00
Daniel Stenberg
2aed209efa typo pointed out by Mike Griffiths 2006-01-27 21:23:04 +00:00
Daniel Stenberg
b55b780d7b Cyrill Osterwalder pointed out that sending "" as data in a header is in
fact equal to a blank one according to the spec.
2006-01-27 15:01:10 +00:00
Daniel Stenberg
8d4eb2bc1f updated source header 2006-01-26 10:39:25 +00:00
Daniel Stenberg
67bf4f28ff Michal Marek provided a patch for FTP that makes libcurl continue to try PASV
even after EPSV returned a positive response code, if libcurl failed to
connect to the port number the EPSV response said. Obviously some people are
going through protocol-sensitive firewalls (or similar) that don't understand
EPSV and then they don't allow the second connection unless PASV was
used. This also called for a minor fix of test case 238.
2006-01-24 14:40:43 +00:00
Dan Fandrich
803582f8ac Fixed some statements about handling multiple occurrences of options.
Tried to make some of the wording a bit more consistent.
2006-01-20 18:56:27 +00:00
Daniel Stenberg
03603f392a the second -P fix 2006-01-20 17:50:12 +00:00
Daniel Stenberg
fcfd6d9504 Duane Cathey was one of our friends who reported that curl -P [IP]
(CURLOPT_FTPPORT) didn't work for ipv6-enabed curls if the IP wasn't a
"native" IP while it works fine for ipv6-disabled builds!

In the process of fixing this, I removed the support for LPRT since I can't
think of many reasons to keep doing it and asking on the mailing list didn't
reveal anyone else that could either. The code that sends EPRT and PORT is
now also a lot simpler than before (IMHO).
2006-01-19 23:52:03 +00:00
Daniel Stenberg
c31451cf13 Jon Turner pointed out that doing -P [hostname] with curl (built ipv4-only)
didn't work.
2006-01-19 22:02:46 +00:00
Daniel Stenberg
5deff1a179 clarify what "-P -" does 2006-01-19 20:40:08 +00:00
Daniel Stenberg
e236a1c99b corrected factual mistake about BSD license in the krb4.c code 2006-01-19 09:53:33 +00:00
Daniel Stenberg
a2f3094eb0 reality sync 2006-01-18 12:17:20 +00:00
Daniel Stenberg
65afc576ea configure no longer warns on "missing" if the current path contains a space 2006-01-18 10:00:36 +00:00
Daniel Stenberg
8971f656b4 David Shaw: Here is the latest libcurl.m4 autoconf tests. It is updated with
the latest features and protocols that libcurl supports and has a minor fix to
better deal with the obscure case where someone has more than one libcurl
installed at the same time.
2006-01-17 17:39:39 +00:00
Daniel Stenberg
394ce9ee39 happy new year! 2006-01-17 07:53:29 +00:00
Daniel Stenberg
67a83c1b34 David Shaw finally removed all traces of Gopher and we are now officially
not supporting it. It hasn't been functioning for years anyway, so this is
just finally stating what already was true. And a cleanup at the same time.
2006-01-16 22:14:37 +00:00
Daniel Stenberg
1e8d094274 improved the description of the -L/--location option 2006-01-16 00:00:28 +00:00
Daniel Stenberg
4c35a40858 Bryan Henderson turned the 'initialized' variable for curl_global_init()
into a counter, and thus you can now do multiple curl_global_init() and you
are then supposed to do the same amount of calls to curl_global_cleanup().
Bryan also updated the docs accordingly.
2006-01-15 23:55:53 +00:00
Daniel Stenberg
802b2aaf6a adjusted to use curl_multi_setopt() to set the callback 2006-01-15 23:17:46 +00:00
Daniel Stenberg
0e79a8944b adjusted to the new concept of the callback 2006-01-15 23:15:24 +00:00
Daniel Stenberg
bebf70667d Andrew Benham fixed a race condition in the test suite that could cause the
test script to kill all processes in the current process group!
2006-01-13 12:16:16 +00:00
Daniel Stenberg
d9bd5de0b1 Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru
HTTP proxy.
2006-01-12 22:18:38 +00:00
Daniel Stenberg
31c7aa0ba4 Michael Jahn fixed ftp over CONNECT 2006-01-12 12:40:04 +00:00
Daniel Stenberg
fc2388189f mention the "secret" option as I've got no feedback and it is actually present
in 7.15.1
2006-01-10 23:08:38 +00:00
Daniel Stenberg
4431338691 When using a bad path over FTP, as in when libcurl couldn't CWD into all
given subdirs, libcurl would still "remember" the full path as if it is the
current directory libcurl is in so that the next curl_easy_perform() would
get really confused if it tried the same path again - as it would not issue
any CWD commands at all, assuming it is already in the "proper" dir.

Starting now, a failed CWD command sets a flag that prevents the path to be
"remembered" after returning.
2006-01-10 23:03:22 +00:00
Daniel Stenberg
bda1e9aeab Made the copyright year match the latest modification's year. 2006-01-09 13:17:14 +00:00
Daniel Stenberg
4969ca768d Alexander Lazic improved the getservbyport_r() configure check. 2006-01-09 08:31:48 +00:00
Daniel Stenberg
2acd1c1642 one more mirror, now fortunately in Japan 2006-01-08 23:28:33 +00:00
Daniel Stenberg
e1e753179a use the proper dash 2006-01-08 22:55:13 +00:00
Daniel Stenberg
f4cc8153ae Mike Jean fixed so that the second CONNECT when doing FTP over a HTTP proxy
actually used a new connection and not sent the second request on the first
socket!
2006-01-07 22:24:16 +00:00
Daniel Stenberg
e4d8cb4ee0 buildconf fixes 2006-01-06 22:59:34 +00:00
Daniel Stenberg
723a78ae3f As Alexander Lazic pointed out, run the buildconf from the ares dir if that
is present instead of trying to duplicate that stuff in this script.
2006-01-06 22:08:39 +00:00
Daniel Stenberg
cd9d0d7dec Use $ACLOCAL_FLAGS too, pointed out by Alexander Lazic 2006-01-06 22:07:51 +00:00
Daniel Stenberg
665d4f08c8 summary of what we have 2006-01-05 14:58:34 +00:00
Daniel Stenberg
00c7780fcb James Bursa fixes: find the hosts file on RISC OS, and made it build with
newer gcc versions that no longer defines "riscos".
2006-01-05 07:57:32 +00:00
Daniel Stenberg
15ab13dc42 Yang Tse has been helping out 2006-01-05 07:56:43 +00:00
Daniel Stenberg
8a0ca3066e modified output to prevent the autobuild system to trap on the 'FAILED' output
mistaking it for an actual failed test case
2006-01-04 23:02:40 +00:00
Gisle Vanem
ea01755bb4 Added ares_getsock.obj. 2006-01-04 14:21:57 +00:00
Daniel Stenberg
69c2084a18 updated test programs to use the API as it currently works 2006-01-04 14:11:35 +00:00
Daniel Stenberg
99c0a1a7d0 removed easy handle argument from proto 2006-01-04 14:09:57 +00:00
Daniel Stenberg
5acf997e69 upcoming new error code 2006-01-04 14:09:42 +00:00
Daniel Stenberg
dd87e4ed39 Andres Garcia made the TFTP test server build with mingw. 2006-01-04 10:07:36 +00:00
Daniel Stenberg
2f8c26ba8a not much recent stuff, but still I had this modified locally 2006-01-04 10:04:23 +00:00
Daniel Stenberg
81b9793807 Added remake of the arpa/tftp.h file to make the TFTP server build on systems
without the real header file.
2006-01-03 22:47:07 +00:00
Daniel Stenberg
7278f17e8f killed trailing whitespace 2006-01-03 22:44:58 +00:00
Daniel Stenberg
66c7427df0 Andres Garcia made the TFTP test server build with mingw ("I also had to copy
the 'tftp.h' file from a linux box, since it doesn't come with mingw.")
2006-01-03 22:19:15 +00:00
Daniel Stenberg
c1a06d858d CURLOPT_PROGRESSFUNCTION is really not a good idea when using the multi
interface
2006-01-03 15:53:29 +00:00
Daniel Stenberg
53b5fdbe9e fixed the prototype 2006-01-03 15:52:59 +00:00
Daniel Stenberg
687cf0235e modified to hush compiler warnings 2006-01-03 12:18:22 +00:00
Daniel Stenberg
b6e9229cf0 Removed inaccurate comment for upcoming curl_multi_socket() and family.
Modified the callback proto used for it.
2006-01-02 23:37:48 +00:00
Daniel Stenberg
089e4848d8 minor edits 2006-01-02 23:32:36 +00:00
Daniel Stenberg
58d2e7c6d1 Initial description of the upcoming curl_multi_timeout() function 2006-01-02 23:00:04 +00:00
Daniel Stenberg
fa18d6fb76 I removed the timeout argument from the socket callback and did some other
cleanups of this man page. The lengthy description has now also been removed
from curl/multi.h since it immediately got tedious to maintain the info on
two places when I did major updates...
2006-01-02 22:58:56 +00:00
Gisle Vanem
4dcb930247 Include <sys/ioctl.h> before redefining ioctl(). 2006-01-02 18:35:58 +00:00
Daniel Stenberg
74a299fd08 1. sws now supports two new "commands" and 2. if built with
CURL_SWS_FORK_ENABLED defined it forks for each new connection and thus can
support any amount of connection clients (used for hiper tests and not for the
standard plain curl test suite)
2006-01-02 12:19:12 +00:00
Daniel Stenberg
532a560d87 we're working on 1.3.1 (or more) 2006-01-02 09:13:56 +00:00
Marty Kuhrt
0040a60559 fix questionable compare 2005-12-30 00:35:21 +00:00
Marty Kuhrt
cc34342790 fix questionable compare compiler error (unsigned can't be < 0) 2005-12-30 00:20:46 +00:00
Marty Kuhrt
bdbf6e9d19 removed defunct email address 2005-12-30 00:07:25 +00:00
Marty Kuhrt
db86f765eb removed .h and .sdl 2005-12-30 00:07:25 +00:00
Marty Kuhrt
b11dec5dd5 putting back into dist 2005-12-30 00:07:25 +00:00
Marty Kuhrt
86becc7591 put back into dist to lessen build confusion for some 2005-12-30 00:07:25 +00:00
Marty Kuhrt
8922bc038b put back into dist since most people didn't want to use SDL 2005-12-30 00:07:25 +00:00
Marty Kuhrt
009f5790a4 changed HAVE_STRTOK to follow CRTL version 2005-12-30 00:07:25 +00:00
Marty Kuhrt
0536b6c459 added TFTP errors to match curl.h 2005-12-30 00:07:25 +00:00
Daniel Stenberg
0e3ebd9841 Kirill Vasiliev fixed the 'release-ssl-dll' target to properly build a
static libcurl using openssl as dll.
2005-12-23 23:40:40 +00:00
Daniel Stenberg
598965a606 clarified that curl_global_init() isn't thread-safe and that it might affect
curl_easy_init() if you don't call curl_global_init() explicitly in your app
2005-12-23 23:22:23 +00:00
Dan Fandrich
d7a2938849 Mention that PKG_CONFIG_PATH is preferred to --with-ssl 2005-12-23 22:33:06 +00:00
Daniel Stenberg
a683658675 This function was added in c-ares [version] 2005-12-22 15:31:32 +00:00
Daniel Stenberg
25169f68b7 added ares_getsock() 2005-12-22 15:29:12 +00:00
Daniel Stenberg
e5247ae65d Added ares_getsock() to extract sockets to wait for action on, without being
limited to select().
2005-12-22 15:27:41 +00:00
Daniel Stenberg
a718cb05ff The inital early embryos to describe the curl_multi_socket() API. Committed
now to enable them to get added as web pages easier, they are not ready
for anything "real" just yet.
2005-12-22 15:11:11 +00:00
Daniel Stenberg
b466ef2581 the curl_multi_socket() test application (still using select()) 2005-12-22 14:14:14 +00:00
Daniel Stenberg
c7a634641f #31 curl-config --libs" will include details set in LDFLAGS when configure is
run that might be needed only for building libcurl.
2005-12-22 08:33:02 +00:00
Yang Tse
e4388643f1 Checking for function getnameinfo and its arguments is finally
done in one single function CURL_CHECK_FUNC_GETNAMEINFO which
will only define HAVE_GETNAMEINFO if the function has been found
AND the type of its arguments has been properly been detected
2005-12-21 20:44:54 +00:00
Yang Tse
bc4208201c Undefine HAVE_GETNAMEINFO if unable to find
proper types to use for getnameinfo args
2005-12-21 17:51:08 +00:00
Yang Tse
a0d69d52a1 Undefine HAVE_GETNAMEINFO if unable to find
proper types to use for getnameinfo args
2005-12-21 17:20:22 +00:00
Yang Tse
c23a1be139 Make sure we're using 'c-ares' sources and not 'ares' ones. 2005-12-21 16:08:35 +00:00
Daniel Stenberg
9799f7afb0 added our regular source header 2005-12-21 09:15:54 +00:00
Daniel Stenberg
6358b24fac allow more evironment variables to control what tools to check for and use 2005-12-21 08:09:12 +00:00
Daniel Stenberg
b58634316f use ACLOCAL even when using 'find' to find the aclocal tool 2005-12-21 07:59:03 +00:00
Yang Tse
e3657644d6 In CURL_FUNC_GETNAMEINFO_ARGTYPES, when cross-compiling a windows
target use calling convention WSAAPI for getnameinfo() prototype.
Checking type DWORD as argument 4 and 6 of getnameinfo not needed.
2005-12-20 23:49:14 +00:00
Daniel Stenberg
7d1e3ebeed explain tld_check_name() 2005-12-20 22:46:12 +00:00
Gisle Vanem
9e61dfe85e Changes for PellesC compiler under Win32. 2005-12-20 22:20:42 +00:00
Gisle Vanem
7b51aafa86 Changes for PellesC compiler under Win32. A bit limited, but
we just love swedish products...
2005-12-20 22:20:04 +00:00
Gisle Vanem
5f487123df Fix PellesC warning. 2005-12-20 20:58:51 +00:00
Gisle Vanem
f1f32477e3 Changes for PellesC for Win32. It needs <unistd.h> for 'ssize_t'. Hence the
rearrangement in ares_process.c.
2005-12-20 20:48:38 +00:00
Yang Tse
df2b1251a0 fix ioctlsocket detection 2005-12-20 20:29:53 +00:00
Yang Tse
02c7cf6fa5 Fix, header checks must be done before using its results. 2005-12-20 18:50:37 +00:00
Daniel Stenberg
60006ff993 shiper is the new test tool for the new API 2005-12-20 09:19:30 +00:00
Daniel Stenberg
f3af5d7b8e show dl speed 2005-12-20 09:19:20 +00:00
Daniel Stenberg
d551412a32 added our standard source header 2005-12-20 09:02:36 +00:00
Daniel Stenberg
6de67a134e fix closing parentheses 2005-12-20 08:51:48 +00:00
Daniel Stenberg
8ec31398e0 use AC_PROG_LIBTOOL after AC_DISABLE_SHARED 2005-12-20 08:51:34 +00:00
Yang Tse
fd0d560b47 Fix quoting 2005-12-20 03:23:49 +00:00
Yang Tse
cc542269a1 Give third argument to AC_DEFINE_UNQUOTED 2005-12-20 02:48:48 +00:00
Yang Tse
7b488a3bef Use native type SOCKET instead of int when testing functionality of ioctlsocket on Windows 2005-12-20 00:27:59 +00:00
Yang Tse
f448168501 Ooops 2005-12-19 23:32:52 +00:00
Dan Fandrich
80a8fb98db Fixed compiler warning on libc5. 2005-12-19 22:36:44 +00:00
Yang Tse
898bb397b1 Add checking for type DWORD as argument 4 and 6 of getnameinfo 2005-12-19 21:45:43 +00:00
Yang Tse
74ed5b5ebd Adjust more windows header includes 2005-12-19 21:38:10 +00:00
Dan Fandrich
178afd81a9 Fixed lcc compiler warnings. 2005-12-19 19:47:14 +00:00
Yang Tse
d6eb1a7b98 Fix guard detection of _WIN32_WINNT for MingW in CURL_FUNC_GETNAMEINFO_ARGTYPES 2005-12-19 05:57:17 +00:00
Yang Tse
4ff56b15e9 Add check for 'unsigned int' as type of arguments 4 and 6 of getnameinfo 2005-12-19 05:32:33 +00:00
Yang Tse
e6b98d3152 Undo previous change. This header file belongs to the public
interface and the change could break the compilation of thrid
party apps which link against this library.
2005-12-19 00:15:04 +00:00
Yang Tse
5fd8dd2dce When checking the type of the first argument of getnameinfo do it in the
following order: 'struct sockaddr *' 'const struct sockaddr *' 'void *'.
2005-12-18 20:24:35 +00:00
Yang Tse
0ad3e046a4 Fix spacing. When defining, define to 1. 2005-12-18 16:50:33 +00:00
Yang Tse
d6c5d24af3 Cleanup windows header includes. Where aplicable, inclusion of
windows.h winsock.h winsock2.h ws2tcpip.h is done in setup.h
2005-12-18 15:36:14 +00:00
Yang Tse
8a3280a2de MingW guards getnameinfo, getaddrinfo and freeaddrinfo with _WIN32_WINNT >= 0x0501 2005-12-18 06:07:10 +00:00
Yang Tse
450a0a647a Fix Msys/Mingw not detecting getnameinfo() with AC_CHECK_FUNCS 2005-12-18 04:47:29 +00:00
Yang Tse
676c0cf123 Make it compatible with vc60 and vc71 2005-12-18 00:27:12 +00:00
Yang Tse
a731319321 Fix typo 2005-12-17 23:35:25 +00:00
Yang Tse
81b06a09b7 Fix compiler warning 2005-12-17 23:34:21 +00:00
Yang Tse
23b34744d9 Cleanup 2005-12-17 21:20:35 +00:00
Yang Tse
bc8590aa12 Windows related cleanup 2005-12-17 20:37:53 +00:00
Yang Tse
939d368d5f Check first arg of getnameinfo with and without const qualifier. 2005-12-17 17:33:14 +00:00
Yang Tse
336e3b8baf Change multiple header inclusion prevention definition to __LIB_CURL_SETUP_H 2005-12-17 06:04:35 +00:00
Yang Tse
47c06fa308 Avoid breaking configure due to CURL_FUNC_GETNAMEINFO_ARGTYPES failure, since at this point nothing depends on it. 2005-12-17 02:41:33 +00:00
Yang Tse
b7f447f8d8 const qualifier in getnameinfo check 2005-12-17 02:32:55 +00:00
Yang Tse
03af76b631 Since there is no proof of the existence of a platform which would
justify checking for socklen_t in more than one function, the code
used to find a valid socklen_t replacement is simplified back. The
only function that will be used to find a socklen_t replacement is
getpeername, as it has been since revision 1.4 of curl/acinclude.m4
2005-12-16 23:15:33 +00:00
Yang Tse
e105d5c28f 'Fix' windows builds 2005-12-16 20:55:07 +00:00
Yang Tse
d6ffb4c177 TYPE_SOCKLEN_T completely replaced by CURL_CHECK_TYPE_SOCKLEN_T.
CURL_FUNC_GETNAMEINFO_ARGTYPES now also checks first argument.
All related changes taken to cares configuration scripts.
2005-12-16 18:18:00 +00:00
Daniel Stenberg
6dbfce1031 Jean Jacques Drouin pointed out that you could only have a user name or
password of 127 bytes or less embedded in a URL, where actually the code
uses a 255 byte buffer for it! Modified now to use the full buffer size.
2005-12-16 14:52:16 +00:00
Yang Tse
fea5ddf585 More quotes 2005-12-16 07:28:56 +00:00
Yang Tse
b9f39c2711 Fix copy paste bug 2005-12-16 06:50:03 +00:00
Yang Tse
5acac0309a Test CURL_CHECK_TYPE_SOCKLEN_T 2005-12-16 05:05:55 +00:00
Yang Tse
78febad718 Oops. Wrong double quotes 2005-12-16 04:54:56 +00:00
Yang Tse
a6a5bba0a9 Experimental check for socklen_t CURL_CHECK_TYPE_SOCKLEN_T 2005-12-16 04:18:44 +00:00
Yang Tse
51581c034d Tests to check the availability of compilable and
valid windows.h winsock.h winsock2.h and ws2tcpip.h
header files:
CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_HEADER_WINSOCK
CURL_CHECK_HEADER_WINSOCK2
CURL_CHECK_HEADER_WS2TCPIP
2005-12-15 19:39:44 +00:00
Daniel Stenberg
8f25a95b47 minor edit 2005-12-15 07:43:39 +00:00
Yang Tse
7f5d092223 Some preprocessors have problems if the # character isn't at position 1. 2005-12-14 21:09:30 +00:00
Yang Tse
2e5cccd1b6 Check getnameinfo() argument types only if we have getnameinfo(). 2005-12-14 20:58:13 +00:00
Yang Tse
2645782f89 Determine the correct type to be passed to four of the getnameinfo' function's arguments, and define those types in GETNAMEINFO_TYPE_ARG2', GETNAMEINFO_TYPE_ARG46', and GETNAMEINFO_TYPE_ARG7'. 2005-12-14 19:00:44 +00:00
Daniel Stenberg
9533092511 Rene Bernhardt's corrections 2005-12-14 13:10:14 +00:00
Dan Fandrich
6005a461bb Log CPPFLAGS environment variable along with the others. 2005-12-13 19:07:33 +00:00
Dan Fandrich
e2df946eee Fixed some compiler warnings on lcc. 2005-12-13 18:54:31 +00:00
Yang Tse
d14588120f Undo last 'fix', since it was not the proper one. 2005-12-13 13:50:22 +00:00
Daniel Stenberg
ab31cfa664 another SOCKS-related problem added 2005-12-12 23:05:12 +00:00
Daniel Stenberg
af1c397969 added #29 and #30 2005-12-12 22:50:24 +00:00
Yang Tse
947f9deed5 Fix compiler warning 2005-12-12 18:40:18 +00:00
Dan Fandrich
ce95eee903 lcc isn't Windows-only, so check for it in conjunction with WIN32 2005-12-12 17:11:23 +00:00
Yang Tse
b15f3bb969 Undo last changes 2005-12-11 23:37:58 +00:00
Daniel Stenberg
998e8cba19 Dov Murik made defining HTTP_ONLY also disable TFTP 2005-12-11 23:14:25 +00:00
Yang Tse
e3f523ab2a Avoid generation of additional warnings 2005-12-11 18:29:18 +00:00
Yang Tse
36485e56ed Fix compiler warning and compatibility issue with the type of the parameter used in getnameinfo() to receive the length of the sockaddr struct. 2005-12-11 12:03:01 +00:00
Daniel Stenberg
b4113360f6 use c-ares' IPv6 abilities
fix CONNECT to a proxy that disconnects during the auth phase
2005-12-10 22:14:17 +00:00
Daniel Stenberg
2d71e22f08 fix CURLOPT_FAILONERROR error, pointed out by Shailesh N. Humbad 2005-12-10 22:12:44 +00:00
Yang Tse
2ae67c431c Modified lookup_service() to avoid the risk of a potential buffer overflow 2005-12-10 19:21:59 +00:00
Yang Tse
4b1a91b64f Fix compiler warning 2005-12-09 22:23:50 +00:00
Yang Tse
4f69318e12 Fix compiler warning 2005-12-09 21:09:21 +00:00
Yang Tse
1cc98ab50f Unset HAVE_STRUCT_SOCKADDR_STORAGE when using msvc 6.0 with no PSDK 2005-12-09 15:19:07 +00:00
Daniel Stenberg
a6494602fd build ulimiter too 2005-12-09 10:41:27 +00:00
Daniel Stenberg
50ec78b488 Work around the 1024 connection limit in select(), or rather in the FD_*
macros.
2005-12-09 10:41:07 +00:00
Daniel Stenberg
7d044d14f9 Handy little tool that increases the amount of max open file descriptors
and then runs a given command line.
2005-12-09 10:40:19 +00:00
Dan Fandrich
df03d5a8b2 Replaced nonstandard u_char and u_int types 2005-12-08 22:59:58 +00:00
Yang Tse
6a0ed81e67 Fix compiler warning 2005-12-08 20:38:04 +00:00
Yang Tse
c94f3e8188 Fix compiler warning 2005-12-08 19:47:33 +00:00
Dan Fandrich
1e5f6cc1dc Fixed a lingering omission of gzip support. 2005-12-08 18:59:19 +00:00
Yang Tse
b1fece74e3 Fix compiler warning 2005-12-08 16:43:32 +00:00
Yang Tse
fdbe0df6e7 Fix a couple of compiler warnings 2005-12-08 14:01:04 +00:00
Yang Tse
93d59520e4 If unable to get curl's version, log all failure details. 2005-12-08 11:29:47 +00:00
Daniel Stenberg
b68d3a073b Lots of updates to detect what problems we got. They are related
to the 1024 file descriptor limit in the server...
2005-12-07 15:43:32 +00:00
Daniel Stenberg
2100311f41 New version for testing connections against a local server for easier setting
up N idle and Z active connections in a controlled manner. This requires a
a HTTP server that supports the server end. I have a modified sws for this
(from the curl test suite) and I may commit the changes required for that
soonish.
2005-12-07 10:07:57 +00:00
Daniel Stenberg
e1269e3156 start working on 7.15.2 2005-12-06 23:36:36 +00:00
Daniel Stenberg
c88d61b044 fresh contributors in the 7.15.1 release 2005-12-06 23:34:53 +00:00
Daniel Stenberg
f49df54a36 7.15.1 with the now to be announced security flaw fixed 2005-12-06 23:05:51 +00:00
Daniel Stenberg
952bbc4410 my first collect-random-urls script, just for reference 2005-12-06 13:56:56 +00:00
Daniel Stenberg
1eb4b85d72 ok, these are the test build I've used so far 2005-12-06 13:56:28 +00:00
Daniel Stenberg
59b6cb9e91 Yang Tse: fixed compiler warning 2005-12-06 07:47:37 +00:00
Daniel Stenberg
e06afaeb7a Yang Tse: With last change logging directory needs to be created sooner. 2005-12-06 07:44:18 +00:00
Dan Fandrich
8c6f654b26 Added a run-time check to warn if TFTP is going to fail due to portability
issues in the code.
2005-12-05 20:07:05 +00:00
Daniel Stenberg
1d8212e53a Yang Tse: make runtests.pl more talkative when unable to find out curl's
version.
2005-12-05 19:23:56 +00:00
Daniel Stenberg
083c5e17e1 Yang Tse fixed: Openssl 0.9.9 makes 'const' the SSL_METHOD parameter in
SSL_CTX_new and others, and also makes functions SSLv23_client_method,
TLSv1_client_method, etc return a 'const' SSL_METHOD pointer. Previous
versions do not use the 'const' qualifier.
2005-12-05 15:14:04 +00:00
Daniel Stenberg
272231fb09 Another Yang Tse warning cleanup raid! 2005-12-05 14:10:48 +00:00
Gisle Vanem
67b4d9b232 Recent OpenSSL returns a 'const' in '*_client_method()'. So avoid
'assignment discards qualifiers from pointer target type' warning.
2005-12-04 18:47:36 +00:00
Daniel Stenberg
21709e1557 Yang Tse adjusted the multiple header inclusion prevention definition
H_MPRINTF to our more used style __CURL_MPRINTF_H
2005-12-02 23:23:49 +00:00
Daniel Stenberg
9c312637d1 Yang Tse's fix to only provide the proto if there is such a function and
we didn't find any proto
2005-12-02 23:22:45 +00:00
Daniel Stenberg
feacad7f68 Yang Tse fixed the 4th argument in the sendto() calls 2005-12-02 23:22:00 +00:00
Daniel Stenberg
6513303498 Jamie Newton pointed out that libcurl's file:// code would close() a zero
file descriptor if given a non-existing file.
2005-12-01 23:42:03 +00:00
Daniel Stenberg
3e2a52b034 #27 is fixed 2005-11-30 22:09:24 +00:00
Daniel Stenberg
176d4e85e9 cast the va_arg() assignment to ftp_filemethod properly 2005-11-30 13:09:48 +00:00
Daniel Stenberg
84d30dffb6 Yang Tse's fix of the inet_pton check 2005-11-29 16:17:53 +00:00
Daniel Stenberg
0fd282b078 new experimental "ftp method" code 2005-11-28 23:06:00 +00:00
Daniel Stenberg
cdf4afbe50 Bryan Henderson 2005-11-28 23:05:29 +00:00
Daniel Stenberg
b222b2304e Yang Tse's changes to provide an inet_pton() proto for the platforms who
don't have one in order to fix a remaining warning on IRIX 6.2.
2005-11-28 20:21:35 +00:00
Daniel Stenberg
fdf9900114 added note about the inclusion of curl.h from within this file 2005-11-28 07:43:53 +00:00
Daniel Stenberg
5867eb2dd2 Bryan Henderson: added missing ignores 2005-11-25 22:45:50 +00:00
Daniel Stenberg
61f145e3de Yang Tse fixed compiler warnings 2005-11-25 22:45:06 +00:00
Daniel Stenberg
b97e7fc730 read_tcp_data() fix to get the proper buffer pointer and size 2005-11-25 22:23:28 +00:00
Daniel Stenberg
01cbf08064 Yang Tse: fixes the use of Curl_inet_ntop and Curl_inet_pton with no
prototypes on some platforms, ie IRIX 6.2 MIPS C 6.2
2005-11-25 22:20:02 +00:00
Daniel Stenberg
fec632e948 Yang Tse: fixed compiler warnings 2005-11-25 22:14:53 +00:00
Daniel Stenberg
6aab5b57e1 Change based on Yang Tse's excellent fix to reduce buffer overflow risk and
fixing a compiler warning in the append_scopeid() function.
2005-11-25 22:14:28 +00:00
Daniel Stenberg
d2a27e02ce Doug Kaufman corrected my attempt to a generic "skip extra test for function
F"
2005-11-25 09:52:19 +00:00
Daniel Stenberg
b55506a76d avoid doing #if an a predef symbol that might not be defined 2005-11-24 23:03:25 +00:00
Daniel Stenberg
afc2aa2b3f Yang Tse: use static on file-private functions 2005-11-24 20:39:00 +00:00
Daniel Stenberg
d055b269ed Yang Tse: fix compilation errors when SSL is not disabled and HTTP is
disabled
2005-11-24 20:38:20 +00:00
Daniel Stenberg
8a246a4a9f Yang Tse: removes GOPHER protocol when HTTP is disabled 2005-11-24 20:37:13 +00:00
Gisle Vanem
2f684351bf Changes for OpenWatcom 1.4. 2005-11-24 20:33:38 +00:00
Daniel Stenberg
74e5beab9d Doug Kaufman's set of patches to make curl build fine on DJGPP again using
configure.
2005-11-24 10:22:46 +00:00
Daniel Stenberg
b41765f441 mention the colon-only thing for -u and SSPI+NTLM 2005-11-24 07:20:13 +00:00
Daniel Stenberg
05a6013f42 Yang Tse's patch to silence MSVC warnings 2005-11-23 22:59:24 +00:00
Daniel Stenberg
cfff544d67 only enable NTLM if HTTP and NTLM is not disabled, and if NTLM is disabled
we define an empty macro for the ntlm cleanup function
2005-11-23 11:51:31 +00:00
Daniel Stenberg
599d9642ca Yang Tse fixed MSVC 6.0 warnings 2005-11-23 09:10:00 +00:00
Daniel Stenberg
0264faaa4e fix compiler warning 2005-11-18 07:23:50 +00:00
Daniel Stenberg
4022a60ea7 I extended a patch from David Shaw to make libcurl _always_ provide an error
string in the given error buffer to address the flaw mention on 21 sep 2005.
2005-11-17 14:29:54 +00:00
Daniel Stenberg
39e366fc11 TFTP 2005-11-17 14:28:58 +00:00
Daniel Stenberg
096675824f Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
installed on 'make install' time.
2005-11-16 07:20:57 +00:00
Daniel Stenberg
80bfa76ac9 check for and use winsock2.h instead of winsock.h and I fixed a typo in the
ifdefs where . was used instead of _!
2005-11-16 07:12:37 +00:00
Daniel Stenberg
b2e553a82e include ws2tcpip.h in an attempt to detect some of the ipv6 structs better
in mingw builds
2005-11-15 14:39:52 +00:00
Daniel Stenberg
772b64d9d3 Detect big/little endian in the configure script and adjust the ares_dns.h
macros accordingly.
2005-11-14 23:14:54 +00:00
Daniel Stenberg
92c0de518e Quagmire reported that he needed to raise a NTLM buffer for SSPI to work
properly for a case, and so we did. We raised it even for non-SSPI builds
but it should not do any harm. http://curl.haxx.se/bug/view.cgi?id=1356715
2005-11-14 22:10:52 +00:00
Gisle Vanem
ff96456513 Added '-DHAVE_SOCKADDR_IN6_SIN6_SCOPE_ID'. 2005-11-14 13:40:16 +00:00
Gisle Vanem
e89adbef51 Added CVS id.
Avoid warning 'x might be used uninitialized in this function'.
2005-11-14 13:26:17 +00:00
Gisle Vanem
22a6a6cf81 We have HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID. 2005-11-14 12:32:56 +00:00
Daniel Stenberg
fd870e4e8a Yang Tse: msvc7+ has deprecated the 'DESCRIPTION' section in
module-definition files. this section is not mandatory for msvc60 so it
could be completely removed from libcurl.def.
2005-11-14 07:48:05 +00:00
Daniel Stenberg
d52ed3fff2 Jan Kunder's debian bug report
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338680 identified a weird
error message for when you try to upload a file and the requested directory
doesn't exist on the target server.
2005-11-14 00:18:12 +00:00
Daniel Stenberg
bac17ab7d8 extended the description for exit code 9 2005-11-14 00:17:03 +00:00
Daniel Stenberg
9ace303528 Yang Tse fixed compiler warnings 2005-11-13 23:53:14 +00:00
Daniel Stenberg
7e81c35cdc to build with old gnutls verions, don't use the *_t types 2005-11-13 23:04:28 +00:00
Daniel Stenberg
0f125d9bcf prevent compiler warning 2005-11-13 22:54:00 +00:00
Gisle Vanem
d4714517c0 Add HAVE_STRUCT_SOCKADDR_STORAGE.
My mistake; WinCE has it's own config-file.
2005-11-13 13:32:19 +00:00
Gisle Vanem
280e4bf4c3 Fix for WIN32. WIN32 does have 'struct sockaddr_storage', but
that's in <winsock2.h>. Hence tftp.c wouldn't compile on WinCE.
2005-11-13 13:20:37 +00:00
Daniel Stenberg
adf462fe05 Debian bug report 338681 by Jan Kunder: make curl better detect and report bad
limit-rate units: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now
curl will return error if a bad unit is used.
2005-11-13 11:06:48 +00:00
Daniel Stenberg
c2862742ab Thanks to this nice summary of poll() implementations:
http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
connection closure so we check for that case (too) and re-enable poll for
cygwin builds.
2005-11-13 09:24:06 +00:00
Daniel Stenberg
8a712eb5af Eugene Kotlyarov found out that cygwin's poll() function isn't doing things
right: http://curl.haxx.se/mail/archive-2005-11/0045.html so we now disable
poll() and use select() on cygwin too (we already do the same choice on Mac OS
X)
2005-11-12 22:49:19 +00:00
Daniel Stenberg
d58790af17 oops * 2 2005-11-12 22:13:20 +00:00
Daniel Stenberg
9ef7a13403 oops 2005-11-12 22:12:42 +00:00
Daniel Stenberg
a5da1219bb Reversed the logic for sockaddr_storage and made our own Curl_sockaddr_storage
struct instead to use.
2005-11-12 22:10:42 +00:00
Daniel Stenberg
be524fed38 on windows (mingw32) the sockaddr_storage struct is in winsock2.h 2005-11-12 19:11:02 +00:00
Gisle Vanem
042016b85e Fixed typo. Detabified. 2005-11-12 18:33:32 +00:00
Gisle Vanem
f6da574324 Support big-endian machines. 2005-11-12 15:15:27 +00:00
Gisle Vanem
b09d5c3135 Added CVS id, Detabified, applied c-ares coding-style. 2005-11-12 14:59:33 +00:00
Gisle Vanem
ec65c3fd53 Added CVS id. Detabified. 2005-11-12 14:44:26 +00:00
Gisle Vanem
7ca2f31c8d Include <getopt.h>.
Use DNS__32BIT() and DNS__16BIT()  (How about BE machines?).
Display T_AAAA resource.
2005-11-12 14:41:12 +00:00
Daniel Stenberg
2275737a5d removed files no longer existing 2005-11-12 00:01:50 +00:00
Daniel Stenberg
5e3836055f Dima Barsky patched problem #1348930: the GnuTLS code completely ignored
client certificates! (http://curl.haxx.se/bug/view.cgi?id=1348930).
2005-11-11 23:20:07 +00:00
Daniel Stenberg
37a6a0bb3e Moved the sockaddr_storage definition to lib/sockaddr.h and only include that
in files that actually need the struct.
2005-11-11 22:04:11 +00:00
Gisle Vanem
6bcca3eca9 Squelch gcc 4.x warning. 2005-11-11 19:25:29 +00:00
Gisle Vanem
ce40b8d531 Detabified. Added CVS id. 2005-11-11 19:20:22 +00:00
Gisle Vanem
9f109b94b8 HAVE_xx defines moved to config-win32.h. 2005-11-11 19:14:51 +00:00
Daniel Stenberg
89024febde mention how to set domain when using NTLM 2005-11-11 08:52:29 +00:00
Gisle Vanem
b7a673c6e2 Update using ares_inet_pton() and ares_inet_ntop(). 2005-11-11 04:28:23 +00:00
Daniel Stenberg
7f68be770d one in, one out 2005-11-10 23:30:54 +00:00
Daniel Stenberg
4f173f35db Fun while it lasted. New mirror already out-of-date. 2005-11-10 23:24:09 +00:00
Daniel Stenberg
ae9fbe573e David Lang fixed IPv6 support for TFTP! 2005-11-10 22:25:07 +00:00
Daniel Stenberg
29676f473d David Lang: if there is no sockaddr_storage, make up our own and use that 2005-11-10 22:24:49 +00:00
Daniel Stenberg
a5fcb26ab1 modified to the new error text for range error 2005-11-10 22:22:38 +00:00
Daniel Stenberg
d68b1a1e8c just implemented 2005-11-10 22:11:27 +00:00
Daniel Stenberg
bd8baed138 Introducing range stepping to the curl globbing support. Now you can specify
step counter by adding :[num] within the brackets when specifying a range.
2005-11-10 22:11:01 +00:00
Gisle Vanem
00a7dda273 Use config-win32.h on Windows. Fixes for djgpp. 2005-11-10 16:55:59 +00:00
Gisle Vanem
4dba07c384 Defines moved to config-win32.h. 2005-11-10 16:52:43 +00:00
Gisle Vanem
4d39c6b7cc Easy configuration with this file. 2005-11-10 16:50:21 +00:00
Gisle Vanem
7d6f6158c9 Remove generated files areslib.plg areslib.mak from CVS. 2005-11-10 16:42:07 +00:00
Gisle Vanem
6863dbbc0c Remove generated files ahost.plg ahost.mak from CVS. 2005-11-10 16:40:08 +00:00
Gisle Vanem
28b96efd8b Remove generated files adig.plg adig.mak from CVS. 2005-11-10 16:38:17 +00:00
Daniel Stenberg
0f82af0f49 * Add step parameter to the globbing. Like [0-1000;10] that would walk the
range increasing the number with 10 for every step. Requested by Jose:
  http://curl.haxx.se/feedback/display.cgi?id=11315662266802
2005-11-09 23:15:04 +00:00
Gisle Vanem
f0d839436f Update with "new" HAVE_xx. 2005-11-09 22:52:45 +00:00
Gisle Vanem
f1aa4b4127 Replace <winsock.h> with <winsock2.h>
since IPv6 support is required.
2005-11-09 22:32:45 +00:00
Gisle Vanem
ccdb43f7f1 Add cvs id. 2005-11-09 22:18:13 +00:00
Gisle Vanem
72900f0f90 Added Makefile.vc6. 2005-11-09 22:17:13 +00:00
Gisle Vanem
3ad958ddb1 I hate MS-devstudio project files. 2005-11-09 22:16:58 +00:00
Gisle Vanem
2c77cc90f4 Updated for MingW. Added inet_ntop.o inet_net_pton.o bitncmp.o.
Added -D'efines'.
2005-11-09 21:51:44 +00:00
Gisle Vanem
db4c33b4fb MSVC fix for 'socklen_t'. Replace <winsock.h> with <winsock2.h> +
<ws2tcpip.h> since IPv6 is no longer optional (was it ever?)
2005-11-09 21:38:58 +00:00
Gisle Vanem
3fb04115fc Fixes for building with MSVC-6/7. Added inet*.c.
Replace <winsock.h> with <winsock2.h> + <ws2tcpip.h>
(ala libcurl since IPv6 is not optional now).
2005-11-09 21:32:47 +00:00
Gisle Vanem
4faaa32aef Fixes for building ahost with MSVC-6/7. Added inet*.c. 2005-11-09 21:29:34 +00:00
Daniel Stenberg
cab59b4c32 Removed the use of AI_CANONNAME in the IPv6-enabled resolver functions since
we really have no use for reverse lookups of the address.

I truly hope these are the last reverse lookups we had lingering in the
code!
2005-11-08 14:45:58 +00:00
Daniel Stenberg
931eff89f5 SSPI-fix and a new mirror 2005-11-08 14:37:15 +00:00
Daniel Stenberg
175335808b Dmitry Bartsevich discovered some issues in compatibilty of SSPI-enabled
version of libcurl with different Windows versions. Current version of
libcurl imports SSPI functions from secur32.dll. However, under Windows NT
4.0 these functions are located in security.dll, under Windows 9x - in
secur32.dll and Windows 2000 and XP contains both these DLLs (security.dll
just forwards calls to secur32.dll).

Dmitry's patch loads proper library dynamically depending on Windows
version. Function InitSecurityInterface() is used to obtain pointers to all
of SSPI function in one structure.
: ----------------------------------------------------------------------
2005-11-08 14:15:34 +00:00
Daniel Stenberg
e00216581e 27. "libcurl built with GNUTLS ignores the SSLCERT option" - Unlike
Curl_ossl_connect(), the Curl_gtls_connect() function does not send the user
  certificate to the peer. In fact, it ignores the conn->data->set.cert field
  completely, it always uses the anonymous credentials. See
  http://curl.haxx.se/bug/view.cgi?id=1348930
2005-11-07 13:54:14 +00:00
Daniel Stenberg
23951ec00c mention the need for a "fake" -u when --negotiate is used 2005-11-07 08:37:08 +00:00
Daniel Stenberg
a8fc5d0f9f CurlPas 2005-11-05 was released: http://curlpas.sf.net/ 2005-11-05 23:39:08 +00:00
Daniel Stenberg
f5e85bab1c oops 2005-11-02 09:38:58 +00:00
Daniel Stenberg
9a44fa83dc Added:
1.9 Where do I buy commercial support for curl?
 1.10 How many are using curl?
 6.7 What are my obligations when using libcurl in my commerical apps?

Edited a few other paragraphs slightly.
2005-11-02 09:34:53 +00:00
Gisle Vanem
6b1e54da62 Use an empty '*mod_name'. 2005-11-01 16:27:27 +00:00
Daniel Stenberg
b91421b107 Vilmos Nebehaj improved libcurl's LDAP abilities:
The LDAP code in libcurl can't handle LDAP servers of LDAPv3 nor binary
attributes in LDAP objects. So, I made a quick patch to address these
problems.

The solution is simple: if we connect to an LDAP server, first try LDAPv3
(which is the preferred protocol as of now) and then fall back to LDAPv2.
In case of binary attributes, we first convert them to base64, just like the
openldap client does. It uses ldap_get_values_len() instead of
ldap_get_values() to be able to retrieve binary attributes correctly. I
defined the necessary LDAP macros in lib/ldap.c to be able to compile
libcurl without the presence of libldap
2005-10-31 08:55:01 +00:00
Daniel Stenberg
43b3954fa5 kill trailing whitespace 2005-10-31 08:47:54 +00:00
Daniel Stenberg
80f2e3f263 test 275 makes a CONNECT through a proxy and then gets two pages from the
same server
2005-10-30 23:15:49 +00:00
Daniel Stenberg
9ea423b4c1 --max-redirs 0 2005-10-29 22:22:18 +00:00
Daniel Stenberg
b259c9c535 re-arranged the win32 section and added a pointer to the INSTALL.devcpp
document
2005-10-29 22:18:58 +00:00
Daniel Stenberg
80f481a5f7 Tom Kyer's DevCpp-Mingw Install & Compilation guide 2005-10-28 21:34:51 +00:00
Daniel Stenberg
115fe1b577 mention brokenness 2005-10-28 12:59:37 +00:00
Daniel Stenberg
06d6ea651e elaborated somewhat in the license chapter 2005-10-28 07:22:45 +00:00
Daniel Stenberg
966fa848a0 Nis Jorgensen filed bug report #1338648
(http://curl.haxx.se/bug/view.cgi?id=1338648) which really is more of a
feature request, but anyway. It pointed out that --max-redirs did not allow
it to be set to 0, which then would return an error code on the first
Location: found. Based on Nis' patch, now libcurl supports CURLOPT_MAXREDIRS
set to 0, or -1 for infinity. Added test case 274 to verify.
2005-10-27 22:05:38 +00:00
Daniel Stenberg
6f8fe67ace tommink[at]post.pl reported in bug report #1337723
(http://curl.haxx.se/bug/view.cgi?id=1337723) that curl could not upload
binary data from stdin on Windows if the data contained control-Z (hex 1a)
since that is treated as end-of-file when read in text mode. Gisle Vanem
pointed out the fix, and I made both -T and --data-binary take advantage of
it.
2005-10-27 21:02:01 +00:00
Daniel Stenberg
d49edc8e09 updates to reflect current status in Debian land, and added some known
differences between OpenSSL and GnuTLS (that is probably a suitable subject
for a separate document...)
2005-10-27 20:51:43 +00:00
Gisle Vanem
3b9c20fe31 Removed dependency on zlib.h. Added dependency for
..\lib\timeval.c.
2005-10-27 12:56:05 +00:00
Gisle Vanem
bd72c5eacf Added option '-zc' puts const data in code-segment.
Added CURL_DISABLE_TFTP; tftp.c doesn't compile as-is.
2005-10-27 12:45:31 +00:00
Daniel Stenberg
9d152a77fd Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described
in the man page, curl would send an invalid HTTP Range: header. The correct
way would be to use "-r [number]-" or even "-r -[number]". Starting now,
curl will warn if this is discovered, and automatically append a dash to the
range before passing it to libcurl.
2005-10-27 12:05:36 +00:00
Daniel Stenberg
33dc28b905 multi IP socket description leak with multi interface 2005-10-25 14:05:21 +00:00
Daniel Stenberg
43ce64dcca added new dutch mirror and removed the "--" separators 2005-10-25 14:04:54 +00:00
Daniel Stenberg
9e0882ba98 close the existing socket when trying next IP, as otherwise we leak one!
bug #1326306
2005-10-25 13:15:11 +00:00
Daniel Stenberg
c890149c8c Dima Barsky reported a problem with GnuTLS-enabled libcurl in bug report
#1334338 (http://curl.haxx.se/bug/view.cgi?id=1334338). When reading an SSL
  stream from a server and the server requests a "rehandshake", the current
  code simply returns this as an error. I have no good way to test this, but
  I've added a crude attempt of dealing with this situation slightly better -
  it makes a blocking handshake if this happens. Done like this because fixing
  this the "proper" way (that would handshake asynchronously) will require
  quite some work and I really need a good way to test this to do such a
  change.
2005-10-22 21:05:07 +00:00
Daniel Stenberg
1a1ab2e2e8 "Ofer" reported a problem when libcurl re-used a connection and failed to do
it, it could then accidentally actually crash. Presumably, this concerns FTP
connections.  http://curl.haxx.se/bug/view.cgi?id=1330310
2005-10-21 21:00:44 +00:00
Daniel Stenberg
715b706caa Temprimus improved the MSVC makefile so that the static debug SSL libs are
linked to the executable and not to the libcurld.lib
http://curl.haxx.se/bug/view.cgi?id=1326676
2005-10-21 19:32:12 +00:00
Daniel Stenberg
bfa9c42c25 Bradford Bruce made the windows resolver code properly return
CURLE_COULDNT_RESOLVE_PROXY and CURLE_COULDNT_RESOLVE_HOST on resolving
errors (as documented).
2005-10-21 19:21:19 +00:00
Daniel Stenberg
9d98f97e1b shorted and unified language in the --help output 2005-10-20 21:19:19 +00:00
Daniel Stenberg
5eb5ce6ff3 2 gone, 2 added, 1 moved, 1 changed name 2005-10-20 21:01:51 +00:00
Daniel Stenberg
be9c873a6e Dave Dribin made libcurl understand and handle cases when the server
(wrongly) sends *two* WWW-Authenticate headers for Digest. While this should
never happen in a sane world, libcurl previously got into an infinite loop
when this occurred. Dave added test 273 to verify this.
2005-10-20 20:07:32 +00:00
Daniel Stenberg
034d80f6cd 2 mirrors, 1 binding release 2005-10-20 19:40:30 +00:00
Daniel Stenberg
021e786c71 Added a dump_addrinfo() function to ease debugging of resolved names. Define
DEBUG_ADDRINFO to enable.
2005-10-20 19:40:02 +00:00
Daniel Stenberg
0c6bb8cb66 Temprimus improved the MSVC makefile: "makes a build option available so if
you set rtlibcfg=static for the make, then it would build with /MT. The
default behaviour is /MD (the original)."
http://curl.haxx.se/bug/view.cgi?id=1326665
2005-10-20 19:07:33 +00:00
Dan Fandrich
4d7f08a99e Removed mention of TFTP now that it's implemented. 2005-10-18 18:15:01 +00:00
Daniel Stenberg
fdef584681 Mohun Biswas' suggested change to prevent GNU indent to warn on the =-1 line. 2005-10-18 07:26:43 +00:00
Daniel Stenberg
f335bac8a3 Reverted the LIBCURL_VERSION_NUM change from October 6. As Dave Dribin
reported, the define is used by the configure script and is assumed to use
the 0xYYXXZZ format. This made "curl-config --vernum" fail in the 7.15.0
release version.
2005-10-14 21:21:51 +00:00
Daniel Stenberg
51369753bb Reported by 'TemPRImus' in bug 1326665: use the "Multi-Threaded" options even
when building the static library. http://curl.haxx.se/bug/view.cgi?id=1326665
2005-10-14 13:22:49 +00:00
Daniel Stenberg
82a4c2bce3 Slight editing of wording in the CURLOPT_SSL_VERIFYHOST section. 2005-10-13 21:49:28 +00:00
Daniel Stenberg
e73c6e039e start working on 7.15.1 2005-10-13 09:23:51 +00:00
Daniel Stenberg
19bad0844f added names from the 7.15.0 release 2005-10-13 09:22:31 +00:00
Daniel Stenberg
96cec4dfd7 7.15.0 time 2005-10-13 08:19:09 +00:00
Daniel Stenberg
943aea6267 Make sure that the user and domain strings fit in the target buffer before we
copy them there.
2005-10-13 07:57:51 +00:00
Daniel Stenberg
b433e4a1e7 NTLM requires windows or OpenSSL. If you build with GnuTLS for example you
do not get NTLM support enabled.
2005-10-13 06:20:43 +00:00
Daniel Stenberg
20f1966c0e 7.15.0 in november? 2005-10-11 12:54:44 +00:00
Daniel Stenberg
ab1f5c3edd make it compile warning-free and free() the memory before exit 2005-10-10 20:58:18 +00:00
Daniel Stenberg
b2be6799f2 pass a NULL pointer in the service argument (the second) if the port number
was 0 as it seems at least some AIX versions don't like a "0" string there
2005-10-10 18:28:05 +00:00
Gisle Vanem
ea2618fc6f Added tftp.obj. 2005-10-06 18:47:05 +00:00
Daniel Stenberg
62fdf8eaed we all the next version 7.15.0 due to the new TFTP support 2005-10-06 12:56:13 +00:00
Daniel Stenberg
d3569a3572 remove getinfo-times from the dist archive since the info is now in the
curl_easy_getinfo man page
2005-10-06 09:05:08 +00:00
Daniel Stenberg
89df76e449 end the .nf section, mark the option names properly so that they end up
as links in the html version
2005-10-06 09:03:36 +00:00
Daniel Stenberg
e5b2f33b4f Added the info from getinfo-times as it really belongs in this man page. 2005-10-06 08:58:44 +00:00
Daniel Stenberg
934d312f50 mention the recent fixes 2005-10-05 09:15:20 +00:00
Daniel Stenberg
68917eb517 added test case 272 for -z download over FTP when the timestamp is identical
to the remote one
2005-10-05 06:23:45 +00:00
Daniel Stenberg
3beb2f6b5d CURL_TIMECOND_IFMODSINCE actually requires that the remote document has been
modded since the given time, so we should compare <= and not just <.
2005-10-05 06:09:20 +00:00
Daniel Stenberg
b29017f15b Domenico Andreoli's patch that removes a few 0xa0(!) bytes 2005-10-04 20:32:17 +00:00
Daniel Stenberg
db83a0ebbc Michael Wallner reported that the date parser had wrong offset stored for
the MEST and CEST time zones.
2005-10-04 18:15:33 +00:00
Daniel Stenberg
6d9fddb95d Domenico Andreoli's SEE ALSO patch 2005-10-04 10:58:14 +00:00
Daniel Stenberg
4284190cc4 Ok, based on the online docs for AIX'es getservbyport_r() I adjusted to code
to do (what I believe is) "right". See docs on:
http://publib.boulder.ibm.com/infocenter/pseries/index.jsp?topic=/com.ibm.aix.doc/libs/commtrf2/getservbyport_r.htm
2005-10-03 10:12:06 +00:00
Daniel Stenberg
5e4cbd2d24 recent action 2005-10-03 08:38:07 +00:00
Gisle Vanem
06c3bec65d Avoid gcc warning "dereferencing type-punned pointer
will break strict-aliasing rules".
2005-10-02 18:22:45 +00:00
Gisle Vanem
e8c3bb45ba Fix for building with MS Visual-C and single-threaded
runtime libs.
2005-10-02 16:52:07 +00:00
Daniel Stenberg
4ec55a964d fixed the proper path to the tftpd server 2005-09-30 14:25:50 +00:00
Daniel Stenberg
b9420864c0 a new mirror, but we don't increase the amount since one of the former ones
are now officially no longer considered a mirror... ;-)
2005-09-30 08:59:33 +00:00
Daniel Stenberg
bf6588b6a7 Update in the "which license is best" section as it seems Debian people have
made up their mind. Spell-checked as well.
2005-09-30 08:34:51 +00:00
Daniel Stenberg
e43217e664 Starting now, the verbose text that goes like "About to connect() to" will
now contain the word "proxy" is the hostname is in fact a proxy. This will
help users detect situations when they mistakenly use a proxy.
2005-09-29 11:37:52 +00:00
Daniel Stenberg
e19ee2d102 David Yan brought the Content-Range report 2005-09-27 20:22:13 +00:00
Daniel Stenberg
b4c53e2cfd An anonymous submitter filed bug #1299181
(http://curl.haxx.se/bug/view.cgi?id=1299181) that identified a silly problem
with Content-Range: headers with the 'bytes' keyword written in a different
case than all lowercase! It would cause a segfault!
2005-09-27 09:13:39 +00:00
Daniel Stenberg
a2902de67c TJ Saunders of the proftpd project identified and pointed out problems with
the modified FTPS negotiation change of August 19 2005. Thus, we revert the
change back to pre-7.14.1 status.
2005-09-27 08:46:54 +00:00
Daniel Stenberg
da192f7955 clarify what the default read callback does and how it uses the READDATA
option
2005-09-22 10:15:10 +00:00
Daniel Stenberg
a2210d23c3 three debian bug reports addressed 2005-09-21 11:29:03 +00:00
Daniel Stenberg
bd5a622400 stricter type usage for time variables to avoid picky compiler warnings 2005-09-21 11:28:40 +00:00
Daniel Stenberg
b9494cb0d6 1 - attempted fix of uninitialized variable
2 - indented and edited to fit better within 80 columns
3 - fixed possible buffer overflow in the service name lookup function
2005-09-21 10:45:25 +00:00
Daniel Stenberg
0f73af4470 simplified the sin6_scope_id test and removed some left-overs from the previous
way of detecting it
2005-09-21 09:10:17 +00:00
Daniel Stenberg
45e26b5c02 fixed the check for the addrinfo struct 2005-09-21 09:01:44 +00:00
Daniel Stenberg
6af5ea38ce clarified ERRORBUFFER - some errors just don't write a string even though
they should. And I removed all uses 'Note' (as they are pretty useless) and
did some other language and phrasing cleanups.
2005-09-21 06:59:01 +00:00
Daniel Stenberg
b6f0aa4394 return an error string for the missing URL case 2005-09-21 06:38:33 +00:00
Daniel Stenberg
774dab58f6 mention what WRITEFUNCTION and WRITEDATA do by default 2005-09-21 06:12:41 +00:00
Daniel Stenberg
e3bdb98f7a oops, broken sentence fixed:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329305
2005-09-21 06:07:41 +00:00
Daniel Stenberg
58d628c9f8 Uses __stdcall instead of SEC_ENTRY since it seems (at least) mingw doesn't
define SEC_ENTRY and thus fails unless this is done!
2005-09-20 08:29:56 +00:00
Daniel Stenberg
1e69394545 Since newer ares versions should work with ipv6, I modified the error message
to a warning message as a first step. We should persue to make curl use
c-ares properly even when built with ipv6 support.
2005-09-20 07:53:44 +00:00
Daniel Stenberg
1cf798ad14 typecasts added in an attempt to please the picky compilers 2005-09-20 06:51:23 +00:00
Daniel Stenberg
da3992d2e9 added test 271 2005-09-19 22:04:14 +00:00
Daniel Stenberg
48908e4633 test 271, the first ever TFTP test 2005-09-19 22:04:06 +00:00
Daniel Stenberg
f5ae149338 seems to work for test 271 on Linux now! 2005-09-19 22:03:16 +00:00
Daniel Stenberg
3fe5311967 Dmitry Bartsevich made the SSPI support work on Windows 9x as well 2005-09-19 21:45:16 +00:00
Dominick Meglio
6a48639c68 Added constants that will be used by ares_getaddrinfo. Made ares_getnameinfo use the reentrant getservbyport (getservbyport_r) if it isavailable to ensure it works properly in a threaded environment 2005-09-18 16:44:49 +00:00
Daniel Stenberg
e7093b3ca8 keep 'socktype' in the connectdata struct and make sure we use that for all
protocol sockets even if the resolved address may say otherwise
2005-09-16 21:30:08 +00:00
Daniel Stenberg
d0a4104c0c recent changes 2005-09-16 21:03:26 +00:00
Daniel Stenberg
90559bed53 renamed sendfile() since some systems have a system call named like this -
now the functions are named sendtftp() and recvtftp() instead.
2005-09-16 10:52:38 +00:00
Daniel Stenberg
973a18cf03 In the Solaris 7 header files for tftp, the th_stuff struct member is an
unsigned short. Trying a typecast here to fix.
2005-09-16 10:50:43 +00:00
Daniel Stenberg
3c666ce57a prevent warnings on re-defining MIN 2005-09-16 07:19:54 +00:00
Daniel Stenberg
a1287ec64f added URLs to bug reports 2005-09-16 07:18:25 +00:00
Daniel Stenberg
5fbfa1bfa8 Added known bugs #26, started using my new "bounce URL" that jumps to the
correct (and overly complicated) sourceforge bug tracker URL given the bug
report ID number.
2005-09-16 07:09:07 +00:00
Daniel Stenberg
da3ecc91f8 use int "subscripts" to prevent warnings from picky compilers 2005-09-16 06:14:30 +00:00
Daniel Stenberg
09c8f558f7 use internal *printf() clones 2005-09-16 05:49:53 +00:00
Daniel Stenberg
528a149def ifdef for includes, added checking for two not previously checked files (one
being necessary for solaris builds)
2005-09-15 21:50:50 +00:00
Daniel Stenberg
29e36afb6b use make -k when running the tests 2005-09-15 21:49:26 +00:00
Daniel Stenberg
0e39543d35 ignore this too 2005-09-15 20:36:58 +00:00
Daniel Stenberg
0de20d8ee6 build tftpd too! 2005-09-15 20:36:28 +00:00
Daniel Stenberg
cd5de5c0e5 First version of the TFTP server. Basic functionality is there. 2005-09-15 20:32:59 +00:00
Daniel Stenberg
bd5afc26bd added TFTP and TFTP-ipv6 support 2005-09-15 20:25:02 +00:00
Daniel Stenberg
9542dfdcdc moved test2file() to util.c 2005-09-15 20:22:43 +00:00
Daniel Stenberg
97a6d7b1a8 minor changes, the biggest one being using Curl_select() 2005-09-15 20:21:27 +00:00
Daniel Stenberg
209b9d4374 mention the configure change 2005-09-15 19:23:31 +00:00
Daniel Stenberg
0b8ccd0ae7 oops, return error if an error did occur! 2005-09-14 15:04:01 +00:00
Daniel Stenberg
0b7f5ad508 CURLOPT_BUFFERSIZE clarification 2005-09-12 20:36:17 +00:00
Daniel Stenberg
8a38805e82 Use the AC_CHECK_MEMBER() function for check struct members instead of
inventing and providing our own. Hopefully this solves a HP-UX 11.00 problem.
2005-09-10 21:09:44 +00:00
Daniel Stenberg
836d88a4b8 --max-time should work just as good on win32 these days 2005-09-08 20:21:52 +00:00
Daniel Stenberg
d5268ed511 mention the protocol-guessing when no protocol part is given in the URL
added TFTP to the list of supported protocols
2005-09-08 06:16:46 +00:00
Daniel Stenberg
0e7d93858d added tftp.c 2005-09-07 14:42:15 +00:00
Daniel Stenberg
2164d760b7 Ben Madsen reported a problem that only seemed to occur with certain specific
glibc versions, and with this patch applied it no longer shows up to me. The
problem was indeed a flaw that made curl use a file handle already closed.
2005-09-07 11:05:34 +00:00
Daniel Stenberg
b9c8de598b Thanks to Scott Davis' detailed reports, I found this premature detection
of the end of a chunked-encoded POST request.
2005-09-07 10:51:37 +00:00
Gisle Vanem
9889a811db Fix warning about missing initializers. 2005-09-06 15:58:09 +00:00
Gisle Vanem
9e38d882b9 Fix for bind() on Winsock; AF_UNSPEC (0) is illegal.
Should we do this for all targets?
2005-09-06 15:43:14 +00:00
Daniel Stenberg
e8635044b5 Now curl warns if an unknown variable is used in the -w/--writeout argument. 2005-09-06 13:27:18 +00:00
Daniel Stenberg
56dea0ac9a binding updates 2005-09-06 11:53:24 +00:00
Daniel Stenberg
e8b77477c7 sockets are curl_socket_t to build cleaner 2005-09-06 10:39:01 +00:00
Daniel Stenberg
64298e528d Use SOCK_DGRAM for TFTP. Consider setting this up at one central place, we
have this check done on far too many places by now...
2005-09-06 10:37:57 +00:00
Gunter Knauf
4f1465e7c7 minor Makefile fixes. 2005-09-06 00:39:41 +00:00
Daniel Stenberg
6120041b69 Added the people from the 7.14.1 release announcement. 2005-09-05 14:22:01 +00:00
Daniel Stenberg
8c1213627d new release, work has been "initiated" 2005-09-05 06:03:06 +00:00
Daniel Stenberg
3e6ae6eeb8 mention the recent improvements 2005-09-04 22:10:03 +00:00
Daniel Stenberg
291e9aeabd don't start lines with apostrophes! 2005-09-04 21:53:10 +00:00
Daniel Stenberg
a3d776187a check that bind() returns success 2005-09-04 18:33:20 +00:00
Daniel Stenberg
e55f502e2f --protocols now supports TFTP 2005-09-04 18:15:24 +00:00
Daniel Stenberg
e369270f88 7.14.2 actually 2005-09-04 05:23:08 +00:00
Daniel Stenberg
7e845e7cfd Added FTP_SKIP_PASV_IP and --ftp-skip-pasv-ip 2005-09-04 05:16:06 +00:00
Daniel Stenberg
56d9624b56 John Kelly added TFTP support to libcurl. A bunch of new error codes was
added. TODO: add them to docs. add TFTP server to test suite. add TFTP to
list of protocols whereever those are mentioned.
2005-09-02 15:11:08 +00:00
Daniel Stenberg
911d135deb explain why the ABI depends on the SSL libs 2005-09-02 13:40:07 +00:00
Daniel Stenberg
8107b90678 use -c to automake to copy the new files 2005-09-01 21:41:35 +00:00
Daniel Stenberg
7722452b98 work on 7.14.2 starts now 2005-09-01 21:08:56 +00:00
Daniel Stenberg
6e1a986e0f 7.14.1 coming right up 2005-09-01 20:54:00 +00:00
Daniel Stenberg
e0785ade35 softened my opinions, added API benefit - Thanks to Eric Cooper 2005-09-01 15:03:45 +00:00
Daniel Stenberg
0177ed6f03 clarify that the ctxfunc is called on all new connects 2005-09-01 13:41:29 +00:00
Daniel Stenberg
c62635a3b5 added DISTRO-DILEMMA 2005-09-01 08:44:39 +00:00
Daniel Stenberg
0177476fd2 added the URL 2005-09-01 08:43:44 +00:00
Daniel Stenberg
76d7dface7 new 2005-09-01 08:35:59 +00:00
Daniel Stenberg
982ba21460 oops, the GNU GSS patch could clobber the CPPFLAGS variable and it thus
broke krb4 builds!
2005-08-31 21:23:47 +00:00
Daniel Stenberg
6081c60556 ocurl release 2005-08-31 20:51:41 +00:00
Daniel Stenberg
2fe3c22108 use it as 'struct addrinfo' so perhaps it builds on mingw again 2005-08-31 06:04:48 +00:00
Gunter Knauf
75dbb3189a quick hack to make it working again on Win32 - however we should consider to set some defaults depending on the compiler architecture we guess we are since it doesnt work well if we prefer building the msvc makefile with gmake instead of nmake because we found gmake first in path.... 2005-08-30 18:37:08 +00:00
Daniel Stenberg
32330300a9 Kevin Lussier pointed out a problem with curllib.dsp 2005-08-29 21:04:26 +00:00
Daniel Stenberg
64414df27e Use the more correct BUILDING_LIBCURL define instead of CURLLIB_EXPORTS.
Kevin Lussier pointed this out!
2005-08-29 20:56:20 +00:00
Daniel Stenberg
f98ec86798 spell-fix 2005-08-29 15:19:38 +00:00
Daniel Stenberg
87bbd13899 Igor Polyakov fixed a rather nasty problem with the threaded name resolver
for Windows, that could lead to an Access Violation when the multi interface
was used due to an issue with how the resolver thread was and was not
terminated.
2005-08-29 14:23:53 +00:00
Daniel Stenberg
51a4493add Added GNU GSS and separate sections for MIT GSS and Heimdal and added info
about what each single lib may be used for.
2005-08-29 13:58:25 +00:00
Daniel Stenberg
5effe8f336 Simon Josefson brought GNU GSS support 2005-08-29 08:42:45 +00:00
Daniel Stenberg
296eb2bd61 1.3.0 coming just up 2005-08-29 07:03:05 +00:00
Daniel Stenberg
9853acba66 Moved the GnuTLS related TODO items from lib/TODO.gnutls to the proper
docs/TODO
2005-08-29 06:59:44 +00:00
Daniel Stenberg
09cb9c782d 4.14 Redirects work in browser but not with curl! 2005-08-26 13:22:39 +00:00
Daniel Stenberg
575ce905b2 ok, the right term (using RFC2616 lingo) for the -X keyword is method and not
request
2005-08-25 12:19:22 +00:00
Daniel Stenberg
54887af471 "Added in 7.14.1" notes and some minor edits 2005-08-25 07:06:50 +00:00
Daniel Stenberg
573350637e CURLINFO_COOKIELIST is added in 7.14.1 2005-08-25 07:06:15 +00:00
Daniel Stenberg
49a16f7121 Theo Borm's example, as was posted here:
http://curl.haxx.se/mail/lib-2005-08/0163.html
2005-08-24 17:07:27 +00:00
Daniel Stenberg
a4773fcbbb Toby Peterson added CURLOPT_IGNORE_CONTENT_LENGTH to the library, accessible
from the command line tool with --ignore-content-length. This will make it
easier to download files from Apache 1.x (and similar) servers that are
still having problems serving files larger than 2 or 4 GB. When this option
is enabled, curl will simply have to wait for the server to close the
connection to signal end of transfer. I wrote test case 269 that runs a
simple test that this works.
2005-08-24 10:57:28 +00:00
Daniel Stenberg
1e038c4bc6 valgrind version 3 renames the --logfile command line option to --log-file... 2005-08-24 10:49:57 +00:00
Daniel Stenberg
6ba19692a3 fixed #26, GnuTLS CA cert verification 2005-08-24 07:45:14 +00:00
Daniel Stenberg
432dfe2b8f Fixed CA cert verification using GnuTLS with the default bundle, which
previously failed due to GnuTLS not allowing x509 v1 CA certs by default.
2005-08-24 07:40:13 +00:00
Daniel Stenberg
a142372750 known bug #26, pretty fatal for anyone who wants to use proper SSL and GnuTLS 2005-08-23 08:51:38 +00:00
Gunter Knauf
f14195f786 enabled statically linked builds. 2005-08-22 02:39:05 +00:00
Daniel Stenberg
9d54f9a6b7 well hit me, that wasn't possible, use 1:0:0 anyway... 2005-08-21 21:27:19 +00:00
Daniel Stenberg
ebb91191bf modified the version-info, we only added functions 2005-08-21 21:25:42 +00:00
Daniel Stenberg
8742e294d4 increase version info 2005-08-21 21:25:07 +00:00
Daniel Stenberg
8882d1fa1b avoid adding a blank dir to the LD_LIBRARY_PATH when OpenSSL is found in a
default dir
2005-08-21 21:15:07 +00:00
Daniel Stenberg
0c37ab5255 Alfredo Tupone provided a fix for the Windows code in get_iphlpapi_dns_info()
when getting the DNS server etc.
2005-08-21 21:09:44 +00:00
Daniel Stenberg
747a05844d Using CURLOPT_COOKIEFILE serveral times add more files to read from. 2005-08-19 21:38:44 +00:00
Daniel Stenberg
c7b7bf32f8 removed the unreachable code warning from gcc debug builds, even the most
recent gcc versions give far too many false positives for this to be valuable
2005-08-19 15:07:50 +00:00
Daniel Stenberg
710ee3b0e0 Norbert Novotny had problems with FTPS and he helped me work out a patch
that made curl run fine in his end. The key was to make sure we do the
SSL/TLS negotiation immediately after the TCP connect is done and not after
a few other commands have been sent like we did previously. I don't consider
this change necessary to obey the standards, I think this server is pickier
than what the specs allow it to be, but I can't see how this modified
libcurl code can add any problems to those who are interpreting the
standards more liberally.
2005-08-19 14:41:09 +00:00
Daniel Stenberg
7a8993892d one german mirror has died while another one was added, and yet another Texas
one!
2005-08-19 07:33:34 +00:00
Daniel Stenberg
5e16a77fa9 Added new contributors from RELEASE-NOTES. The somewhat different sort order
is due to now using emacs to sort but I'm not in a mood to fix it better just
now.
2005-08-19 07:32:14 +00:00
Daniel Stenberg
ef35519696 removed some inaccurate comments about the TYPE_IN_ADDR_T check 2005-08-19 07:02:24 +00:00
Daniel Stenberg
d5baaf7756 The big POST to HTTPS is probably not a bug.
The CONNECT problem is now bug #25 planned to get fixed in next release.
2005-08-19 06:43:25 +00:00
Gunter Knauf
2a94387fc3 minor Makefile fixes. 2005-08-18 16:39:29 +00:00
Gunter Knauf
6a5c2b0fc3 updated NetWare section. 2005-08-18 16:33:45 +00:00
Daniel Stenberg
fc281d6440 detabified 2005-08-18 08:48:31 +00:00
Daniel Stenberg
e22ac39da4 detabify 2005-08-18 08:47:56 +00:00
Daniel Stenberg
34cadb1e54 Harshal Pradhan's use-after-free bug with ares is now known bug #24 to be
fixed after 7.14.1
2005-08-18 08:18:24 +00:00
Daniel Stenberg
94692b904e it isn't strictly necessary to use it after a perform 2005-08-18 06:14:17 +00:00
Daniel Stenberg
18f3087afd removed issue 20 that was about valgrind complaints on other libs/parts, as
we have a fancier valgrind error parser these days and it seems to work rather
well
2005-08-17 09:43:29 +00:00
Daniel Stenberg
15bc228ae9 the SOCKS situation 2005-08-17 09:41:54 +00:00
Daniel Stenberg
2b7a38d032 removed old info about curl_getdate() just simply isn't true and hasn't been
true since the getdate() parser code rewrite
2005-08-17 09:12:08 +00:00
Daniel Stenberg
90e1a6905a remove the typecast to long from time_t, since we now store it as curl_off_t 2005-08-17 09:11:27 +00:00
Daniel Stenberg
c36af24cbd handles expiry times in cookie files that go beyond 32 bits in size 2005-08-17 09:01:07 +00:00
Daniel Stenberg
a676c18502 - Jeff Pohlmeyer found out that if you ask libcurl to load a cookiefile (with
CURLOPT_COOKIEFILE), add a cookie (with CURLOPT_COOKIELIST), tell it to
  write the result to a given cookie jar and then never actually call
  curl_easy_perform() - the given file(s) to read was never read but the
  output file was written and thus it caused a "funny" result.

- While doing some tests for the bug above, I noticed that Firefox generates
  large numbers (for the expire time) in the cookies.txt file and libcurl
  didn't treat them properly. Now it does.
2005-08-17 08:55:43 +00:00
Gunter Knauf
362912ff83 added curl_mvsnprintf to the export list; I appened to the end cause of the numbering ... 2005-08-16 20:12:58 +00:00
Gunter Knauf
46ff13f243 added curl_mvsnprintf to the export list. 2005-08-16 20:11:25 +00:00
Daniel Stenberg
340a67a6f8 client side fixes 2005-08-16 11:40:43 +00:00
Daniel Stenberg
9294c1e76c typecase the isspace() argument to int 2005-08-16 07:32:50 +00:00
Daniel Stenberg
fd704f8de0 recent changes 2005-08-15 21:48:36 +00:00
Daniel Stenberg
d9ca9154d1 Added more verbose "warning" messages to the curl client for cases where it
fails to open/read files etc to help users diagnose why it doesn't do what
you'd expect it to. Converted lots of old messages to use the new generic
function I wrote for this purpose.
2005-08-15 21:48:28 +00:00
Daniel Stenberg
35110eca73 James Bursa identified a libcurl HTTP bug and a good way to repeat it. If a
site responds with bad HTTP response that doesn't contain any header at all,
only a response body, and the write callback returns 0 to abort the
transfer, it didn't have any real effect but the write callback would be
called once more anyway.
2005-08-13 21:28:46 +00:00
Daniel Stenberg
9ad92b3007 added test 268 that makes curl -d @nonexisting 2005-08-12 22:09:21 +00:00
Daniel Stenberg
2f78c96330 clarify 2005-08-12 21:47:05 +00:00
Daniel Stenberg
639857ceb2 o curl -d @filename when 'filename' was not possible to access no longer
converts the request to a GET, but now instead makes it a POST of no data
o The time condition illegal syntax warning is now inhibited if -s is used.
2005-08-12 21:25:44 +00:00
Daniel Stenberg
162f58c53c -H needs no CRLF or similar added 2005-08-12 20:56:12 +00:00
Daniel Stenberg
84c4d96e71 removed old debug left-over infof() call 2005-08-11 21:41:11 +00:00
Daniel Stenberg
c0d343d56d do a POST with NTLM and add two custom headers 2005-08-11 21:33:40 +00:00
Daniel Stenberg
6d14a80608 Added comment about strtoimax() 2005-08-11 20:42:02 +00:00
Gunter Knauf
f451bb7c49 fix for NetWare crossbuilds to display the right config.h when build on Win32. 2005-08-11 18:02:09 +00:00
Daniel Stenberg
20b17d6b04 the debug callback was called with CURLINFO_TEXT with the data size one
too big
2005-08-10 22:57:14 +00:00
Gunter Knauf
bb2317b63c minor Makefile fix. 2005-08-10 21:45:59 +00:00
Gunter Knauf
189461dc98 minor Makefile fix. 2005-08-10 20:45:49 +00:00
Gunter Knauf
69af552bc1 added some more NetWare targets. 2005-08-10 19:26:33 +00:00
Gunter Knauf
0ae6ff9f72 some minor Makefile fixes for SSL. 2005-08-10 19:19:25 +00:00
Gunter Knauf
8b571fbbb1 make ares compile again for NetWare. 2005-08-10 17:03:53 +00:00
Gunter Knauf
f3fcd409d5 make ares compile again for NetWare. 2005-08-10 16:55:06 +00:00
Gunter Knauf
a47532f88a fixed line endings so it works again with gnu make on Win32. 2005-08-10 16:54:00 +00:00
Daniel Stenberg
6c157a404b Christopher R. Palmer fixed the offsets used for date parsings when the time
zone name of a daylight savings time was used. For example, PDT vs PDS. This
flaw was introduced with the new date parser (11 sep 2004 - 7.12.2).
Fortunately, no web server or cookie string etc should be using such time
zone names thus limiting the effect of this bug.
2005-08-09 21:59:31 +00:00
Daniel Stenberg
4f8a49143d mention two other bugs we should fix before release 2005-08-08 23:09:24 +00:00
Daniel Stenberg
493d6033aa Jon Grubbs filed bug report #1249962 which identified a problem with NTLM on a
HTTP proxy if an FTP URL was given. libcurl now properly switches to pure HTTP
internally when an HTTP proxy is used, even for FTP URLs. The problem would
also occur with other multi-pass auth methods.
2005-08-07 22:59:06 +00:00
Daniel Stenberg
8f219af884 When curl is built with GnuTLS, curl-config didn't include "SSL" when
--features was used
2005-08-07 21:45:59 +00:00
Daniel Stenberg
aeb04136f7 Don't prevent FTPS:// through a http proxy, as we cannot know if it works or
not!
2005-08-07 21:39:44 +00:00
Daniel Stenberg
0b8f57bf06 mention our security related mail alias in the "who do I mail" section 2005-08-07 14:36:55 +00:00
Daniel Stenberg
6508d446e1 Support realloc() on a NULL pointer properly (printf(%p) on a NULL pointer
outputs (nil) and not a 0x0 or similar.
2005-08-04 23:05:36 +00:00
Daniel Stenberg
82cb462bb4 killed trailing whitespace, narrowed a few lines to 80 cols 2005-08-04 08:07:44 +00:00
Daniel Stenberg
9a264bf610 mention that the NOBODY reset thing is added in 7.14.1 2005-08-01 11:56:03 +00:00
Daniel Stenberg
57007e80a9 Moved items from TODO-RELEASE to TODO since they're not really bound to happen
in any specific release.
2005-07-30 23:48:07 +00:00
Daniel Stenberg
b6c876bdb6 clarified the PHP/CURL topic a bit more 2005-07-30 23:37:05 +00:00
Daniel Stenberg
57afae79eb correction and added new mirror 2005-07-30 23:19:42 +00:00
Daniel Stenberg
84c2184909 CURLOPT_COOKIELIST change since it no longer modifies the input string contents 2005-07-30 08:27:51 +00:00
Daniel Stenberg
e358a24a75 reset the numcookies counter too (I missed it in the previous commit) 2005-07-28 21:53:09 +00:00
Daniel Stenberg
9da9d00c62 fixed example since this is how the interface works now 2005-07-28 21:51:20 +00:00
Daniel Stenberg
ec3f269d1f now strdups the cookielist inpointer before passed on, as the cookie function
modifies it
2005-07-28 21:50:34 +00:00
Daniel Stenberg
1c388a52a5 curl standard indent/format 2005-07-28 21:49:58 +00:00
Gisle Vanem
34a827bbfe Needs 'struct_stat'. Increased verbosity. 2005-07-28 13:20:27 +00:00
Daniel Stenberg
726b9e2240 If any of the options CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST is
set to 1, CURLOPT_NOBODY will now automatically be set to 0.
2005-07-27 22:29:50 +00:00
Daniel Stenberg
2236ba0d20 Peteris Krumins added CURLOPT_COOKIELIST and CURLINFO_COOKIELIST, which is a
simple interface to extracting and setting cookies in libcurl's internal
"cookie jar". See the new cookie_interface.c example code.
2005-07-27 22:17:14 +00:00
Daniel Stenberg
463c0f7096 disabling HTTP should also nullify this function call 2005-07-27 21:44:43 +00:00
Dan Fandrich
e49a7e361c Fixed --without-gnutls 2005-07-27 18:22:21 +00:00
Dan Fandrich
6e87cf5b30 Fixed some typos in output messages. 2005-07-21 22:18:35 +00:00
Dan Fandrich
5872e8dd7e Properly support the options --without-spnego --without-gssapi --without-krb4 2005-07-20 23:00:27 +00:00
Dan Fandrich
e81d4ac8c8 Add -Wdeclaration-after-statement to gcc to detect accidental C99-style
variable declarations.
2005-07-20 21:58:23 +00:00
Daniel Stenberg
4922904991 Simplified the code within curl_easy_perform() that calls Curl_perform().
Pointed out by Bjorn Reese.
2005-07-17 12:44:11 +00:00
Daniel Stenberg
decae2dcda cURLpp 0.5.1 2005-07-15 06:57:36 +00:00
Daniel Stenberg
16bbd13af7 Diego Casorran patches to make (lib)curl build fine on Amiga again 2005-07-13 18:06:40 +00:00
Daniel Stenberg
ee0666c8df better description for HEADERFUNCTION 2005-07-13 09:46:37 +00:00
Daniel Stenberg
a8a8ae2e92 elaborate a bit on how to deal with chunked-encoded trailers that now are
passed to the app using the header callback
2005-07-13 09:37:22 +00:00
Daniel Stenberg
fd1148a728 converted this back to one name per line to make it easier/better to diff
and merge when new names are added
2005-07-13 07:44:53 +00:00
Daniel Stenberg
74c7b41ee7 mention the Rexx/CURL release 2005-07-12 18:20:31 +00:00
Daniel Stenberg
465e19dbe9 Adrian Schuur added trailer support in the chunked encoding stream. The
trailer is then sent to the normal header callback/stream.
2005-07-12 18:15:34 +00:00
Daniel Stenberg
86660c73e5 mention an old idea 2005-07-08 13:28:16 +00:00
Daniel Stenberg
6d8a208df2 mention the exception only once ;-) 2005-07-07 05:43:04 +00:00
Daniel Stenberg
c3a826fdce correction for the 407 with response-body case 2005-07-05 22:07:34 +00:00
Gisle Vanem
c5d6a42abf Update copyright. 2005-07-05 18:07:55 +00:00
Daniel Stenberg
d49c144297 Gisle Vanem came up with a nice little work-around for bug #1230118. It
seems the Windows (MSVC) libc time functions may return data one hour off if
TZ is not set and automatic DST adjustment is enabled. This made
curl_getdate() return wrong value, and it also concerned internal cookie
expirations etc.
2005-07-05 14:57:41 +00:00
Daniel Stenberg
e7de7d5eb3 mention the strerror_r detection fix in configure 2005-07-04 21:53:02 +00:00
Daniel Stenberg
20005a83d2 Andrew Bushnell provided enough info for me to tell that we badly needed to
fix the CONNECT authentication code with multi-pass auth methods (such as
NTLM) as it didn't previously properly ignore response-bodies - in fact it
stopped reading after all response headers had been received. This could
lead to libcurl sending the next request and reading the body from the first
request as response to the second request. (I also renamed the function,
which wasn't strictly necessary but...)

The best fix would to once and for all make the CONNECT code use the
ordinary request sending/receiving code, treating it as any ordinary request
instead of the special-purpose function we have now. It should make it
better for multi-interface too. And possibly lead to less code...

Added test case 265 for this. It doesn't work as a _really_ good test case
since the test proxy is too stupid, but the test case helps when running the
debugger to verify.
2005-07-03 22:25:15 +00:00
Daniel Stenberg
27926030f9 add more info when this script gets confused, and added getaddrinfo and
freeaddrinfo to the trace output
2005-06-30 14:07:52 +00:00
Daniel Stenberg
701de67b79 use %p to printf pointers since %x doesn't work properly on tru64 for this
(and besides, we should be using the same %-code for all pointers)
2005-06-30 13:30:23 +00:00
Daniel Stenberg
883479f01e enable memory debugging on tru64 with ipv6 support by doing a little different
defining, since the system headers themselves redefine getaddrinfo
2005-06-30 13:28:58 +00:00
Dan Fandrich
b37a0b0512 Detect (or at least infer) glibc-style strerror_r even when cross-compiling. 2005-06-30 04:53:05 +00:00
Daniel Stenberg
5c5d5270d2 new Lua binding 2005-06-28 09:08:52 +00:00
Daniel Stenberg
36461fb2aa clarify that ftp ascii transfers don't do right in current libcurl 2005-06-26 10:08:08 +00:00
Daniel Stenberg
d8dcd5e472 added docs about the new proxy string support 2005-06-23 23:07:07 +00:00
Daniel Stenberg
c51b46c982 David Shaw fixes 2005-06-22 22:31:08 +00:00
Daniel Stenberg
b1b63c1dd1 mention more ARMs 2005-06-22 22:30:52 +00:00
Daniel Stenberg
30c93d66eb verify that the URL decoding is done properly too 2005-06-22 22:24:47 +00:00
Daniel Stenberg
3b60bb7259 David Shaw's fix that unifies proxy string treatment so that a proxy given
with CURLOPT_PROXY can use a http:// prefix and user + password. The user
and password fields are now also URL decoded properly.

Test case 264 added to verify.
2005-06-22 22:24:10 +00:00
Daniel Stenberg
c73f8e835f David Shaw's updated version:
It now properly handles code that uses curl_free() (since not all versions of
curl have it), and also fixes a few problems when detecting libcurl on MinGW,
and a linker problem on OSX Panther.
2005-06-22 06:58:11 +00:00
Daniel Stenberg
93558c4299 mistake 2005-06-20 22:32:45 +00:00
Daniel Stenberg
396cff5779 possible windows memory leak fixed by Gisle 2005-06-19 21:38:45 +00:00
Dominick Meglio
336154e729 Added some checks for the addrinfo structure. 2005-06-19 16:58:40 +00:00
Gisle Vanem
bb0aba34fa Ensure thread handle is closed too. 2005-06-14 14:47:21 +00:00
Daniel Stenberg
1dc0ce9562 4.13 Why is curl -R on Windows one hour off? 2005-06-13 18:33:40 +00:00
Daniel Stenberg
e4aee168b5 recent buildconf fiddling 2005-06-13 11:20:51 +00:00
Daniel Stenberg
2c10c895da run libtoolize in the ares dir as well, and modified the output slightly for
all tools run in the ares dir - now shown like "running ares/[tool]"
2005-06-13 10:49:14 +00:00
Daniel Stenberg
c04fae3096 CURLINFO_FILETIME returns the time for GMT 2005-06-11 22:04:41 +00:00
Daniel Stenberg
a214af0830 make sure the found tool is a regular file (and not a dir or something) 2005-06-09 22:43:13 +00:00
Daniel Stenberg
f21bc46e82 Modified to use 'head -n 1' instead of 'head -1' since some versions of head
complains and claims this is deprecated.
2005-06-09 06:45:54 +00:00
Daniel Stenberg
044327a488 Reverted Tupone Alfredo's patch, as it broke NUMEROUS autobuilds. Let's do the
changes in a slower and more controlled manner...
2005-06-07 23:00:06 +00:00
Daniel Stenberg
c4bbcc83b6 Tupone Alfredo's fixes:
1) findtool does look per tool in PATH and think ./perl is the perl
executable, while is just a local directory (I have . in the PATH)

2) I got several warning for head -1 deprecated in favour of head -n 1

3) ares directory is missing some file (missing is missing :-) ) because
automake and friends is not run.

(Let's hope number 2 doesn't break somewhere "out there", if so we can always
search/replace that back.)
2005-06-06 21:19:04 +00:00
Daniel Stenberg
eb162b73c2 first rough version 2005-06-03 21:38:40 +00:00
Daniel Stenberg
29aafb9cea Andres Garcia's text mode fix for the 'data' part 2005-06-03 14:06:03 +00:00
Daniel Stenberg
40eb7d0d48 FIONBIO is in sys/ioctl.h on AIX 2005-06-03 07:39:18 +00:00
Daniel Stenberg
1dcb2b7e65 sigh, define TRUE if not already 2005-06-02 21:10:21 +00:00
Daniel Stenberg
5470b9aa73 William Ahern:
Make UDP sockets non-blocking. I've confirmed that at least on Linux 2.4 a
  read event can come back from poll() on a valid SOCK_DGRAM socket but
  recv(2) will still block. This patch doesn't ignore EAGAIN in
  read_udp_packets(), though maybe it should. (This patch was edited by Daniel
  Stenberg and a new configure test was added (imported from curl's configure)
  to properly detect what non-blocking socket approach to use.)
2005-06-02 11:58:04 +00:00
Daniel Stenberg
050bd7dd0b William Ahern:
I'm not quite sure how this was happening, but I've been seeing PTR queries
  which seem to return empty responses. At least, they were empty when calling
  ares_expand_name() on the record. Here's a patch which guarantees to
  NUL-terminate the expanded name. The old behavior failed to NUL-terminate if
  len was 0, and this was causing strlen() to run past the end of the buffer
  after calling ares_expand_name() and getting ARES_SUCCESS as the return
  value. If q is not greater than *s then it's equal and *s is always
  allocated with at least one byte.
2005-06-02 11:09:10 +00:00
Daniel Stenberg
f75038634f specify the cares lib before the other libs, to make it build fine with mingw
- inspired by Tupone Alfredo's bug report (and patch) #1212940
2005-06-01 21:30:29 +00:00
Daniel Stenberg
300b4a9158 Todd Kulesza reported a flaw in the proxy option, since a numerical IPv6
address was not possible to use. It is now, but requires it written
RFC2732-style, within brackets - which incidently is how you enter numerical
IPv6 addresses in URLs. Test case 263 added to verify.
2005-05-31 13:03:26 +00:00
Daniel Stenberg
52071f3476 added keywords 2005-05-31 12:57:21 +00:00
Daniel Stenberg
42ddd745f8 recent changes 2005-05-29 22:38:34 +00:00
Daniel Stenberg
a7846189cd Eric Cooper reported about a problem with HTTP servers that responds with
binary zeroes within the headers. They confused libcurl to do wrong so the
downloaded headers become incomplete. The fix is now verified with test case
262.
2005-05-29 22:30:48 +00:00
Daniel Stenberg
4762995d1f avoid the sensitive word as it looks bad in some people's eyes 2005-05-27 11:39:07 +00:00
Daniel Stenberg
e3a530eb61 Andrs Garca fixed a warning appearing on windows 2005-05-27 11:01:41 +00:00
Daniel Stenberg
d1235ff058 provide the proper copyright texts for these 2005-05-26 20:56:25 +00:00
Daniel Stenberg
4370e92dbd set LD_LIBRARY_PATH properly even when the openssl lib dir is found using
pkg-config
2005-05-25 22:14:32 +00:00
Daniel Stenberg
50e9522a06 silense a warning 2005-05-25 22:12:57 +00:00
Daniel Stenberg
b5bb9aa8e3 minor rephrase 2005-05-25 13:07:06 +00:00
Daniel Stenberg
cf2e365f23 output the full usec when --trace-time is used 2005-05-25 12:29:09 +00:00
Daniel Stenberg
72e532cb67 no more time/re-start of sockfilt, no more redirect of stdin/stdout when
talking to sockfilt
2005-05-25 12:27:19 +00:00
Daniel Stenberg
ac5635f77d added function for individual ftp slave kills 2005-05-25 12:26:38 +00:00
Daniel Stenberg
640d67c119 modified output logging, fixed the ftpslave killing 2005-05-25 12:26:20 +00:00
Daniel Stenberg
3e79693e3b utilize the whole usec in the log and don't output to stderr if the logfile
can't be opened
2005-05-25 12:04:52 +00:00
Daniel Stenberg
d55d3c2fd0 nicer raw logging and put code into (nicer) functions 2005-05-25 12:04:24 +00:00
Daniel Stenberg
3aced17c75 don't restart sockfilt after only 5 seconds of inactivity 2005-05-24 21:09:49 +00:00
Daniel Stenberg
bac63914db recent action 2005-05-24 21:02:59 +00:00
Daniel Stenberg
6a63c51f7c Andres Garcia's mode=text patch to make these do fine on Windows 2005-05-24 10:03:13 +00:00
Daniel Stenberg
632cf13767 add test case 261, response code 226 to TYPE 2005-05-24 09:40:58 +00:00
Daniel Stenberg
e7012a515c Now allow TYPE responses to be any 2xx code, and log if it isn't 200. 2005-05-24 09:39:56 +00:00
Daniel Stenberg
6b638af92f removed leftover debug message ("moo moo") 2005-05-22 17:54:11 +00:00
Daniel Stenberg
c654b79c53 added keywords 2005-05-21 22:38:19 +00:00
Daniel Stenberg
bee7b874ea added -nobuildconf 2005-05-20 11:24:55 +00:00
Daniel Stenberg
9c3fc592f7 keywords added 2005-05-20 11:15:24 +00:00
Daniel Stenberg
4eab7a1ebc shorter name 2005-05-20 11:15:15 +00:00
Daniel Stenberg
3d985688e4 sum up 2005-05-20 11:14:44 +00:00
Daniel Stenberg
17ea2631cd Add support for text mode on stdout tests as well, and add the mode=text
to the docs.
2005-05-20 10:40:32 +00:00
Daniel Stenberg
b749910e6c include ctype.h for isdigit() 2005-05-19 09:55:53 +00:00
Daniel Stenberg
eff36caea8 additional fix for the malformed URL fix of yday 2005-05-19 07:21:18 +00:00
Daniel Stenberg
6ff092f140 removed duplicate 2005-05-19 07:12:16 +00:00
Daniel Stenberg
28bb36e53d three fixes since 7.14.0 2005-05-18 20:02:07 +00:00
Daniel Stenberg
4a091bbd8a Bug report #1204435 identified a problem with malformed URLs like
"http://somehost?data" as it added a slash too much in the request ("GET
/?data/"...). Added test case 260 to verify.
2005-05-18 20:01:01 +00:00
Daniel Stenberg
e99a6b813e update 2005-05-18 20:00:50 +00:00
Daniel Stenberg
b9e5302f27 adjusted the strerror_r test more, use _REENTRANT instead of _THREAD_SAFE
when looking for the prototype
2005-05-18 15:15:00 +00:00
Daniel Stenberg
dd7b6aef39 The configure check for strerror_r() failed to detect the proper API at
times, like on my HP-UX 10.20 tests. And then lib/strerror.c badly assumed
the glibc version if the posix define wasn't set (since it _had_ found a
strerror_r).
2005-05-18 13:24:23 +00:00
Daniel Stenberg
910b8b6a69 #15 is now fixed 2005-05-18 10:38:21 +00:00
Daniel Stenberg
c3207e215f clarified for GnuTLS 2005-05-18 10:14:25 +00:00
Daniel Stenberg
f83be11b85 several updates 2005-05-18 10:12:08 +00:00
Daniel Stenberg
45bce1062a ignore resolve too 2005-05-18 10:05:38 +00:00
Daniel Stenberg
8cb344bf3c use less code and prevent compiler warning 2005-05-18 10:01:46 +00:00
Daniel Stenberg
fcc4518cdc removed the separate table with download links, and extended the curl site
list with all current mirrors
2005-05-18 09:26:57 +00:00
Daniel Stenberg
c84839eb91 scan for gmake and make to prefer gmake on systems that have it 2005-05-17 12:07:08 +00:00
Daniel Stenberg
1f878aee69 Made test case 241 precheck that the given name resolves to an ipv6 address,
or the test is skipped. Ideally, we should let this test case go over a few
frequently used IPv6 localhost aliases...
2005-05-17 10:27:11 +00:00
Daniel Stenberg
84fd4686e2 Moved more generic functions to util.[ch]
Added resolve.c to simply resolve a given host name
2005-05-17 10:22:22 +00:00
Daniel Stenberg
ede9fb4fcc check if getsockname() returns failure before using the address it provides 2005-05-17 09:18:17 +00:00
Daniel Stenberg
723aef71e8 reduced typecasts, from two to one 2005-05-17 09:15:21 +00:00
Dominick Meglio
48964a911e More of the same 2005-05-17 04:20:58 +00:00
Dominick Meglio
6a35cb60fd More compiler warning cleanups 2005-05-17 04:18:41 +00:00
Daniel Stenberg
1e51c3a832 bad formatting 2005-05-16 22:30:00 +00:00
Dominick Meglio
205dda2b39 Made ares_free_hostent man page refer to ares_parse_aaaa_reply 2005-05-16 19:23:57 +00:00
Dominick Meglio
1c18d19da0 Cleaned up some compile warnings 2005-05-16 19:14:25 +00:00
Dominick Meglio
645729e943 Added ares_getnameinfo which mimics the getnameinfo API 2005-05-16 18:06:54 +00:00
Daniel Stenberg
f425a25c98 Modified the gmtime_r check to not check for it until the "check for a working
one" is made, and only if that test runs ok we define it as present. Unless
crosscompiling, since then we use the former AC_CHECK_FUNCS method.
2005-05-16 15:09:26 +00:00
Daniel Stenberg
aaace2e802 define GMTIME_R to 0 if not working 2005-05-16 14:53:48 +00:00
Daniel Stenberg
3f16d9fbc9 attempt to detect a bad (as in HPUX 10.20 bad) gmtime_r function 2005-05-16 14:40:10 +00:00
Daniel Stenberg
3afc57bab8 start working on 7.14.1 2005-05-16 13:27:41 +00:00
Daniel Stenberg
55225106b6 Version 7.14.0 2005-05-16 12:58:41 +00:00
Daniel Stenberg
1a31bff9fe return, not exit, on several places 2005-05-16 07:07:00 +00:00
Dominick Meglio
4eaa3329ec Converted some macros to use NS_* so they work on non-IPv6 systems 2005-05-15 16:31:01 +00:00
Dominick Meglio
028d78b993 Forgot to ares_-ize inet_ntop 2005-05-15 04:38:53 +00:00
Daniel Stenberg
944af98be6 fix warning about redefined symbol 2005-05-14 21:15:36 +00:00
Daniel Stenberg
2789b2b0ad replaced the CRLF newlines with plain LF ones 2005-05-14 20:45:49 +00:00
Dominick Meglio
7dded571de Added an inet_ntop function from BIND for systems that do not have it 2005-05-14 18:35:20 +00:00
Gisle Vanem
95fe8372e8 Updated generated dependencies. 2005-05-14 06:04:21 +00:00
Gisle Vanem
ecdcb0ef67 Some patches for (a stricter/smarter) gcc 4.0 and
warnings like:
  'x' may be used uninitialized in this function.
2005-05-14 06:00:40 +00:00
Gisle Vanem
6a04a03eb5 'ssize_t' seems to be a gcc 4.x built-in. 2005-05-14 05:59:26 +00:00
Gisle Vanem
0c96056a94 Change for systems with >1 ways of setting (non-)blocking
mode. (djgpp/Watt-32 has 3 ways). Should rewrite this using
"#elif ..", but maybe there is still broken cpp around?
2005-05-14 05:58:52 +00:00
Daniel Stenberg
f518a5e231 updated 2005-05-13 23:00:06 +00:00
Daniel Stenberg
f581c1062e uses select() instead of poll() even on Mac OS X 10.4 2005-05-13 22:24:50 +00:00
Daniel Stenberg
0b3deceea3 adjusted the configure to always skip the fine-poll() test on Mac OS X (darwin) 2005-05-13 21:19:21 +00:00
Daniel Stenberg
fa4cd8868c remove blank lines 2005-05-12 21:56:26 +00:00
Daniel Stenberg
8c573ca7f3 CURLOPT_SSLVERSION clarified 2005-05-12 21:49:42 +00:00
Daniel Stenberg
5a5cf3a51d -z bad use warning and NTLM proxy auth in reconnect fix 2005-05-12 14:00:27 +00:00
Daniel Stenberg
3f23e8443e oops, found by bug reported in bug report #1200661 2005-05-12 13:44:25 +00:00
Daniel Stenberg
a00f9b093c spell 2005-05-12 12:53:02 +00:00
Daniel Stenberg
5f538ce3f8 typecast to fix warning on 64bit systems 2005-05-12 08:51:30 +00:00
Daniel Stenberg
ebcaa3d579 warn about bad -z syntax 2005-05-12 07:28:03 +00:00
Daniel Stenberg
60e26199a2 MatrixSSL and yaSSL are two free libs we _could_ support 2005-05-11 11:56:04 +00:00
Daniel Stenberg
11defd180c mention the select() error fix as well 2005-05-11 10:23:59 +00:00
Daniel Stenberg
c82c1691ee the new HTTP headers 2005-05-11 09:56:53 +00:00
Daniel Stenberg
364562f209 removed duplicate 2005-05-11 09:56:10 +00:00
Daniel Stenberg
5d9fc28fa7 Modified the default HTTP headers used by libcurl:
A) Normal non-proxy HTTP:

 - no more "Pragma: no-cache" (this only makes sense to proxies)

B) Non-CONNECT HTTP request over proxy:

 - "Pragma: no-cache" is used (like before)
 - "Proxy-Connection: Keep-alive" (for older style 1.0-proxies)

C) CONNECT HTTP request over proxy:

 - "Host: [name]:[port]"
 - "Proxy-Connection: Keep-alive"
2005-05-11 09:52:59 +00:00
Daniel Stenberg
e5ec5c284f prevent NS_IN6ADDRSZ from getting set to zero if the struct doesn't exist 2005-05-11 06:47:09 +00:00
Daniel Stenberg
a90e33ad71 Hm, this doesn't feel right. The error bits returned from Curl_select() can
be returned at times when we want to ignore them. Test case 160 fails on Linux,
so I modify the comparison to check for _only_ the error bit set...
2005-05-10 23:02:37 +00:00
Daniel Stenberg
62ab21ce7d me stupid, errno is not set for mere select()-exceptions 2005-05-10 22:48:26 +00:00
Daniel Stenberg
cc8e8db1e5 include protos to fix warnings 2005-05-10 22:46:24 +00:00
Daniel Stenberg
b19cba2016 If Curl_select() returns with the error bit set, bail out. 2005-05-10 22:44:08 +00:00
Daniel Stenberg
315a9c95d5 prevent 64bit warnings 2005-05-10 11:21:57 +00:00
Daniel Stenberg
e010ac9706 allow the ares/config.h display to fail 2005-05-10 11:19:12 +00:00
Daniel Stenberg
e4c0a85da0 Jeremy Brown's OpenSSL thread-locking example 2005-05-09 21:12:03 +00:00
Daniel Stenberg
d3e4cdd5b0 new counter 2005-05-09 13:57:58 +00:00
Daniel Stenberg
763b812dc7 Jamie Lokier added. And I now recounted the amount better: 437 named as of now. 2005-05-09 13:53:42 +00:00
Daniel Stenberg
3269dfb4ab update the "PORTS" section a little 2005-05-09 13:26:41 +00:00
Daniel Stenberg
e816bd259f add multi-thread details for GnuTLS 2005-05-09 13:13:38 +00:00
Daniel Stenberg
a295408e09 new mirror, added amount of contributors 2005-05-09 12:34:55 +00:00
Daniel Stenberg
42a34c7cd7 Jeff is short for Jeffrey 2005-05-09 11:43:23 +00:00
Daniel Stenberg
9a72751958 updated with the current RELEASE-NOTES names 2005-05-09 11:39:20 +00:00
Daniel Stenberg
314e6fa80b I decided to make this list more complete. I took the 5-year anniversary list
from 2003 and added all names from all release notes in the CVS (there is a
slight gap though). I removed names with only first names (Like "Chris" and
"Ralph") , as that won't make anyone happy and we might list their full names
as well anyway.

This list is now intended to include _all_ people that contribute: big or
small. 389 names at the time of this commit.
2005-05-09 09:11:39 +00:00
Daniel Stenberg
b2b66f749a no need to display src/config.h anymore since it is a duplicate of lib/config.h
but we could use having a look at ares/config.h when that is used
2005-05-09 07:45:30 +00:00
Daniel Stenberg
708ed6fded silence compiler warnings 2005-05-08 22:45:01 +00:00
Daniel Stenberg
5c30fa50d6 fix warnings about unused variables for non-debug builds 2005-05-07 20:41:16 +00:00
Daniel Stenberg
fc33c424d9 fix 2005-05-07 20:28:39 +00:00
Daniel Stenberg
b04d6dd0b1 January 2003. Started working on the distributed curl tests. The autobuilds. 2005-05-07 14:23:32 +00:00
Daniel Stenberg
9c5f79c56a DEBUGF() is a new conveniant macro to add infof() calls (or similar) for
debug builds only. Made the ftp code use it on several places.
2005-05-07 13:57:07 +00:00
Daniel Stenberg
ef5eea689a Added an active disconnected state, to make the code clearer. 2005-05-07 13:52:07 +00:00
Daniel Stenberg
fd191deb49 removed unnecessary logging to ease REAL debuggin 2005-05-07 08:55:37 +00:00
Daniel Stenberg
e1da1ff7d3 one more command line option, fixed the AIX 4.3 enabled IPv6 build (it now
detects a bad Ipv6 situation and disables it automatically)
2005-05-06 23:46:35 +00:00
Daniel Stenberg
2b00ed7ef8 Added two test cases for multipart formpost over a proxy with --anyauth. Our
HTTP test server is a bit limited though, as it never responds to the POST
request until all data has been sent (and received)...
2005-05-06 23:22:33 +00:00
Daniel Stenberg
d960ea959d When a server is clearly running, curl is now invoked to verify that it can
download a file from the server before the server is considered fine to use
for the given test case. This should fix the cases where the server can run
but curl cannot work with it.
2005-05-06 23:21:34 +00:00
Daniel Stenberg
274842ec41 use calloc instead of malloc to save a call to memset() 2005-05-05 06:04:00 +00:00
Daniel Stenberg
c06da7c84a now add --trace-time by default for curl tests 2005-05-04 21:58:47 +00:00
Daniel Stenberg
cea117b509 removed lots of (now) redundant logging 2005-05-04 21:57:07 +00:00
Daniel Stenberg
6078c938b2 modify a value we are allowed to 2005-05-04 21:51:09 +00:00
Daniel Stenberg
9e95dd4821 improved logging (all FTP protocol data, both ways) to possibly help us realize
why sometimes the control connection dies after a RETR has been sent
2005-05-04 21:49:30 +00:00
Daniel Stenberg
0cc8b57d4f towards 7.14.0 - really 2005-05-04 15:11:09 +00:00
Daniel Stenberg
2179e6e797 prevent memory leak when built SSL disabled 2005-05-04 14:52:51 +00:00
Daniel Stenberg
7dde3d1825 *MAN* was this hard to track down. Had I just read the docs properly from the
start... Anyway, fork() + exec() makes _two_ pids (in perl) that we need to
track and kill after use. Thankyouverymuch.
2005-05-03 23:14:43 +00:00
Daniel Stenberg
a0fe950b75 add more info to the log to ease debugging 2005-05-03 23:13:24 +00:00
Daniel Stenberg
44985e8884 improved failf() error messages 2005-05-02 22:53:55 +00:00
Daniel Stenberg
f03366bcbf the new functions and the upcoming ipv6 calls for the next version to become
1.3.0
2005-05-02 22:33:57 +00:00
Daniel Stenberg
d43ea83033 corrected copyright years 2005-05-02 14:33:58 +00:00
Daniel Stenberg
11bdba0007 corrected copyright year 2005-05-02 14:33:07 +00:00
Daniel Stenberg
07e58aaa79 Sort of "fixed" KNOWN_BUGS #4: curl now builds IPv6 enabled on AIX 4.3. At
least it should no longer cause a compiler error. However, it does not have
AI_NUMERICHOST so we cannot getaddrinfo() any numerical addresses with it (we
use that for FTP PORT/EPRT)! So, I modified the configure check that checks if
the getaddrinfo() is working, to use AI_NUMERICHOST since then it'll fail on
AIX 4.3 and it will automatically build with IPv6 support disabled.
2005-05-02 14:06:27 +00:00
Daniel Stenberg
a31ddd363b Now configure checks for struct sockaddr_storage and the ftp code tries
to survive without it if not found. AIX 4.3 targetted adjustment.
2005-05-02 11:56:15 +00:00
Daniel Stenberg
ed9e10f2d8 another <case> converted to sysread 2005-05-02 11:55:17 +00:00
Daniel Stenberg
02ae3c2810 read from the open2 filehandle with sysread, not <handle> 2005-05-02 11:31:15 +00:00
Daniel Stenberg
669ebb5f71 Fixed the FTP server read stuff when waiting for a connect after a PASV/EPSV.
Made the ftp server use the passed in pidfile name, and made runtests.pl
pass it in properly.
2005-05-02 10:22:09 +00:00
Daniel Stenberg
9a3e0e52cb fix the server for the slow response case 2005-05-02 10:03:12 +00:00
Daniel Stenberg
b0f856213d Added --trace-time that when used adds a time stamp to each trace line that
--trace, --trace-ascii and --verbose output. I also made the '>' display
separate each line on the linefeed so that HTTP requests etc look nicer in the
-v output.
2005-05-02 09:38:19 +00:00
Daniel Stenberg
6f4ff1f2bf When starting the ftp server, wait a few seconds to make really sure that
a pidfile for the server appears as otherwise it failed.
2005-05-02 09:08:44 +00:00
Daniel Stenberg
d3eea61f1f Make sure there's no pidfile if we cannot start the initial sockfilt tool -
this happens for some ipv6-enabled hosts on which sockfilt cannot listen
on ipv6.
2005-05-02 09:08:02 +00:00
Daniel Stenberg
d59d81fae8 two bugfixes, one change and one test script modification 2005-05-02 08:40:20 +00:00
Daniel Stenberg
329ca40b6f two bugs, one change 2005-05-02 07:59:47 +00:00
Daniel Stenberg
e71bd416f4 blank a few more environment variables before running a test 2005-05-02 07:54:25 +00:00
Daniel Stenberg
ad66fc6cc2 Made curl recognize the environment variables Lynx (and others?) support for
pointing out the CA cert path/file: SSL_CERT_DIR and SSL_CERT_FILE. If
CURL_CA_BUNDLE is not set, they are checked afterwards.
2005-05-02 07:53:25 +00:00
Daniel Stenberg
d12b44204b Bryan Henderson's fine update of SSL_VERIFYPEER and SSL_VERIFYHOST 2005-05-02 07:28:40 +00:00
Daniel Stenberg
4be2136de4 prevent two compiler warnings on comparisons between signed and unsigned 2005-05-01 23:16:51 +00:00
Daniel Stenberg
c4dbed040b fixed to use fork()+exec() to start test servers 2005-05-01 13:20:53 +00:00
Daniel Stenberg
366b62af2d always use the libcurl-provided *printf() functions 2005-05-01 12:56:09 +00:00
Daniel Stenberg
a6955aa486 util.h added as "source" to make it get added in dist archives 2005-05-01 12:51:27 +00:00
Daniel Stenberg
ad30341fa2 logfile name is const 2005-04-30 23:35:51 +00:00
Daniel Stenberg
23da55a9f1 Moved common code to util.[ch] instead of having it duplicated in sws.c
and sockfilt.c. For good-to-have functions for the servers written in C.
2005-04-30 23:30:55 +00:00
Daniel Stenberg
41e6292e7b there cannot be chunked problem when no_body (HEAD) is true since without
body there is nothing chunked-encoded!
2005-04-30 23:07:38 +00:00
Daniel Stenberg
ae1d6f29d9 singleipconnect() returns a socket descriptor, not a CURLcode (but perhaps
we should make it do that...)
2005-04-30 15:16:39 +00:00
Daniel Stenberg
ccfc1ddbef more fixes 2005-04-29 12:34:53 +00:00
Daniel Stenberg
002de1eae2 Updated with (new and old) default config file search path explanation. 2005-04-28 21:26:30 +00:00
Daniel Stenberg
63621bae81 Set mode text on the section that is written by curl in text mode, to allow
the runtests.pl to check this differently on operating systems that
differentiate on this.
2005-04-28 21:07:07 +00:00
Daniel Stenberg
85f9e6c4b9 basic signal handler for sigint and sigkill 2005-04-28 21:06:17 +00:00
Daniel Stenberg
967ec296c0 fixed the attribute parser to better handle multiple ones, with or without
quotes around the contents
2005-04-28 21:05:40 +00:00
Daniel Stenberg
c6aae9b1d7 moved two functions to ftp.pm, made some more changes on stopping servers
and fixed the textmode attribute thing for windows a bit
2005-04-28 21:04:58 +00:00
Daniel Stenberg
913c370c25 moved in functions from runtests.pl to enable the ftpserver to use the
killslaves function
2005-04-28 21:04:08 +00:00
Daniel Stenberg
e5472bbd21 AF_INET6 for ipv6 addresses! 2005-04-28 14:31:25 +00:00
Daniel Stenberg
957c258c6d no, the kill servers messages need to be verbose, they're too frequent 2005-04-28 14:25:48 +00:00
Daniel Stenberg
abee109cd1 display killed pids to make it easier to see for autobuilds etc 2005-04-28 14:03:08 +00:00
Daniel Stenberg
502e5ae6e1 historic thing we will not use 2005-04-28 13:55:34 +00:00
Daniel Stenberg
b8417be1f2 removed ftpsserver.pl 2005-04-28 13:55:16 +00:00
Daniel Stenberg
9e037431b4 When staring a HTTP server, use the pidfile preferably since it turns out
sometimes the server can start but curl cannot speak to it, and then we must
remember the server (in order to kill it properly) anyway.

Also, make sure to kill all servers on exit everywhere.
2005-04-28 13:54:48 +00:00
Daniel Stenberg
f71b3676bb ignore more generated files 2005-04-28 11:22:18 +00:00
Daniel Stenberg
50fe7b5e35 remove unused ftps-server code and fixed two warnings 2005-04-28 08:23:25 +00:00
Daniel Stenberg
9fb253388b if diff -u makes zero output, try diff -c instead 2005-04-28 08:20:33 +00:00
Daniel Stenberg
8cf1786296 kill slave processes when they fail 2005-04-28 07:36:55 +00:00
Daniel Stenberg
51b17b299c 1. no longer ask the server for the HTTPS pid, as it returns the HTTP pid
(problem identified by Dan F)
2. initial text mode fix for file checks, to allow better text file testing
on windows (with regard to line endings)
3. fixed to use the proper ftpserver pidfile to find pid
2005-04-28 06:50:42 +00:00
Daniel Stenberg
78882e4642 Paul Moore made curl check for the .curlrc file (_curlrc on windows) on two
more places. First, CURL_HOME is a new environment variable that is used
instead of HOME if it is set, to point out where the default config file
lives. If there's no config file in the dir pointed out by one of the
environment variables, the Windows version will instead check the same
directory the executable curl is located in.
2005-04-27 21:24:58 +00:00
Daniel Stenberg
8465a367a4 listen(..., 1) as 0 doesn't work on Tru64! 2005-04-27 12:28:04 +00:00
Daniel Stenberg
3bcfe678ab display listening port in log 2005-04-27 12:27:23 +00:00
Daniel Stenberg
d5403f3a5b show what error codes we test for too, and show 10 test case numbers 2005-04-27 10:12:41 +00:00
Daniel Stenberg
26abb48533 keyword update 2005-04-27 09:59:47 +00:00
Daniel Stenberg
177848ed27 detect SSL library properly and display it on startup 2005-04-27 09:59:29 +00:00
Daniel Stenberg
656a2e93d7 fixing 2005-04-26 21:47:31 +00:00
Daniel Stenberg
6b1220b61d Cory Nelson's work on nuking compiler warnings when building on x64 with
VS2005.
2005-04-26 13:08:49 +00:00
Daniel Stenberg
9d7330d879 Since Windows doesn't have/use the POSIX prototype for send() and recv(), we
typecast the third argument in the macros to avoid compiler warnings.
2005-04-26 13:08:18 +00:00
Daniel Stenberg
26a5954fa0 adding a bunch of comments for each #endif 2005-04-26 10:55:52 +00:00
Daniel Stenberg
01165e08e0 Fred New reported a bug where we used Basic auth and user name and password in
.netrc, and when following a Location: the subsequent requests didn't properly
use the auth as found in the netrc file. Added test case 257 to verify my fix.
2005-04-25 21:39:48 +00:00
Daniel Stenberg
6e1633a6c5 be specific about what max_fd contains after a call 2005-04-25 08:55:55 +00:00
Daniel Stenberg
a8ff0a21bf Based on feedback from Cory Nelson, I added some preprocessor magic in
*/setup.h and */config-win32.h to build fine with VS2005 on x64.
2005-04-24 22:25:04 +00:00
Daniel Stenberg
b8bc6bed97 2 days, 4 fixes 2005-04-23 22:08:15 +00:00
Daniel Stenberg
1a4402038c Alex Suykov's ftp upload show progress meter patch, slightly adjusted. 2005-04-23 21:26:27 +00:00
Gunter Knauf
5ac51cc9b5 fix for recent changes. 2005-04-23 11:59:06 +00:00
Daniel Stenberg
c12159ce21 show up to 5 (random) test cases using the keyword 2005-04-22 22:29:48 +00:00
Daniel Stenberg
4485503ecc keywords added 2005-04-22 21:59:08 +00:00
Daniel Stenberg
200ac588cc Dave Dribin: set CURL_STATICLIB when it builds static library variants. 2005-04-22 21:16:22 +00:00
Daniel Stenberg
0bb040822d Andres Garcia's fix for building static curl on windows. 2005-04-22 21:13:27 +00:00
Daniel Stenberg
543fbe14ee Fixed the CN extraction 2005-04-22 20:56:26 +00:00
Daniel Stenberg
e02ab66120 update the copyright year 2005-04-22 20:49:35 +00:00
Daniel Stenberg
76c7c694c5 modified this year 2005-04-22 20:48:07 +00:00
Daniel Stenberg
f0057977b7 ignore the memdump file when showing files after a failure 2005-04-22 20:47:35 +00:00
Daniel Stenberg
e8e43f06af copyright this year 2005-04-22 20:47:21 +00:00
Daniel Stenberg
04b35e86d5 Fixed for Mac OS X builds based on excellent feedback from Heinz Stockinger. 2005-04-22 15:01:02 +00:00
Gunter Knauf
64ab85da4f changes for building with IPV6. 2005-04-22 13:03:17 +00:00
Daniel Stenberg
b8d7a13ea3 modified the test case success reporting, added "test N out of Y" and
"remaining: [time]" outputs to hint users about what to expect
2005-04-22 11:51:06 +00:00
Daniel Stenberg
78a76dc905 test 256 is like test 38 but with proxy + proxy auth 2005-04-22 10:15:21 +00:00
Daniel Stenberg
5fa5fff0e9 keywords 2005-04-22 10:06:58 +00:00
Daniel Stenberg
d323b3d816 Set the retry delay variables after the option parsing, as bug report
#1187787 points out.
2005-04-22 10:01:49 +00:00
Daniel Stenberg
b685b5672a added missing headers 2005-04-21 20:11:31 +00:00
Gunter Knauf
8f6c2f87c8 changes for building with IPV6 and LDAP. 2005-04-20 23:41:25 +00:00
Daniel Stenberg
f30e8b11eb prevent compiler warning 2005-04-19 23:38:57 +00:00
Daniel Stenberg
8bd6d6a4de added typecast when converting from long to unsigned short, to prevent compiler warning 2005-04-19 23:37:45 +00:00
Daniel Stenberg
b3a8f438fc indented source to look more like other ares code,
added (somewhat ugly) typecasts to build warning-free on 64bit platforms (the
result of a (char *) - (char *) cannot be stored in an int universally)
2005-04-19 23:36:21 +00:00
Daniel Stenberg
e78ddf0a95 sortlist_alloc() is never used on win32, so ifdef out it to prevent warning 2005-04-19 23:26:14 +00:00
Daniel Stenberg
5f0366c2cb only define _REENTRANT if not already defined, and only in setup.h 2005-04-19 23:19:23 +00:00
Daniel Stenberg
779ca09775 Check for and config for the ca cert bundle properly when built with GnuTLS.
Previously this was only done for OpenSSL builds.
2005-04-19 22:23:37 +00:00
Daniel Stenberg
313f1a1e83 when --with-gnutls is used, we assume a bin/libgnutls-config file in the
given prefix. Building something with gnutls without it just is too error-
prone.
2005-04-19 22:12:34 +00:00
Daniel Stenberg
21337f4776 remove the warning for a lacking crypto lib since it migth just be a gnutls
build...
2005-04-19 22:03:10 +00:00
Daniel Stenberg
53a8e5655b added CURLOPT_PORT test when using proxy 2005-04-19 08:10:04 +00:00
Daniel Stenberg
2d85585ae1 two bugfixes of today 2005-04-18 19:53:25 +00:00
Daniel Stenberg
63d109f7be Olivier reported that even though he used CURLOPT_PORT, libcurl clearly still
used the default port. He was right. I fixed the problem and added the test
cases 521, 522 and 523 to verify the fix.
2005-04-18 19:41:04 +00:00
Daniel Stenberg
c904b6b5bf Toshiyuki Maezawa reported that when doing a POST with a read callback,
libcurl didn't properly send an Expect: 100-continue header. It does now.
2005-04-18 17:14:58 +00:00
Daniel Stenberg
6a27449922 digest works in the proxyauth too 2005-04-18 14:32:48 +00:00
Daniel Stenberg
9a9c07f571 Initial curl_multi_socket() stuff, #ifdef'ed out for now but committed for
documentational purposes.
2005-04-18 11:40:50 +00:00
Daniel Stenberg
4382204e1b better fix for the socket -1 case 2005-04-18 08:59:46 +00:00
Daniel Stenberg
6d3114efe2 ignore sockfilt 2005-04-18 08:51:04 +00:00
Daniel Stenberg
b62baaed95 safety measure to avoid using -1 as socket 2005-04-18 08:49:46 +00:00
Daniel Stenberg
9b391e531b allow some more time 2005-04-18 08:49:21 +00:00
Daniel Stenberg
a0c7a6d22b ARGH my stupidity is endless. Ipv4-only hosts don't send EPRT or LPRT. 2005-04-18 07:56:43 +00:00
Daniel Stenberg
14424f7058 Modified the FTP server to use the new 'sockfilt' program to do all the socket
level stuff. The FTP server communicates with sockfilt using perl's open2().
This enables easier IPv6 support and hopefully FTP-SSL support in the future.
Added four test cases for FTP-ipv6.
2005-04-18 06:57:44 +00:00
Daniel Stenberg
6063dff8d0 Modified to not mix ordinary print to STDOUT with a system() that prints to
stdout, since I've found cases on Solaris where the second output mixes with
the first and thus the big check-script doesn't properly find the first
string in the output stream.
2005-04-18 05:46:10 +00:00
Daniel Stenberg
7fba9ed398 somewhat clarified that this only sets the fd_sets and expects them to be
cleared before this function is called
2005-04-17 23:01:46 +00:00
Daniel Stenberg
53280a196b keywords added 2005-04-16 23:15:19 +00:00
Daniel Stenberg
0bf9a5704b minor edits, report the test cases without keywords 2005-04-16 23:15:12 +00:00
Daniel Stenberg
8182d17ae1 starting to produce a summary in HTML 2005-04-16 12:43:32 +00:00
Daniel Stenberg
69b1ac7dcd avoid warning on windows 2005-04-16 12:30:01 +00:00
Daniel Stenberg
b15507aac3 clarify that > in the verbose output can contain newlines 2005-04-16 12:24:12 +00:00
Daniel Stenberg
6c2f583f51 keywords added 2005-04-16 00:00:35 +00:00
Daniel Stenberg
a72eaddda3 initial tool to report info/keywords of the test cases 2005-04-15 23:48:58 +00:00
Daniel Stenberg
dc050e45df started adding "keywords" for each test, to better allow us to sum up what
kind of tests we have and how many tests that test certain features
2005-04-15 23:48:31 +00:00
Daniel Stenberg
2fcbf13920 add needed include 2005-04-15 21:51:46 +00:00
Dominick Meglio
099ae31523 Attempted to fix c-ares not building on non-IPv6 systems 2005-04-15 15:25:16 +00:00
Daniel Stenberg
c2fcdf3a02 if libgnutls-config isn't found in the given path, deal with it nicer (but
it is still likely to not do very good since it can't figure out all the lib
dependencies)
2005-04-15 08:45:35 +00:00
Daniel Stenberg
2056a538b9 Two new slowdown tests for better testing of the FTP response reader function
when the response come in many small chunks.
2005-04-14 22:52:42 +00:00
Daniel Stenberg
cd1144dc24 make the ftp server support reply/servercmd, and make SLOWDOWN work, and
update the docs accordingly
2005-04-14 22:52:08 +00:00
Daniel Stenberg
e9d068b913 oops, only negative numbers are errors 2005-04-13 21:17:05 +00:00
Dan Fandrich
ec2ad57c32 Mention GnuTLS and fix a few spelling errors. 2005-04-13 19:31:00 +00:00
Daniel Stenberg
316adac511 don't bail out just because the ca file has a problem, it might be OK 2005-04-13 12:38:01 +00:00
Daniel Stenberg
d7b11d4c33 fix port number 2005-04-13 12:37:38 +00:00
Daniel Stenberg
c52aa6df33 GnuTLS support 2005-04-13 08:50:13 +00:00
Daniel Stenberg
a19b23b59f extended the multi-thread explanation 2005-04-13 08:47:59 +00:00
Daniel Stenberg
4e26b2a65b fix compiler warning 2005-04-13 06:52:03 +00:00
Dan Fandrich
7c4feac6db Allow environment variables to override default autotools. 2005-04-13 00:32:33 +00:00
Daniel Stenberg
e01e364c37 next release will be version 7.14.0 thanks to the added GnuTLS support 2005-04-12 14:17:07 +00:00
Daniel Stenberg
c13a3d7b84 Provides an unconditional strlcat() proto even if strlcat() was found by
configure. An attempt to fix warnings when we build and the strlcat() function
is provided by one if the libs (gss or krb4) since then we have no protos
for it in a system header.
2005-04-12 07:56:57 +00:00
Daniel Stenberg
67805b6dc5 requires OpenSSL, as our GnuTLS doesn't provide support for
CURLOPT_SSL_CTX_FUNCTION (yet).
2005-04-12 07:19:34 +00:00
Daniel Stenberg
0050ab2a3d support tests that requires 'OpenSSL' specificly 2005-04-12 07:18:48 +00:00
Daniel Stenberg
60e66c6cbf credits 2005-04-11 14:07:02 +00:00
Daniel Stenberg
5ad2a253e8 refresh 2005-04-11 13:50:19 +00:00
Daniel Stenberg
b5d50e9298 5.12 Can I make libcurl fake or hide my real IP address? 2005-04-11 13:39:55 +00:00
Daniel Stenberg
37f7362aca HTTP 304 response with Content-Length: header 2005-04-10 22:56:46 +00:00
Dominick Meglio
bee198def5 Removed usage of u_int and u_char 2005-04-09 23:46:31 +00:00
Daniel Stenberg
f09e479fd6 Blah, revert my removal of the extra check since the problem is there for real.
Archived thread of the help-gnutls mailing list regarding this problem:

http://lists.gnu.org/archive/html/help-gnutls/2005-04/msg00000.html

(and I _am_ sorry for my confused behaviour on this problem.)
2005-04-09 22:33:14 +00:00
Daniel Stenberg
80fe93bc33 OK, I must've been halucinating or something because I no longer see the
bug I thought I saw before when I changed this...!
2005-04-09 21:38:14 +00:00
Dominick Meglio
ea03ad3bee Made sortlist support IPv6 (this can probably use some testing) 2005-04-09 19:59:59 +00:00
Dominick Meglio
feec421744 Made sortlist support CIDR matching for IPv4 2005-04-09 16:49:47 +00:00
Dominick Meglio
634982840e Added preliminary IPv6 support to ares_gethostbyname 2005-04-08 19:46:46 +00:00
Daniel Stenberg
fb3c85ab2f fixed the 304 response-with-content-length problem reported by Cory Nelson 2005-04-08 16:59:13 +00:00
Dominick Meglio
a9b7c3531c Added include for inet_net_pton.h to ares__get_hostent.c 2005-04-08 16:22:51 +00:00
Dominick Meglio
a7ba0d908d Made ares_gethostbyaddr support IPv6 by specifying AF_INET6 as the family 2005-04-08 15:41:31 +00:00
Daniel Stenberg
2fc70e2c5d re-arrange some code to prevent warnings on unreachable code 2005-04-08 09:25:48 +00:00
Daniel Stenberg
7ae3f0e70c include sys/types.h too when checking for headers as otherwise this breaks
on Solaris and FreeBSD. At least.
2005-04-08 08:48:17 +00:00
Marty Kuhrt
9afaa51e3f updated instructions 2005-04-08 05:07:04 +00:00
Marty Kuhrt
c736a719f1 fixed control_y trap problem 2005-04-08 05:06:31 +00:00
Marty Kuhrt
37a547842b cast the call to Curl_inet_ntop for DECC compiler squawk 2005-04-08 05:01:40 +00:00
Daniel Stenberg
b9f1d43921 Unfortunately, if a ca file name is set the function fails for whatever reason
(missing file, bad file, etc), gnutls will no longer handshake properly but it
just loops forever. Therefore, we must return error if we get an error when
setting the CA cert file name. This is not the same behaviour as with OpenSSL.

Question/report posted to the help-gnutls mailing list, April 8 2005.
2005-04-07 22:47:43 +00:00
Daniel Stenberg
bec6423c02 one down 2005-04-07 22:14:22 +00:00
Daniel Stenberg
241b2b4ae3 set LD_LIBRARY_PATH when GnuTLS has been found 2005-04-07 22:13:40 +00:00
Daniel Stenberg
14d9b56937 cut 'n paste error 2005-04-07 21:12:09 +00:00
Daniel Stenberg
1c3766eb46 GnuTLS updates 2005-04-07 21:10:31 +00:00
Daniel Stenberg
70024d61eb GnuTLS! 2005-04-07 21:05:45 +00:00
Daniel Stenberg
2085f133d6 added new files 2005-04-07 20:56:04 +00:00
Daniel Stenberg
2a045dfceb fixed to build after the GnuTLS fixes 2005-04-07 20:36:48 +00:00
Daniel Stenberg
893cbaaf2f added some blurb about the GnuTLS license 2005-04-07 15:28:56 +00:00
Daniel Stenberg
6e61939382 GnuTLS support added. There's now a "generic" SSL layer that we use all over
internally, with code provided by sslgen.c. All SSL-layer-specific code is
then written in ssluse.c (for OpenSSL) and gtls.c (for GnuTLS).

As far as possible, internals should not need to know what SSL layer that is
in use. Building with GnuTLS currently makes two test cases fail.

TODO.gnutls contains a few known outstanding issues for the GnuTLS support.

GnuTLS support is enabled with configure --with-gnutls
2005-04-07 15:27:13 +00:00
Daniel Stenberg
015a618172 ssl_version_num is not used anymore 2005-04-07 15:21:50 +00:00
Daniel Stenberg
2a8b91cdb9 ssl_version_num won't be used anymore since we will soon offer multiple SSL
layers and it won't make sense to provide a numerical version for it. I also
doubt that many people have used this for anything critical.
2005-04-07 15:18:51 +00:00
Daniel Stenberg
bebd5dbc5a Add support for --with-gnutls. If configure detects OpenSSL, you need to
to explicitly disable that first with --without-ssl. Initial attempt.
2005-04-07 15:12:03 +00:00
Daniel Stenberg
018dbfe058 bail out if perl is missing, it is needed for building curl anyway 2005-04-07 14:26:03 +00:00
Daniel Stenberg
c6ea597817 check for libtoolize and aclocal to doublecheck the installations better 2005-04-07 08:59:39 +00:00
Daniel Stenberg
175b00c0a2 Try harder to see if arpa/nameser_compat.h REALLY is a good header file to
include, as it seems at least some AIX versions don't really allow it to be
include at the same time as the original nameser.h.
2005-04-07 07:38:53 +00:00
Daniel Stenberg
5ebc6e305e add SSPI 2005-04-07 07:30:02 +00:00
Daniel Stenberg
993600761f Tupone Alfredo fixed includes of arpa/nameser_compat.h to build fine on Mac OS
X.
2005-04-06 22:27:42 +00:00
Daniel Stenberg
1d9fff80b7 better errno constant replacements, as mentioned by Gisle Vanem 2005-04-06 21:14:58 +00:00
Gisle Vanem
c712b84dd5 Include inet_net_pton.h for 'struct in6_addr'. Ideally this
should come from <ws2tcpip.h>, but Winsock 1.1 should
suffice.
2005-04-06 18:58:33 +00:00
Gisle Vanem
dcf8dd4b5e Moved inet_net_pton.h to HHEADERS. 2005-04-06 18:55:59 +00:00
Daniel Stenberg
ba26c3fb22 check for struct sizes and use those sizes if the NS_* defines are lacking
(IRIX 6.5.22 it seems)
2005-04-06 14:11:50 +00:00
Daniel Stenberg
41563607a8 moved the *_inet_pton protos to inet_net_pton.h instead 2005-04-06 14:02:37 +00:00
Daniel Stenberg
2d4dcfb740 made the ares_inet_net_pton() proto use size_t size, as the function in the
code uses that
2005-04-06 13:54:02 +00:00
Dan Fandrich
34854e70cf Removed extraneous comma 2005-04-06 00:39:48 +00:00
Daniel Stenberg
758d9fe852 too late hacking error 2005-04-05 21:14:59 +00:00
Daniel Stenberg
6a6c0e7a73 test time-conditioned FTP uploads 2005-04-05 21:07:27 +00:00
Daniel Stenberg
ee44eec3e1 Christophe Legry's fix to grok time-conditoned uploads 2005-04-05 20:59:12 +00:00
Daniel Stenberg
eccd0d8e37 with these changes, it builds on my win32 cross-compiler 2005-04-05 20:20:14 +00:00
Daniel Stenberg
983be0ec60 check for another arpa header 2005-04-05 20:19:55 +00:00
Daniel Stenberg
243a45d840 check for the arpa/* headers 2005-04-05 20:08:15 +00:00
Dominick Meglio
60ec804047 Provided implementations of inet_net_pton and inet_pton from BIND for systems that do not include these functions. These will be necessary for CIDR support and IPv6 support. 2005-04-05 18:26:55 +00:00
Daniel Stenberg
c53e9ccf4a 7.13.3 in progress 2005-04-05 15:11:51 +00:00
Daniel Stenberg
6e8e0418fc 5.11 How do I make libcurl not receive the whole HTTP response? 2005-04-05 14:38:38 +00:00
Daniel Stenberg
e9eb52305f two more actual FAQs 2005-04-05 14:36:37 +00:00
Daniel Stenberg
8501ae748c restart with a blank page again 2005-04-05 07:55:41 +00:00
Daniel Stenberg
da59692067 the smell of release 2005-04-05 07:37:08 +00:00
Daniel Stenberg
bae77c0a46 bug report #1156287, ftp upload from VMS 2005-04-05 07:33:30 +00:00
Daniel Stenberg
b42bc7329e win resolve crash, win makefile fix 2005-04-04 22:38:53 +00:00
Daniel Stenberg
9b3c2b6ae2 kill warnings 2005-04-04 21:23:04 +00:00
Daniel Stenberg
833b6df969 Marcelo Juchem's improvements 2005-04-04 13:21:03 +00:00
Gisle Vanem
0b45431139 hostthre.c: destroy_thread_data() made public. Called
from url.c: Curl_disconnect().
2005-04-04 12:30:03 +00:00
Daniel Stenberg
5d1349031c spell fixes, based on the Debian bug report #302820 submitted by "A Costa" 2005-04-04 08:07:04 +00:00
Daniel Stenberg
82388a5e4c fix of tonight 2005-04-03 23:01:33 +00:00
Daniel Stenberg
74816fed6c Hardeep Singh reported a problem doing HTTP POST with Digest. (It was actually
also affecting NTLM and Negotiate.) It turned out that if the server responded
with 100 Continue before the initial 401 response, libcurl didn't take care of
the response properly. Test case 245 and 246 added to verify this.
2005-04-03 22:46:25 +00:00
Daniel Stenberg
b4c9789d5f Test 245 was just added in an attempt to repeat Hardeep Singh's recent bug.
But this works just fine on my host. Plain HTTP POST using Digest.
2005-04-03 22:18:27 +00:00
Daniel Stenberg
f96fadc074 fixed bad comment, pointed out by Marcelo Juchem 2005-03-31 20:34:24 +00:00
Daniel Stenberg
f6b1173437 copyright this year 2005-03-31 14:42:28 +00:00
Daniel Stenberg
346992c366 Attempt to make this code more forgiving for systems that doesn't detect
the failed connect "immediately".
2005-03-31 14:10:54 +00:00
Daniel Stenberg
ab4086bc24 Updated the copyright year since changes have been this year. 2005-03-31 07:02:02 +00:00
Daniel Stenberg
d8e7f2b2c7 the cookie API is better and more likely to happen in a separate release 2005-03-31 06:55:17 +00:00
Daniel Stenberg
93fcb94b62 fix configure's SSL-detection for msys/mingw (from Andres Garcia) 2005-03-30 20:55:44 +00:00
Daniel Stenberg
32a446cf19 format mistake in --form-string, pointed out by Owen Watson 2005-03-30 06:31:32 +00:00
Daniel Stenberg
94459cab98 Better connection keep-alive when POSTing with HTTP Digest or Negotiate. 2005-03-29 21:08:57 +00:00
Daniel Stenberg
158588640a Don't close the connection if we're in a known negotiation mode and we won't
send any data anyway. Probably the bug Tom Moers noticed.
2005-03-29 12:28:25 +00:00
Daniel Stenberg
f00f050d1b proxy multi auth fix, --proxy-anyauth, ftp-ssl and ftp response reading fix 2005-03-29 11:54:07 +00:00
Daniel Stenberg
c4f34c60a5 postpone these 2005-03-29 11:53:22 +00:00
Daniel Stenberg
371ef80dc3 When doing FTP-SSL, advance to the next state properly when the response to
AUTH has been received successfully.
2005-03-29 11:43:02 +00:00
Daniel Stenberg
84b4e9ff7c Fixed the FTP response reader function to properly deal with responses split
up in several chunks when read.
2005-03-29 11:35:25 +00:00
Daniel Stenberg
677a74fa1b Made the server send data to the control/data connections using two dedicated
functions. This enabled me to add a function that automatically delays between
each byte, to proper test curl's ability to read FTP server responses sent in
many (small) chunks. See also upcoming libcurl fixes...
2005-03-29 09:09:58 +00:00
Daniel Stenberg
8a076d1dba Based on Augustus Saunders' comments and findings, the HTTP output auth
function was fixed to use the proper proxy authentication when multiple ones
were added as accepted. test 239 and test 243 were added to repeat the
problems and verify the fixes.
2005-03-28 22:19:31 +00:00
Daniel Stenberg
970722483c Added --proxy-anyauth 2005-03-28 22:17:49 +00:00
Daniel Stenberg
31443724c6 modified some log outputs, added comment about auth required as used in
test 154
2005-03-28 22:15:17 +00:00
Daniel Stenberg
0e7614919b can you spell copy and paste error for me loud and clear? ;-P 2005-03-22 19:58:00 +00:00
Daniel Stenberg
2bf72937d2 provide HTML and PDF versions of the man pages in the dist archive 2005-03-22 19:46:49 +00:00
Daniel Stenberg
4e555c7b32 When cross-compiling, we do some better checking for the NI_WITHSCOPEID option instead of just assuming it is present. 2005-03-22 18:02:06 +00:00
Gisle Vanem
bd7021d05b CURL_EXTERN is already in <curl/curl.h>. 2005-03-22 10:37:26 +00:00
Gisle Vanem
1a14555605 Prevent redefinition warning with CURLDEBUG. 2005-03-22 10:36:20 +00:00
Daniel Stenberg
cb3fb371ea moved out the changes from 2004 to CHANGES.2004 2005-03-22 09:23:56 +00:00
Dan Fandrich
6c6dda1b74 Fixed typo. 2005-03-22 01:24:27 +00:00
Daniel Stenberg
a712808006 the same fix here too, typecast to prevent win32 compiler warning 2005-03-21 22:38:45 +00:00
Daniel Stenberg
e19c203728 typecase to fix win32 compiler warning (and intended as other code is) 2005-03-21 22:37:18 +00:00
Daniel Stenberg
8817779f23 Modified the VALID_SOCK() macro to become VERIFY_SOCK() instead. It is slighly
more involved, but should hopefully not generate any compiler warnings on
win32 systems (that can't check the socket based on the numeric).
2005-03-21 22:34:07 +00:00
Daniel Stenberg
3e5a32671c Make NTLM tests depend on the NTLM feature at not SSL, since the NTLM support
is no longer only present when built with SSL support.
2005-03-21 08:14:32 +00:00
Daniel Stenberg
d34f32b39e format mistake 2005-03-21 07:45:18 +00:00
Daniel Stenberg
c85a77e0b1 removed a (fairly useless) debug output just to compile without warning 2005-03-20 12:46:11 +00:00
Daniel Stenberg
9406e517e6 silence win32 compiler warnings 2005-03-20 12:29:15 +00:00
Daniel Stenberg
4a56049225 attempt to fix the ares link breakage with --enable-debug in libcurl and here 2005-03-20 00:38:50 +00:00
Daniel Stenberg
04ea4b4d75 silence warnings on win32 about static functions that are never used 2005-03-19 01:03:46 +00:00
Daniel Stenberg
5b6b6283f3 some additional debug output 2005-03-19 01:00:00 +00:00
Daniel Stenberg
38f07ce0fb fix compiler warning 2005-03-19 00:44:55 +00:00
Dan Fandrich
987cdebefb Fixed spelling of --runtestopts 2005-03-18 18:41:50 +00:00
Dan Fandrich
6b978db369 Netware builds don't use configure. 2005-03-18 18:03:38 +00:00
Daniel Stenberg
5840c8cb70 fix by Kyrre Kristiansen 2005-03-18 10:16:49 +00:00
Daniel Stenberg
44f2024bab adjust to use plain 'make' even for cross-compiles if using configure-
style build
2005-03-18 09:21:25 +00:00
Daniel Stenberg
410942e9df a Common Lisp binding 2005-03-18 09:01:42 +00:00
Dan Fandrich
5b3730feae Change the bogus address used in test237 to be more reliable when run
on a host with a buggy resolver that strips all but the bottom 8 bits of
each octet.  The resolved address in this case (192.0.2.127) is guaranteed
never to belong to a real host (see RFC3330).
2005-03-17 20:50:17 +00:00
Dan Fandrich
38f797ccd6 Use the proper macro to do uClibc detection. 2005-03-17 20:32:59 +00:00
Daniel Stenberg
553c5a7501 include inet_pton.h 2005-03-17 19:12:15 +00:00
Daniel Stenberg
bbba9d568f added descriptions 2005-03-17 12:16:24 +00:00
Daniel Stenberg
11e43dd021 update year 2005-03-17 12:00:23 +00:00
Daniel Stenberg
e8ddf84871 don't set TEST_F to blank when --runtestopts isn't used, as that will override
the default options set in the Makefile
2005-03-17 09:44:09 +00:00
Daniel Stenberg
67f04d2d5f support multiple error codes for a test case since some things just vary
between platforms
2005-03-17 08:17:48 +00:00
Daniel Stenberg
8f646eef45 add 'FTP ASCII transfers' here, since they seem to be frequently attempted
these days...!
2005-03-17 08:09:10 +00:00
Daniel Stenberg
d26e932858 add new option 2005-03-17 08:04:08 +00:00
Daniel Stenberg
73b9d0840c add new file 2005-03-17 08:04:00 +00:00
Daniel Stenberg
2ea4326c40 its a start 2005-03-17 08:03:46 +00:00
Daniel Stenberg
8b80ac2877 use Curl_inet_pton(), not inet_pton(). 2005-03-17 07:40:15 +00:00
Dan Fandrich
233237740d Added the --runtestsopts option to testcurl.pl to override the default
options used by runtests.pl during testing (useful for disabling valgrind).
2005-03-17 00:57:17 +00:00
Dan Fandrich
f5cdac38bd Removed references to config-vms.h from the makefiles. 2005-03-16 23:09:39 +00:00
Dan Fandrich
760565dcad Removed old VMS config files (on behalf of Marty Kuhrt). The VMS build
scripts use the version in packages/vms/
2005-03-16 22:27:05 +00:00
Daniel Stenberg
b5d97b3d94 more 2005-03-16 22:03:55 +00:00
Daniel Stenberg
4a6cc54eb5 check for the HTTPS server in a manner similar to how we check for the HTTP
server
2005-03-16 22:02:09 +00:00
Daniel Stenberg
61133545f6 - Tru64 and some IRIX boxes seem to not like test 237 as it is. Their
inet_addr() functions seems to use &255 on all numericals in a ipv4 dotted
  address which makes a different failure... Now I've modified the ipv4
  resolve code to use inet_pton() instead in an attempt to make these systems
  better detect this as a bad IP address rather than creating a toally bogus
  address that is then passed on and used.
2005-03-16 22:01:39 +00:00
Dan Fandrich
bf87d13f5b Fixed some compiler warnings I should have noticed before. 2005-03-16 02:25:12 +00:00
Dan Fandrich
efaf688650 Fixed ftp support with uClibc due to differing inet_ntoa_r() behaviour. 2005-03-15 21:00:46 +00:00
Daniel Stenberg
9a5c21c16f test EPSV and PASV response handling when they get well-formated data back
but using illegal values
2005-03-15 12:33:08 +00:00
Daniel Stenberg
06ffb47ef2 initial man page attempt for testcurl.pl 2005-03-15 12:13:37 +00:00
Daniel Stenberg
1acbda97e0 new options to testcurl.pl, fixed curl-config and removed compiler warnings 2005-03-15 07:50:16 +00:00
Daniel Stenberg
d6460aff36 added missing features to curl-config 2005-03-15 07:49:47 +00:00
Daniel Stenberg
a357f77c4c nonsense change for(;;) => while(1) just to prevent gcc from warning on
never executed code when -Wunreachable-code is used
2005-03-15 07:48:45 +00:00
Daniel Stenberg
d5bdd2b2f9 prevent compiler warning 2005-03-15 07:47:59 +00:00
Daniel Stenberg
562d2de303 Added lots of new command line options, made confsuffix get set based on
targetos only and not build os. Commented away the line that enables perl
warnings.
2005-03-15 07:35:36 +00:00
Dan Fandrich
1f68fa19c7 Finally fixed the LDAP library searching bug on libtool ver. 1.5 2005-03-15 04:47:07 +00:00
Dan Fandrich
677ddd6160 Make nonexistent host names absolute so tests will pass on machines
with a wildcard DNS search domain.
2005-03-15 04:04:50 +00:00
Dan Fandrich
228e627475 Use the libtool variables better to make LDAP library search work on
more platforms.
2005-03-14 19:37:07 +00:00
Daniel Stenberg
ec4e653c6f hushing up more warnings 2005-03-14 15:51:10 +00:00
Daniel Stenberg
3916d1e6cb silence compiler warnings for mingw win32 builds --enable-debug 2005-03-14 15:43:23 +00:00
Daniel Stenberg
387aaba810 show LDFLAGS too 2005-03-14 12:26:29 +00:00
Daniel Stenberg
9f3d9da119 if ws2_32 is used, append the lib last in the LIBS list (too) to make it
build and link fine with c-ares
2005-03-14 09:39:11 +00:00
Gisle Vanem
76c24a0d82 Avoid "unused variable" warnings. 2005-03-14 09:37:08 +00:00
Daniel Stenberg
ffd65a1956 configure --enable-sspi 2005-03-14 08:15:06 +00:00
Daniel Stenberg
de8947f92f security.h is removed 2005-03-14 07:46:42 +00:00
Daniel Stenberg
d2b4dedbe4 two issues fixed 2005-03-14 00:52:14 +00:00
Daniel Stenberg
34865ffb4a include security.h with lowercase s to work on cross-compiled mingw 2005-03-14 00:01:30 +00:00
Daniel Stenberg
62970da675 Removed security.h since it shadows an include file mingw needs when building
for SSPI support. The contents of the file has been moved into the krb4.h file.
2005-03-14 00:00:45 +00:00
Daniel Stenberg
8ed31c48e0 Added --enable-sspi that now make libcurl build with SSPI support. This only
works when built for win32.
2005-03-13 23:59:28 +00:00
Gisle Vanem
13d40e33a4 Prevent gcc warning. 2005-03-13 09:21:54 +00:00
Daniel Stenberg
c765213aaa found a common lisp binding 2005-03-12 22:55:57 +00:00
Daniel Stenberg
983bf93a24 --form-string 2005-03-12 19:49:55 +00:00
Daniel Stenberg
2f8085af15 David Houlder added --form-string 2005-03-12 19:39:27 +00:00
Gisle Vanem
88a4dc2795 Swap <security.h> and <sspi.h> (needed for MingW). 2005-03-12 17:31:15 +00:00
Dan Fandrich
b5112096d7 Work around a bug in libtool ver. 1.5 during LDAP library detection. 2005-03-11 23:07:40 +00:00
Daniel Stenberg
fc80c714e8 added CURL_VERSION_SSPI 2005-03-11 15:18:46 +00:00
Daniel Stenberg
84bc23b92f curl_version_info() returns the feature bit CURL_VERSION_SSPI 2005-03-11 15:10:36 +00:00
Daniel Stenberg
d90472dd64 fixed two leftover from Christopher's patch 2005-03-11 15:10:08 +00:00
Daniel Stenberg
3b63ed8230 the ares_parse_aaaa_reply man page 2005-03-11 08:34:51 +00:00
Daniel Stenberg
e75441e027 Check for winsock.h to work with win32. Only include system headers we know
exist.
2005-03-11 08:14:36 +00:00
Daniel Stenberg
0ae8b51230 Replace AC_TRY_RUN() with AC_EGREP_CPP() when checking for constants to
work fine with cross-compiled builds.
2005-03-11 08:06:57 +00:00
Daniel Stenberg
547c136b4f oops, once is enough! ;-) 2005-03-11 08:03:20 +00:00
Daniel Stenberg
4ed13bde55 Define HAVE_AF_INET6_H for Netware too, as Guenter Knauf's builds indicate. 2005-03-11 07:53:42 +00:00
Dan Fandrich
80e01deba0 Added HAVE_AF_INET6 to Netware's config.h 2005-03-11 07:52:24 +00:00
Dan Fandrich
fb9ae9d0e2 Fixed some compiler warnings. 2005-03-11 05:49:04 +00:00
Dan Fandrich
dd54d8551b Added HAVE_STRUCT_IN6_ADDR to Netware's config.h 2005-03-11 05:39:37 +00:00
Dan Fandrich
205f8b266c Fixed LDAP library file name bug (KNOWN_BUGS #1). configure now auto-detects
the correct dynamic library names by default, and provides override switches
--with-ldap-lib, --with-lber-lib and --without-lber-lib.  Added
CURL_DISABLE_LDAP to platform-specific config files to disable LDAP
support on those platforms that probably don't have dynamic OpenLDAP
libraries available to avoid compile errors.
2005-03-11 05:28:07 +00:00
Daniel Stenberg
c4ce9ac4de Add an alert already here if 'make test' is attempted for a cross-compile
since there's no use building the whole test suite first and _then_ tell it
doesn't work anyway...
2005-03-11 00:44:32 +00:00
Daniel Stenberg
0e4e28fdda no more rewriting of the setup file 2005-03-11 00:20:30 +00:00
Daniel Stenberg
db2370a12f Dominick Meglio added ares_parse_aaaa_reply.c and did various adjustments. The
first little steps towards IPv6 support!
2005-03-10 23:30:34 +00:00
Daniel Stenberg
d1d35ba85f Christopher R. Palmer made it possible to build libcurl with the
USE_WINDOWS_SSPI on Windows, and then libcurl will be built to use the native
way to do NTLM. SSPI also allows libcurl to pass on the current user and its
password in the request.
2005-03-10 23:15:29 +00:00
Daniel Stenberg
2ab2e7675c configure, socks, debug, getdate 2005-03-09 23:35:14 +00:00
Daniel Stenberg
0472629222 As reported by 'nodak sodak' we should check for a NULL pointer before
referencing the proxy name pointer.
2005-03-09 22:13:52 +00:00
Dan Fandrich
c4f7570a23 Stopped linking to the SSL libs if a full installation isn't found.
Removed a redundant library check.
2005-03-09 18:40:41 +00:00
Daniel Stenberg
d26cfd5791 skip the test of "2094 Nov 6" for now, since the 64bit time_t systems return
different values for it...
2005-03-09 07:56:32 +00:00
Daniel Stenberg
b7ffc6bb45 remove old printf() debug leftover 2005-03-08 22:21:59 +00:00
Daniel Stenberg
8a96aec567 mktime() returns a time_t. time_t is often 32 bits, even on many architectures
that feature 64 bit 'long'.

Some systems have 64 bit time_t and deal with years beyond 2038. However, even
some of the systems with 64 bit time_t returns -1 for dates beyond 03:14:07
UTC, January 19, 2038. (Such as AIX 5100-06)
2005-03-08 16:31:56 +00:00
Daniel Stenberg
5cd9f57137 days are english 2005-03-08 11:15:29 +00:00
Daniel Stenberg
702664e959 Dominick Meglio reported that using CURLOPT_FILETIME when transferring a FTP
file got a Last-Modified: header written to the data stream, corrupting the
actual data. This was because some conditions from the previous FTP code was
not properly brought into the new FTP code. I fixed and I added test case 520
to verify. (This bug was introduced in 7.13.1)
2005-03-08 08:09:14 +00:00
Dan Fandrich
18d87edd6d Fixed the --with-zlib configure option so that it always adds the specified
path to the compiler flags.  Before, a zlib installation in the default
path was always used in preference to the one in the desired location.
2005-03-08 03:24:49 +00:00
Dan Fandrich
dc59795629 fseek() with SEEK_SET is broken on large file capable 32-bit systems, so
revert to the SEEK_END method of repositioning the stream after a ftruncate()
and only use SEEK_SET if ftruncate() isn't available.
2005-03-07 18:59:04 +00:00
Daniel Stenberg
cb9bb31f7d test 236: FTP resume upload but denied access to remote file 2005-03-07 08:29:28 +00:00
Daniel Stenberg
02706bec94 valgrind.pm fixed 2005-03-07 08:11:36 +00:00
Daniel Stenberg
7657186bf6 added valgrind.pm to the dist 2005-03-06 22:33:05 +00:00
Dan Fandrich
42ac24448c Better cope with a failed or unavailable ftruncate().
Added HAVE_FTRUNCATE to all the static config-*.h files on the assumption
that all those systems provide it.
2005-03-05 00:54:16 +00:00
Daniel Stenberg
31891b55a4 Samuel Daz Garca's correction 2005-03-05 00:04:52 +00:00
Daniel Stenberg
aa47ac4c06 Added test case 235 that makes a resumed upload of a file that isn't present
on the remote side. This then converts the operation to an ordinary STOR
upload. This was requested/pointed out by Ignacio Vazquez-Abrams.

It also proved (and I fixed) a bug in the newly rewritten ftp code (and
present in the 7.13.1 release) when trying to resume an upload and the servers
returns an error to the SIZE command. libcurl then loops and sends SIZE
commands infinitely.
2005-03-04 23:52:06 +00:00
Dan Fandrich
b01151e81c Reduced the length of data read from the random entropy file. 2005-03-04 22:36:56 +00:00
Dan Fandrich
67bd6f9ccd Don't try to read the whole of the random file because when /dev/urandom is
used, it slows initialization too much reading an infinitely long file!
2005-03-04 20:10:29 +00:00
Daniel Stenberg
4869fa285b 7.13.2-CVS 2005-03-04 15:42:33 +00:00
Daniel Stenberg
d221e01406 starting over 2005-03-04 14:09:04 +00:00
Daniel Stenberg
874fc8228a stand clear for release time 2005-03-04 13:41:46 +00:00
Daniel Stenberg
6f752c64bc Dave Dribin made it possible to set CURLOPT_COOKIEFILE to "" to activate
the cookie "engine" without having to provide an empty or non-existing file.
2005-03-04 00:26:50 +00:00
Daniel Stenberg
ccb7950c4c killed trailing whitespace 2005-03-04 00:24:52 +00:00
Daniel Stenberg
750e771376 killed trailing whitespace 2005-03-04 00:14:45 +00:00
Daniel Stenberg
7012a4a291 Rene Rebe fixed a -# crash when more data than expected was retrieved. 2005-03-04 00:12:02 +00:00
Daniel Stenberg
40ab20a252 new VB binding 2005-03-03 23:27:09 +00:00
Daniel Stenberg
6af315e50c VB binding, updated the .NET info 2005-03-03 23:25:13 +00:00
Daniel Stenberg
861b5e608b mention buffer overflows fixed 2005-03-03 13:13:21 +00:00
Daniel Stenberg
f61917594e fix the distribution files 2005-03-03 06:51:31 +00:00
Dan Fandrich
0ddab51ad8 Fix for a base64 decode heap buffer overflow vulnerability. 2005-02-28 23:54:17 +00:00
Dan Fandrich
9798432f56 Fixed some compiler warnings. Fixed a low incidence memory leak in the test server. 2005-02-24 18:54:23 +00:00
Daniel Stenberg
5faf52619d Updated as suggested by Samuel Daz Garca 2005-02-22 18:39:40 +00:00
Daniel Stenberg
f8b4ba80e0 krb4 fixed 2005-02-22 12:20:30 +00:00
Daniel Stenberg
527f70e540 Curl_base64_decode() now returns an allocated buffer 2005-02-22 12:10:30 +00:00
Daniel Stenberg
19f66c7575 Thanks for the notification iDEFENCE. We are the "initial vendor" and we sure
got no notification, no mail, no nothing.

You didn't even bother to mail us when you went public with this. Cool.

NTLM buffer overflow fix, as reported here:

http://www.securityfocus.com/archive/1/391042
2005-02-22 07:44:14 +00:00
Daniel Stenberg
b7721deb02 added test case 234 which is like 233 but uses --location-trusted instead so
thus the second request to the new host will use authentication fine
2005-02-19 22:33:06 +00:00
Daniel Stenberg
5ba188ab2d Ralph Mitchell reported a flaw when you used a proxy with auth, and you
requested data from a host and then followed a redirect to another
host. libcurl then didn't use the proxy-auth properly in the second request,
due to the host-only check for original host name wrongly being extended to
the proxy auth as well. Added test case 233 to verify the flaw and that the
fix removed the problem.
2005-02-18 23:53:07 +00:00
Daniel Stenberg
eadfd78c2e socket leak, mingw build 2005-02-18 11:54:52 +00:00
Daniel Stenberg
4d815c9990 Based on Mike Dobbs' report, BUILDING_LIBCURL is now defined in here if it
runs to build with mingw.
2005-02-18 08:24:53 +00:00
Daniel Stenberg
176981b529 close the socket properly when returning error due to failing localbind
Bug report #1124588 by David
2005-02-17 14:45:03 +00:00
Daniel Stenberg
85baebd0d4 mention filename= for the -F 2005-02-17 07:47:32 +00:00
Daniel Stenberg
ac022b2e30 Christopher R. Palmer reported a problem with HTTP-POSTing using "anyauth"
that picks NTLM. Thanks to David Byron letting me test NTLM against his
servers, I could quickly repeat and fix the problem. It turned out to be:

When libcurl POSTs without knowing/using an authentication and it gets back a
list of types from which it picks NTLM, it needs to either continue sending
its data if it keeps the connection alive, or not send the data but close the
connection. Then do the first step in the NTLM auth. libcurl didn't send the
data nor close the connection but simply read the response-body and then sent
the first negotiation step. Which then failed miserably of course. The fixed
version forces a connection if there is more than 2000 bytes left to send.
2005-02-16 14:31:23 +00:00
Daniel Stenberg
f169b750b8 check for ENGINE_load_builtin_engines() as well if engine is around 2005-02-14 23:50:29 +00:00
Marty Kuhrt
86295eef13 changed config-vms info 2005-02-14 22:37:59 +00:00
Marty Kuhrt
32d60b2714 changed curlmsg.* entries to see if CVS would ignore it now 2005-02-14 22:36:21 +00:00
Daniel Stenberg
0a3065a2f2 Rename Curl_pretransfersec() to *_second_connect() since it does not just
do pretransfer stuff like Curl_pretransfer().
2005-02-14 09:30:40 +00:00
Daniel Stenberg
b98faaa8c0 Fixed bad krb4 code. It always tried to use krb4 if built enabled. 2005-02-11 22:50:57 +00:00
Marty Kuhrt
73772323c9 rename amigaos.c and nwlib.c if they exist before building 2005-02-11 22:42:16 +00:00
Daniel Stenberg
98389066e2 Removed per Marty's request: The .h_* files aren't needed anymore, I
consolidated them into one file called config-vms.h.  The curlmsg.h and .sdl
files are generated from the curlmsg.msg file and, thus, shouldn't be in the
dist.
2005-02-11 22:05:04 +00:00
Marty Kuhrt
fb53ed4c1f re-sync'd with curlmsg.msg 2005-02-11 21:17:23 +00:00
Marty Kuhrt
e719eb5b81 ignore curlmsg.h and .sdl as they are generated by curlmsg.msg 2005-02-11 21:07:35 +00:00
Marty Kuhrt
3858063bcd sync'd error codes with include/curl.h 2005-02-11 21:01:52 +00:00
Marty Kuhrt
d4f5fea840 Added $Id$ and pre-exisiting logical check 2005-02-11 20:17:21 +00:00
Daniel Stenberg
22c1d48cb2 remove the check for strftime(), we don't need it 2005-02-11 19:34:05 +00:00
Daniel Stenberg
e7cefd684b Removed all uses of strftime() since it uses the localised version of the
week day names and month names and servers don't like that.
2005-02-11 00:03:49 +00:00
Daniel Stenberg
d2485e4f20 valgrind stuff for test suite, vms build and more 2005-02-10 08:57:23 +00:00
Daniel Stenberg
160d6b26b0 Moved out the valgrind report parser to valgrind.pm, to make it easier to
test it outside the test suite. Now we also disable valgrind usage if libcurl
was built shared, as then valgrind is only testing the wrapper-script running
shell which is pointless.
2005-02-10 08:50:33 +00:00
Daniel Stenberg
17d61e4f29 typecast assign to ftpport from int to prevent warnings 2005-02-10 07:45:26 +00:00
Daniel Stenberg
446b9467da init fix for non-SSL builds 2005-02-10 07:45:08 +00:00
Marty Kuhrt
3970a7056c Reduced the two config-vms.h_* files into this one. 2005-02-10 01:54:11 +00:00
Daniel Stenberg
74068a6d1b David Byron fixed his SSL problems, initially mentioned here:
http://curl.haxx.se/mail/lib-2005-01/0240.html. It turned out we didn't use
SSL_pending() as we should.

This was TODO-RELEASE issue #59.
2005-02-09 23:16:03 +00:00
Daniel Stenberg
8c83422fe2 David Byron identified the lack of SSL_pending() use, and this is my take
at fixing this issue.
2005-02-09 23:09:12 +00:00
Daniel Stenberg
61a1e3cd01 better error checking and SSL init by David Byron 2005-02-09 23:04:51 +00:00
Daniel Stenberg
89cac6f25c prevent a compiler warning 2005-02-09 22:47:57 +00:00
Gisle Vanem
62082293c5 Some functions are static here, but extern in libxml's
SAX.h. gcc doesn't like that. Rename.
2005-02-09 15:15:01 +00:00
Daniel Stenberg
153fd2752c the new ftp code and Gisle's DICT fix 2005-02-09 14:34:46 +00:00
Daniel Stenberg
e649a40f5d issue #54 done 2005-02-09 14:29:57 +00:00
Gisle Vanem
32d76a5b57 Set 'bits.close' in case of malloc fail.
Don't free 'lud_dn' twice in case curl_unescape()
fails.
2005-02-09 14:28:35 +00:00
Daniel Stenberg
14aa3fa258 add missing error codes 2005-02-09 14:13:21 +00:00
Gisle Vanem
f5394cccb1 Use CURL_SOCKET_BAD. 2005-02-09 14:01:15 +00:00
Gisle Vanem
64dd9c7656 Handle CURLE_LOGIN_DENIED in strerror.c.
For ftp only?
2005-02-09 13:59:40 +00:00
Daniel Stenberg
16ae0c6466 FD_SET can be big macro, use braces 2005-02-09 13:47:35 +00:00
Daniel Stenberg
6a2e21ec8c FTP code turned into state machine. Not completely yet, but a good start.
The tag 'before_ftp_statemachine' was set just before this commit in case
of future need.
2005-02-09 13:06:40 +00:00
Gisle Vanem
120f17ce04 Replace LF with CRLF. Ref RFC-2229, sec 2.3:
"Each command line must be terminated by a CRLF".
2005-02-09 11:50:41 +00:00
Daniel Stenberg
ab938bb9bd -O clarification 2005-02-08 23:39:47 +00:00
Daniel Stenberg
33820cd2ac inflate and out of memory fixes 2005-02-08 19:07:28 +00:00
Daniel Stenberg
41def21f91 ares_gethostbyname wants a 'ares_host_callback' in the 4th argument 2005-02-08 19:03:27 +00:00
Gisle Vanem
d118312922 Curl_addrinfo?_callback() and addrinfo_callback() now returns
CURLE_OK or CURLE_OUT_OF_MEMORY.
Add typecast in hostares.c.
2005-02-08 12:36:13 +00:00
Gisle Vanem
82b93e4945 Don't free too much in freedirs() if realloc() fails. 2005-02-08 12:32:28 +00:00
Daniel Stenberg
e36fb1ecda Curl_wait_for_resolv() no longer disconnects on failure, but leaves that
operation to the caller. Disconnecting has the disadvantage that the conn
pointer gets completely invalidated and this is not handled on lots of places
in the code.
2005-02-08 07:36:57 +00:00
Dan Fandrich
e4a1788614 Fix for a bug report that compressed files that are exactly 64 KiB long
produce a zlib error.
2005-02-07 19:12:37 +00:00
Gisle Vanem
7b23eff9cf Preserve previous status in Curl_http_done(). 2005-02-06 12:43:40 +00:00
Daniel Stenberg
67ff8e3ea3 valgrind errors occur too often when 'make test' is used. It is because too
many third-party libs and tools have problems. When curl is built without
--disable-shared, the testing is done with a front-end script which makes the
valgrind testing include (ba)sh as well and that often causes valgrind
errors. Either we improve the valgrind error scanner a lot to better identify
(lib)curl errors only, or we disable valgrind checking by default
2005-02-05 10:25:20 +00:00
Daniel Stenberg
2248599ae1 fix type 2005-02-04 23:53:12 +00:00
Daniel Stenberg
29350b363b Eric Vergnaud found a use of an uninitialized variable 2005-02-04 23:43:44 +00:00
Daniel Stenberg
83c470a443 David Byron pointed out that this -1 on the buffer size is pointless since
the buffer is already BUFSIZE +1 one big to fit the extra trailing zero. This
change is reported to fix David's weird SSL problem...
2005-02-04 13:42:41 +00:00
Daniel Stenberg
ab96e2d6e9 another example 2005-02-02 19:25:49 +00:00
Daniel Stenberg
6b81cf4bc9 HTML parsing example with libtidy, by Jeff Pohlmeyer 2005-02-02 19:25:37 +00:00
Daniel Stenberg
0d9301539e and we start over again 2005-02-01 08:46:06 +00:00
Daniel Stenberg
4a9e12542d 7.13 coming up 2005-02-01 07:54:36 +00:00
Daniel Stenberg
21b4105454 somewhat nicer libcurl usage 2005-01-31 20:03:01 +00:00
Daniel Stenberg
d7648d94ca htmltitle 2005-01-31 18:23:42 +00:00
Daniel Stenberg
883343ba63 HTML <head> parsing (with libxml) example code by Lars Nilsson. 2005-01-31 18:22:40 +00:00
Daniel Stenberg
16b5dc710f four changes 2005-01-30 22:57:19 +00:00
Daniel Stenberg
686d767053 if the DO operation returns failure, bail out and close down nicely to
prevent memory leakage
2005-01-30 22:54:06 +00:00
Daniel Stenberg
ed3176dd6b Let's add a cookie interface in 7.14 2005-01-30 13:26:12 +00:00
Daniel Stenberg
6a99ab098c Bugfixed the parser that scans the valgrind report outputs. I noticed that it
previously didn't detect and report the "Conditional jump or move depends on
uninitialised value(s)" error.

When I fixed this, I caught a few curl bugs with it. And then I had to spend
time to make the test suite IGNORE these errors when OpenSSL is used since it
produce massive amounts of valgrind warnings (but only of the "Conditional..."
kind it seems).

So, if a test that requires SSL is run, it ignores the "Conditional..."
errors, and you'll get a "valgrind PARTIAL" output instead of "valgrind OK".
2005-01-30 12:56:36 +00:00
Daniel Stenberg
b03adde546 properly mark tests as requiring feature 'SSL' 2005-01-30 12:53:05 +00:00
Daniel Stenberg
e6034ea299 Use calloc() to save us the memset() call and terminate conn->host.name
properly, to avoid reading uninited variables when using file:// (valgrind)
2005-01-30 12:42:15 +00:00
Daniel Stenberg
c7f51ebeab Clear the urlglob struct when allocated, since we might otherwise use
uninitialized variables. Pointed out to us by the friendly Valgrind.
2005-01-29 23:46:27 +00:00
Daniel Stenberg
9a820d7a98 include "url.h" for the Curl_safefree() proto 2005-01-29 22:38:45 +00:00
Daniel Stenberg
8dbaf534c8 Using the multi interface, and doing a requsted a re-used connection that
gets closed just after the request has been sent failed and did not re-issue
a request on a fresh reconnect like the easy interface did. Now it does!
(define CURL_MULTIEASY, run test case 160)
2005-01-29 22:31:06 +00:00
Daniel Stenberg
91f483c591 Define CURL_MULTIEASY when building this, to use my new curl_easy_perform()
that uses the multi interface to run the request. It is a great testbed for
the multi interface and I believe we shall do it this way for real in the
future when we have a successor to curl_multi_fdset().
2005-01-29 22:26:38 +00:00
Daniel Stenberg
c5b448038f corrected the URL 2005-01-29 13:54:15 +00:00
Daniel Stenberg
c4ff5eb0ca conn->ip_addr MUST NOT be used on re-used connections 2005-01-29 13:07:16 +00:00
Daniel Stenberg
0859cd2444 when using valgrind, include a much longer stack trace 2005-01-29 13:06:31 +00:00
Daniel Stenberg
59b45a90cc multi interface: when a request is denied due to "Maximum redirects followed"
libcurl leaked the last Location: URL.
2005-01-29 12:01:20 +00:00
Daniel Stenberg
f661475962 Connect failures with the multi interface was often returned as "connect()
timed out" even though the reason was different. Fixed this problem by not
setting this timeout to zero when using multi.
2005-01-28 23:21:24 +00:00
Daniel Stenberg
54b02ecf09 adjusted to the moved unlock of the DNS entry 2005-01-28 22:22:59 +00:00
Daniel Stenberg
4551e7ce49 KNOWN_BUGS #17 fixed. A DNS cache entry may not remain locked between two
curl_easy_perform() invokes. It was previously unlocked at disconnect, which
could mean that it remained locked between multiple transfers. The DNS cache
may not live as long as the connection cache does, as they are separate.

To deal with the lack of DNS (host address) data availability in re-used
connections, libcurl now keeps a copy of the IP adress as a string, to be able
to show it even on subsequent requests on the same connection.
2005-01-28 22:14:48 +00:00
Daniel Stenberg
064bc3ecbc Stephen More pointed out that CURLOPT_FTPPORT and the -P option didn't work
when built ipv6-enabled. I've now made a fix for it. Writing test cases for
custom port strings turned too tricky so unfortunately there's none.
2005-01-28 08:26:36 +00:00
Daniel Stenberg
cf38a4c470 test the EPRT/LPRT/PORT somewhat more 2005-01-27 23:03:02 +00:00
Daniel Stenberg
aacc79a3a3 Use the same work-around for the memdebug stuff as in the command line client,
to allow the contents of the env var decide the file name.
2005-01-27 22:40:56 +00:00
Daniel Stenberg
9864bf703d a slightly involved work-around to prevent the debug-tracing from logging
a free-without-alloc as the first call
2005-01-27 15:59:01 +00:00
Daniel Stenberg
289a42f050 Make the debug build get the debug dump file path from the environment
variable to allow the test suite to better control where it ends up.
2005-01-27 15:51:03 +00:00
Daniel Stenberg
ade1e79b37 verify a part of the PORT line 2005-01-27 12:59:40 +00:00
Daniel Stenberg
2415724d5f Make the server ignore the given PORT address, to make it possible to test
curl's -P option easier.
2005-01-26 23:18:31 +00:00
Daniel Stenberg
5463177f1f added more official web and download mirrors 2005-01-26 12:05:33 +00:00
Daniel Stenberg
4efd751eda new curlpp URL 2005-01-26 11:53:49 +00:00
Daniel Stenberg
2337efc3b1 fixed sort, mention C, the java binding is now maintained by Vic Hanson 2005-01-26 11:53:12 +00:00
Daniel Stenberg
b942a25a45 add number to the bugs to make them easier to refer to 2005-01-25 23:40:35 +00:00
Daniel Stenberg
beab9a9696 two known bugs 2005-01-25 22:21:42 +00:00
Daniel Stenberg
177dbc7be0 Ian Ford asked about support for the FTP command ACCT, and I discovered it is
present in RFC959... so now (lib)curl supports it as well. --ftp-account and
CURLOPT_FTP_ACCOUNT set the account string. (The server may ask for an account
string after PASS have been sent away. The client responds with "ACCT [account
string]".) Added test case 228 and 229 to verify the functionality. Updated
the test FTP server to support ACCT somewhat.
2005-01-25 22:13:12 +00:00
Daniel Stenberg
f2e71edcbd A minor "syntax error" in numerous test files corrected 2005-01-25 21:45:03 +00:00
Daniel Stenberg
fad6e5a5bc new web mirror 2005-01-25 13:59:48 +00:00
Daniel Stenberg
52f6c437fe --protocols is added in 7.13.0 2005-01-25 12:06:12 +00:00
Daniel Stenberg
80a8be6319 David Shaw contributed a fairly complete and detailed autoconf macro you can
use to detect libcurl and setup variables for the protocols the installed
libcurl supports: docs/libcurl/libcurl.m4
2005-01-25 09:29:05 +00:00
Daniel Stenberg
043d70fcdf Use plain structs and not typedef'ed ones in the hash and linked-list code. 2005-01-25 00:06:29 +00:00
Daniel Stenberg
4f7e958969 two options less 2005-01-23 00:08:56 +00:00
Daniel Stenberg
53143910a1 \fI marked \fP more function calls etc. 2005-01-22 22:43:04 +00:00
Daniel Stenberg
95656cd7f3 If you're using libcurl as a win32 DLL, you MUST use the CURLOPT_WRITEFUNCTION
if you set CURLOPT_WRITEDATA - or you will experience crashes.
2005-01-22 22:24:17 +00:00
Daniel Stenberg
d8f79b263d next release will be 7.13.0 2005-01-22 19:26:37 +00:00
Daniel Stenberg
51da8552c3 added a few items I plan to do 2005-01-22 09:03:55 +00:00
Daniel Stenberg
7e42cb61f7 FTP third transfer support overhaul. See CHANGES for details. 2005-01-21 09:32:32 +00:00
Daniel Stenberg
6c038680f9 clarify the struct name for CURLOPT_HTTPPOST 2005-01-21 08:56:04 +00:00
Daniel Stenberg
291a908f19 Added support for "verify" => "stripfile" to strip contents of the file that
is being checked.

Also made the server retrying sleep only one second instead of three, to reduce
some waiting when fooling around with the servers.
2005-01-20 22:48:43 +00:00
Daniel Stenberg
b264a03f89 Support file names passed to RETR that don't start with a number. In that
case, all non-numeric prefixing letters are cut off to figure out the test
number.
2005-01-20 22:47:31 +00:00
Daniel Stenberg
7472ede32a Philippe Hameau found out that -Q "+[command]" didn't work, although some code
was written for it. I fixed and added test case 227 to verify it.  The curl.1
man page didn't mention the '+' so I added it.
2005-01-20 22:22:12 +00:00
Daniel Stenberg
b5065e462b add support for NOOP 2005-01-20 22:05:44 +00:00
Daniel Stenberg
8dd799b4bd If you give a *_LARGE option you MUST make sure that the type of the passed-in
argument is a curl_off_t. If you use CURLOPT_INFILESIZE (without _LARGE) you
must make sure that to pass in a type 'long' argument. */
2005-01-20 14:24:56 +00:00
Daniel Stenberg
a38520c90d added test226 too 2005-01-19 22:00:54 +00:00
Daniel Stenberg
3050ae57c0 Stephan Bergmann made libcurl return CURLE_URL_MALFORMAT if an FTP URL
contains %0a or %0d in the user, password or CWD parts. (A future fix would
include doing it for %00 as well - see KNOWN_BUGS for details.) Test case 225
and 226 were added to verify this
2005-01-19 21:56:02 +00:00
Daniel Stenberg
01205f772c today's proxy fixes 2005-01-19 18:05:56 +00:00
Gisle Vanem
06ad5be3af Don't copy 'stderr' for Win-CE in IPv6 code. Don't call
GetCurrentProcess() twice; use a local variable.
2005-01-19 10:20:55 +00:00
Daniel Stenberg
2fe3829e5e add a URL to an article about making Apache support PUT 2005-01-19 10:09:15 +00:00
Daniel Stenberg
a0c8b9bc68 Stephan Bergmann pointed out two flaws in libcurl built with HTTP disabled:
1) the proxy environment variables are still read and used to set HTTP proxy

2) you couldn't disable http proxy with CURLOPT_PROXY (since the option was
   disabled)
2005-01-19 09:36:44 +00:00
Daniel Stenberg
0406b1facf skip sys/socket.h on windows CE 2005-01-18 15:13:23 +00:00
Daniel Stenberg
65dbee01e5 check for errno.h 2005-01-18 14:34:50 +00:00
Daniel Stenberg
b1080f7c9a Cody Jones' enhanced version of Samuel Daz Garca's MSVC makefile patch. 2005-01-18 10:17:34 +00:00
Daniel Stenberg
7bfd58d41f Add support for server 'ftp2' which is a second FTP server. Useful for 3rd
party transfer tests or tests that need two FTP servers.
2005-01-17 20:20:34 +00:00
Daniel Stenberg
3851c6aae2 support the new --id command line option, that allows a second (or third or
whatever) instance to run without overwriting the previous' logfiles
2005-01-17 19:49:12 +00:00
Daniel Stenberg
ae03fa7d8e mention the name-prefix protocol guess thing 2005-01-17 14:57:21 +00:00
Daniel Stenberg
8a14dd25a9 updated the wording for -B/--use-ascii 2005-01-17 09:18:04 +00:00
Daniel Stenberg
e0bea7d541 Alex aka WindEagle pointed out that when doing "curl -v dictionary.com", curl
assumed this used the DICT protocol. While guessing protocols will remain
fuzzy, I've now made sure that the host names must start with "[protocol]."
for them to be a valid guessable name. I also removed "https" as a prefix that
indicates HTTPS, since we hardly ever see any host names using that.
2005-01-16 08:51:52 +00:00
Daniel Stenberg
534a8a05f3 mention --netrc in the -u description 2005-01-16 08:34:18 +00:00
Gisle Vanem
f5b8a26d9a errrno can by freak accident become EINTR on DOS or
Windows (unrelated to select). select() can never set errno
to EINTR on Windows.
2005-01-15 09:26:07 +00:00
Daniel Stenberg
cf51f7fb65 output better error detection, like when ipv6 can't resolve 2005-01-15 09:21:51 +00:00
Daniel Stenberg
4d1f3d3cd0 Added README.hostip 2005-01-14 13:43:29 +00:00
Daniel Stenberg
f70b87b4c5 verify the protocol too 2005-01-14 09:39:20 +00:00
Daniel Stenberg
0e26355348 Inspired by Martijn Koster's patch and example source at
http://www.greenhills.co.uk/mak/gentoo/curl-eintr-bug.c, I now made the
select() and poll() calls properly loop if they return -1 and errno is
EINTR. glibc docs for this is found here:
http://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html

This last link says BSD doesn't have this "effect". Will there be a problem
if we do this unconditionally?
S: ----------------------------------------------------------------------
2005-01-13 21:51:48 +00:00
Gisle Vanem
246ea56eab Added dependencies. 2005-01-12 15:32:41 +00:00
Gisle Vanem
7c1bba315b Added '-bd' option; target is a DLL.
Added dependencies.
2005-01-12 15:32:26 +00:00
Daniel Stenberg
9395cad379 support for retrieving used IP addresses 2005-01-11 22:26:00 +00:00
Daniel Stenberg
c5b2e85b47 Dan Torop cleaned up a few no longer used variables from David Phillips'
select() overhaul fix.
2005-01-11 20:22:44 +00:00
Gisle Vanem
38f8087281 Removed CURLTOOLDEBUG. It caused libcurl_wc.dll
to fail in mysterious ways.
2005-01-11 17:08:47 +00:00
Daniel Stenberg
e3fa7d021e Renamed easy.h and multi.h to easyif.h and multiif.h to make sure they don't
shadow our public headers with the former names.
2005-01-11 15:25:29 +00:00
Gisle Vanem
a1813e2b2d ".\lib\easy.h" shadows for <curl/easy.h> in Watcom.
Force including ../include/curl/easy.h.
2005-01-11 14:59:24 +00:00
Gisle Vanem
2e62458eef Fix '!if' expression. 2005-01-11 14:52:42 +00:00
Gisle Vanem
bb9e5565f2 ".\lib\multi.h" shadows for <curl/multi.h> in Watcom.
Force including ../include/curl/multi.h.
2005-01-11 14:32:09 +00:00
Daniel Stenberg
29102befa6 Cyrill Osterwalder posted a detailed analysis about a bug that occurs when
using a custom Host: header and curl fails to send a request on a re-used
persistent connection and thus creates a new connection and resends it. It
then sent two Host: headers. Cyrill's analysis was posted here:
http://curl.haxx.se/mail/archive-2005-01/0022.html
2005-01-11 14:00:45 +00:00
Daniel Stenberg
9d1145598a Bruce Mitchener identified (bug report #1099640) the never-ending SOCKS5
problem with the version byte and the check for bad versions. Bruce has lots
of clues on this, and based on his suggestion I've now removed the check of
that byte since it seems to be able to contain 1 or 5.
2005-01-10 23:32:14 +00:00
Daniel Stenberg
065e466f1a Use Curl_easy_addmulti() to clear associations from easy handles to multi
handles. Include multi.h to get proto.
2005-01-10 11:42:20 +00:00
Daniel Stenberg
3ac00f32af edited wording 2005-01-10 11:27:02 +00:00
Daniel Stenberg
21bb852750 Pavel Orehov reported memory problems with the multi interface in bug report
#1098843. In short, a shared DNS cache was setup for a multi handle and when
the shared cache was deleted before the individual easy handles, the latter
cleanups caused read/writes to already freed memory.
2005-01-10 10:07:07 +00:00
Daniel Stenberg
83bab78bda Hzhijun reported a memory leak in the SSL certificate code, that leaked the
remote certificate name when it didn't match the used host name.
2005-01-10 09:48:39 +00:00
Gisle Vanem
894ec46ef4 Note about the static lib requirement; -DCURL_STATICLIB. 2005-01-08 16:35:03 +00:00
Gisle Vanem
4eb1d3eb1b Watcom additions. 2005-01-08 16:15:06 +00:00
Gisle Vanem
945423e83a Added Watcom targets. 2005-01-08 16:12:27 +00:00
Gisle Vanem
9fd33c0b96 New file. 2005-01-08 16:06:37 +00:00
Gisle Vanem
3c09f2d2bd Added Makefile.Watcom to EXTRA_DIST. 2005-01-08 16:03:45 +00:00
Daniel Stenberg
7b4bf6a22c three recent bug fixes 2005-01-07 21:14:57 +00:00
Daniel Stenberg
b5b77f6367 disable the valgrind log checking 2005-01-07 21:11:24 +00:00
Daniel Stenberg
5a8097a4d5 fixed the valgrind log check and make it possible to disable it for a specific
test, see test 509
2005-01-07 21:11:13 +00:00
Daniel Stenberg
9cdf6fb64b added test 199 2005-01-07 21:09:50 +00:00
Daniel Stenberg
a137223b4f prevent a single byte read outside the string in test case 39 2005-01-06 22:54:37 +00:00
Daniel Stenberg
52e1ce9518 fixed #1097019, multiple GET posts (-G) error 2005-01-06 22:25:35 +00:00
Daniel Stenberg
8127a34f98 recent events 2005-01-05 14:12:06 +00:00
Gisle Vanem
2dcb8b674f Changed curl.dll to libcurl.dll. 2005-01-04 16:16:03 +00:00
Gisle Vanem
1e3b1b6e47 Minor comment fix. 2005-01-04 16:13:58 +00:00
Daniel Stenberg
9cdaae94cc just narrowed some text to fit within 80 cols 2005-01-04 16:01:34 +00:00
Gisle Vanem
316e74be74 Removed _WIN32_WINNT to support IPv6 under Win-2K. 2005-01-04 16:00:14 +00:00
Daniel Stenberg
af69c4f4f7 Marty Kuhrt's VMS update 2005-01-03 19:17:10 +00:00
Daniel Stenberg
ad9648a215 reverted the bad naming of the implib names 2005-01-02 21:15:29 +00:00
Daniel Stenberg
1576f3319e Alex Neblett's minor update 2005-01-02 19:19:32 +00:00
Daniel Stenberg
8ac90316d9 nah, don't use the system's getpass() function since it too often is limited
to 8(!) or similar lengths passwords
2004-12-26 09:17:38 +00:00
Daniel Stenberg
35ba5c826d issue 54 - this takes sweat 2004-12-25 23:15:45 +00:00
Daniel Stenberg
4f4ffa98b5 Test case 241 fails on all systems that support IPv6 but that don't have the
host name 'ip6-localhost' in /etc/hosts (or similar) since the test case uses
that host name to test the IPv6 name to address resolver.
2004-12-25 22:51:37 +00:00
Daniel Stenberg
b7d92c3e03 --protocols, license, src/config.h.in 2004-12-25 22:30:31 +00:00
Daniel Stenberg
4ecf939452 ./src/config.h.in is now removed from CVS. It is copied from the
lib/config.h.in file by buildconf
2004-12-25 22:10:38 +00:00
Daniel Stenberg
7ef6b05ef1 My reimplementation and cleanup of the getpass source code. We officially no
longer use Angus Mackay's getpass code due to the weirdo license his code was
donated to us under.
2004-12-25 22:08:02 +00:00
Daniel Stenberg
695f95aad1 mention the new --protocols 2004-12-24 09:02:23 +00:00
Daniel Stenberg
2a6ea6d7a7 David Shaw added --protocols, and thus the --feature no longer mentions what
protocols that are disabled.
2004-12-24 08:59:44 +00:00
Dan Fandrich
f5e0ff2170 Added LDAP library issue. 2004-12-23 22:34:00 +00:00
Daniel Stenberg
814d176b86 recent changes
and Merry Christmas!
2004-12-23 22:31:39 +00:00
Daniel Stenberg
3955b31362 David Shaw fixed the disable variables so that curl-config --feature works
correctly!
2004-12-23 08:48:59 +00:00
Daniel Stenberg
4b3fb5a01c issue 47 in next release? 2004-12-22 22:46:05 +00:00
Daniel Stenberg
67abd4cd47 Rune Kleveland fixed a minor memory leak for received cookies with the (rare)
version attribute set.
2004-12-22 22:33:31 +00:00
Daniel Stenberg
58f4af7973 Marcin Konicki provided two configure fixes and a source fix to make curl
build out-of-the-box on BeOS.
2004-12-22 22:28:10 +00:00
Dan Fandrich
99befd3a15 C ensures that static variables are initialized to 0 2004-12-22 20:12:15 +00:00
Daniel Stenberg
3acda85c2b added CURLINFO_HTTP_CONNECTCODE 2004-12-22 12:31:55 +00:00
Daniel Stenberg
dbb69797cf uh, fixed! 2004-12-22 09:21:04 +00:00
Daniel Stenberg
2910880b15 Added: 4 protocols we _could_ support and the CONNECT HTTP/1.0 detail we might
fix one day.
2004-12-22 09:19:29 +00:00
Daniel Stenberg
8b5f0abef1 more about error codes 2004-12-21 21:35:00 +00:00
Daniel Stenberg
10b5327b19 test enforced chunked encoding with PUT on a local file 2004-12-21 20:19:05 +00:00
Daniel Stenberg
4ba1eb26fa Added test case 217 that verified CURLINFO_HTTP_CONNECTCODE, and I made the
-w option support 'http_connect' to make it easier to verify!
2004-12-21 19:59:35 +00:00
Daniel Stenberg
444f6427b8 oops, variables first then code 2004-12-21 14:33:37 +00:00
Daniel Stenberg
a173e07eec Prevent failf() from using the va_list variable more than once.
See bug report #1088962 and  Single Unix Specification:
http://www.opengroup.org/onlinepubs/007908799/xsh/vfprintf.html
2004-12-21 14:22:10 +00:00
Daniel Stenberg
3de85777de mention how the FTP code should be fixed one day 2004-12-21 10:54:21 +00:00
Daniel Stenberg
f4c5314890 include sys/types.h before sys/select.h 2004-12-21 10:11:07 +00:00
Daniel Stenberg
1225ad58bd set debug curl too when -c is used 2004-12-21 10:10:40 +00:00
Daniel Stenberg
951fdeba67 How do I list the root dir of an FTP server? 2004-12-21 09:37:55 +00:00
Dan Fandrich
327b46cced Fixed a compile warning introduced by making the protocol table const. This
involves a binary-compatible change to the API struct curl_version_info_data
2004-12-20 21:14:45 +00:00
Dan Fandrich
80d301257c Make some more arrays of pointers const. 2004-12-20 18:23:43 +00:00
Dan Fandrich
0e59182945 gcc 2.7 can't handle a few warning options that gcc 2.95 can. 2004-12-20 18:20:17 +00:00
Daniel Stenberg
7270d5ce26 start working on 7.12.4 2004-12-20 13:09:38 +00:00
Daniel Stenberg
a142d419d2 and we start all over again 2004-12-20 12:51:14 +00:00
Daniel Stenberg
23cf63f550 7.12.3 2004-12-20 12:35:02 +00:00
Gisle Vanem
13ee90bbd4 OpenSSL updates; get CA_BUNDLE from env. Assume no
Kerberos, have <pkcs12.h>, <engine.h> and built-in engines.
2004-12-19 11:52:31 +00:00
Gisle Vanem
754d6c3abd Remove 'data' initialiser. 2004-12-19 11:39:34 +00:00
Daniel Stenberg
c6f6e81238 clarified a few changes 2004-12-19 10:11:03 +00:00
Daniel Stenberg
7803a1a28a fixed the solaris pkcs12 build problem 2004-12-19 09:37:58 +00:00
Daniel Stenberg
3d647b9a98 if the pkcs12.h header exists, include it already in urldata.h to work around
a precedence problem with the zlib header. See CHANGES for details.
2004-12-19 09:37:32 +00:00
Daniel Stenberg
090a7f38be check for openssl/pkcs12.h 2004-12-19 09:36:54 +00:00
Daniel Stenberg
8ad47a13e5 Samuel Listopad added support for PKCS12 formatted certificates. 2004-12-18 10:42:48 +00:00
Daniel Stenberg
497cc6bfaf Samuel Listopad fixed -E to support "C:/path" (with forward slash) as well. 2004-12-18 10:28:31 +00:00
Daniel Stenberg
d5be114c07 mention the new cookie api plans 2004-12-18 10:28:04 +00:00
Daniel Stenberg
6e43a4ccce Jean-Marc Ranger pointed out that the returned data doesn't survive a call
to curl_multi_remove_handle() either.
2004-12-18 10:24:49 +00:00
Dan Fandrich
a07dcfd850 Renamed a variable to avoid conflict with a C++ reserved word. 2004-12-17 20:18:53 +00:00
Gisle Vanem
321511a5be Watcom has strtoll(). 2004-12-17 19:57:50 +00:00
Gisle Vanem
c5297b9fd9 Watcom uses 'i64' suffix. 2004-12-17 18:33:09 +00:00
Gisle Vanem
7e00076586 <windows.h> required for Watcom. 2004-12-17 18:32:41 +00:00
Gisle Vanem
9a8ba19b73 s/_write/write/g 2004-12-17 18:31:40 +00:00
Gisle Vanem
41e776f9db Fix calling convention of wlap32.dll function. Watcom
uses fastcall by default, so force cdecl.
2004-12-17 17:54:21 +00:00
Gisle Vanem
5c2d4a6bdd Watcom has 'struct timeval'. 2004-12-17 17:49:10 +00:00
Gisle Vanem
83b709401c Add libidn.a and iconv libraries if USE_IDNA=1. 2004-12-17 12:43:02 +00:00
Gisle Vanem
3590fffeae Added option for using C-ares and libidn.
Dependencies generated from $(CSOURCES).
2004-12-17 12:38:06 +00:00
Gisle Vanem
5e2e87cc8d getdate.c is gone. 2004-12-17 12:28:04 +00:00
Gisle Vanem
b1bdba7db5 Print true netrc name (.netrc/_netrc). 2004-12-17 12:26:18 +00:00
Daniel Stenberg
e3d342df96 avoid an extra malloc 2004-12-17 10:09:32 +00:00
Daniel Stenberg
ff54a74b4d duplicate ! typo 2004-12-17 10:09:06 +00:00
Daniel Stenberg
ccf65be0a4 fixed minor memory leak when running out of memory 2004-12-17 09:00:19 +00:00
Daniel Stenberg
7dfef13224 oops, add missing return keyword 2004-12-17 08:58:48 +00:00
Daniel Stenberg
0b85e53af2 fix skip-reason 2004-12-16 22:45:06 +00:00
Daniel Stenberg
26cfb21c00 several windows large-file fixes 2004-12-16 22:22:26 +00:00
Daniel Stenberg
b7acdbcb4c two more ftp directory re-use tests added 2004-12-16 22:22:11 +00:00
Daniel Stenberg
6e1e9caa32 Based on Gisle Vanem's patch: make sure the directory re-use works even when
a URL-encoded path is used.
2004-12-16 22:20:33 +00:00
Gisle Vanem
f71725de6e Must include <io.h> and <sys/stat.h> before redefining
stat(), fstat() and lseek().
2004-12-16 21:27:29 +00:00
Dan Fandrich
26fe6da93b Renamed a struct member to avoid conflict with a C++ reserved word. 2004-12-16 21:27:23 +00:00
Daniel Stenberg
8d4ac69175 reduced the number of sub-blocks 2004-12-16 18:18:23 +00:00
Daniel Stenberg
4f5a6a33b4 moved the lseek() and stat() magic defines to setup.h and now take advantage
of struct_stat in formdata.c as well, to support formpost uploads of large
files on Windows too
2004-12-16 18:09:27 +00:00
Gisle Vanem
ec8ee4404b Support uploading and resuming of >2GB files.
Ref. lib/file.c.
2004-12-16 16:49:14 +00:00
Daniel Stenberg
e47b5d4e6c Provide better reasons for why test cases are skipped. Also, don't show the
SKIPPED stuff in the short output. Some platforms get quite a lot of SKIPPED
and they don't add much value and only clutter screen space.
2004-12-16 14:18:11 +00:00
Daniel Stenberg
494c40fd98 NULL the fp pointer after it has been fclosed() 2004-12-16 13:55:19 +00:00
Daniel Stenberg
d3b414724b Dinar in bug report #1086121, found a file handle leak when a multipart
formpost (including a file upload part) was aborted before the whole file was
sent.
2004-12-16 09:52:36 +00:00
Dan Fandrich
38181fbc74 Fix the --enable-debug compiler warning options for older versions of gcc. 2004-12-15 21:09:53 +00:00
Daniel Stenberg
8847e61fca yet another mirror! 2004-12-15 14:09:52 +00:00
Daniel Stenberg
95b84adb9b precaution to prevent double typedefs of the bool 2004-12-15 14:05:07 +00:00
Daniel Stenberg
b34d161703 moved the bool typedef to setup.h 2004-12-15 10:33:51 +00:00
Daniel Stenberg
d88b3d3d5d fixed how backslashes are treated in glob strings 2004-12-15 09:23:24 +00:00
Dan Fandrich
f2fb9039bd Make some arrays of pointers const, too. 2004-12-15 03:03:45 +00:00
Dan Fandrich
a28b32aa45 Make some arrays of pointers const, too. 2004-12-15 02:32:04 +00:00
Dan Fandrich
1ba47e7af9 Add 'const' to immutable arrays. 2004-12-15 01:38:25 +00:00
Daniel Stenberg
9359498b06 clarify that the app must free the engine list 2004-12-14 22:47:13 +00:00
Daniel Stenberg
553082e24a prevent compiler warning when built without engine support 2004-12-14 22:06:25 +00:00
Daniel Stenberg
dc28a9c0c1 make sure the ipv6 http server gets its pid stored in a separate file 2004-12-14 21:52:16 +00:00
Daniel Stenberg
1faef62d59 use the correct variables, not fixed values 2004-12-14 21:25:23 +00:00
Daniel Stenberg
0d0d5e7ee3 Harshal Pradhan fixed changing username/password on a persitent HTTP
connection.
2004-12-14 21:22:51 +00:00
Daniel Stenberg
4f567d0f81 mistake 2004-12-14 21:22:12 +00:00
Dan Fandrich
f23d923fd3 Only declare static variables if they're needed. Fixed some compile warnings. 2004-12-14 20:44:36 +00:00
Dan Fandrich
10d6d8b2ae Header files are in openssl/ only if USE_OPENSSL is set. 2004-12-14 20:25:23 +00:00
Dan Fandrich
358e08b95d Removed fputc() prototype since it's already in stdio.h 2004-12-14 20:17:58 +00:00
Gisle Vanem
e181eda253 Caller must free 'engines' list. 2004-12-14 14:24:04 +00:00
Gisle Vanem
7d3f5d7ac1 urldata.h: Removed engine_list.
ssluse.*: Added SSL_strerror(). Curl_SSL_engines_list() now returns a slist
which must be freed by caller.
2004-12-14 14:20:21 +00:00
Daniel Stenberg
37c7a695a2 Moved the CURLE_SSL_ENGINE_INITFAILED error code last in the list so that
the others remain at previous values.
2004-12-14 09:58:45 +00:00
Daniel Stenberg
07f107ae20 Moved the engine stuff from the root-level of the SessionHandle struct to the
UrlState sub-struct. Also made the engine_list exist for non-ssl builds to
make curl build.
2004-12-14 09:36:22 +00:00
Gisle Vanem
5c14b3be6d Document CURLINFO_SSL_ENGINES and "--engine". 2004-12-13 20:14:04 +00:00
Gisle Vanem
1dc15ec1bc Set 'data->state.os_errno = error' in some places.
Needed elsewhere too?
2004-12-13 17:52:55 +00:00
Gisle Vanem
6a9ed44088 Support for "--engine list" option.
Moved CURLOPT_SSLENGINE* options to after verbose mode is set.
Added a goto. Eek!
2004-12-13 16:47:36 +00:00
Gisle Vanem
bdb0620529 Added handling of CURLINFO_SSL_ENGINES;
Added Curl_SSL_engines_list(), cleanup SSL in url.c
(no HAVE_OPENSSL_x etc.).
2004-12-13 16:43:00 +00:00
Gisle Vanem
be9ea07e87 Handle new type CURLINFO_SLIST.
Handle new info list CURLINFO_SSL_ENGINES.
2004-12-13 16:37:27 +00:00
Gisle Vanem
4cf14e9f85 Added CURLcode CURLE_SSL_ENGINE_INITFAILED,
Added CURLINFO_SLIST type for returing a 'struct slist' in
curl_easy_getinfo().
Added CURLINFO_SSL_ENGINES.
2004-12-13 16:35:56 +00:00
Gisle Vanem
d02b2c4308 Fixed missing braces warning. 2004-12-13 11:31:01 +00:00
Daniel Stenberg
1687a9eb94 large file file:// resumes on windows 2004-12-13 10:58:37 +00:00
Daniel Stenberg
344c6a3725 Gisle's fix for resuming large file:// files on windows - slightly edited
by me.
2004-12-13 10:25:26 +00:00
Daniel Stenberg
f966dad306 Dan Fandrich did minor corrections to his SSL cleanup patch 2004-12-13 08:34:46 +00:00
Daniel Stenberg
887f41c062 Dan Fandrich added libcurl.pc.in to the dist 2004-12-13 08:34:17 +00:00
Daniel Stenberg
4b1350e467 when failing to verify a HTTP server, display what curl said on stderr to
help debugging. (when using ipv6 I fell over this server that didn't have
the ipv6 module loaded)
2004-12-12 23:31:45 +00:00
Gisle Vanem
22a0c57746 Missing 'in6addr_any' in MingW's lib. ld bug? 2004-12-12 20:14:25 +00:00
Daniel Stenberg
fec571f5b0 modified to use the current error code name, not the obsolete one 2004-12-11 22:18:11 +00:00
Daniel Stenberg
976285ccbc undef more obsolete defines if CURL_NO_OLDIES is defined 2004-12-11 22:17:47 +00:00
Daniel Stenberg
9b3b7ad22e HTTP IPv6 support added to the test suite 2004-12-11 21:41:00 +00:00
Daniel Stenberg
1b8ac7c6b5 provide an error string when resuming fails - and use the proper error code,
not the former one
2004-12-11 18:55:51 +00:00
Daniel Stenberg
bd2db87237 fixed error message 2004-12-11 18:55:23 +00:00
Daniel Stenberg
df3ca59116 Dan Fandrich:
Here's a stab at a consolidation of the SSL detection heuristics into
configure. Source files aren't changed by this patch, except for setup.h and
the various config*.h files.  Within the configure script, OPENSSL_ENABLED is
used to determine if SSL is being used or not, and outside configure,
USE_SSLEAY means the same thing; this could be even further unified some day.

Now, when SSL is not detected, configure skips the various checks that are
dependent on SSL, speeding up the configure process and avoiding complications
with cross compiles.  I also updated all the architecture- specific config
files I could see, but I couldn't test them.
2004-12-11 18:47:22 +00:00
Daniel Stenberg
3ca4509ae9 Dan F's initial pkg-config file (not installed yet) 2004-12-11 18:46:40 +00:00
Daniel Stenberg
d531926246 mention the maybe-missing initial zero in the vernum output 2004-12-11 18:38:47 +00:00
Daniel Stenberg
357fdb60b6 Dan Fandrich: added some missing files. "I can't try them so they might still
be broken, but at least they'll be less broken than they are now."
2004-12-10 21:58:11 +00:00
Daniel Stenberg
b6f855cb9b Dan Fandrich corrects spelling mistakes 2004-12-10 21:56:35 +00:00
Daniel Stenberg
b6646310e8 Dan Fandrich extended the cross compile section and corrected spelling errors 2004-12-10 21:55:05 +00:00
Daniel Stenberg
070da3c08f untabified 2004-12-10 21:46:00 +00:00
Daniel Stenberg
6b7f6369ec username and IPv6 numerical address URL parser fix 2004-12-10 21:42:55 +00:00
Daniel Stenberg
309e3ce4f9 David Byron's debug build fix 2004-12-10 19:16:51 +00:00
Daniel Stenberg
8a4eb8ed45 move the port number extraction to after the extraction of user name/password,
as suggested by Kai Sommerfeld
2004-12-10 15:11:11 +00:00
Daniel Stenberg
eee70dcf8e two new test cases for proxy-CONNECT with NTLM (one doing GET, one doing POST) 2004-12-10 14:48:03 +00:00
Daniel Stenberg
c0c885a1f3 don't try the rewind if no http struct is allocated yet 2004-12-10 14:45:35 +00:00
Daniel Stenberg
a7488672bf configure and curl-config fixes 2004-12-10 09:46:14 +00:00
Daniel Stenberg
c1312cab1f Added two chapters: Custom Request Elements and Debug. 2004-12-10 09:45:55 +00:00
Daniel Stenberg
8c833d375a ignore the getpart tool 2004-12-09 09:58:45 +00:00
Daniel Stenberg
18f14ae23d close the connection when a bad test number was requested 2004-12-09 09:58:25 +00:00
Daniel Stenberg
98adcdd466 Ton Voon provided a configure fix that should fix the notorious (mostly
reported on Solaris) problem where the size_t check fails due to the SSL libs
being found in a dir not searched through by the run-time linker.
patch-tracker entry #1081707.
2004-12-09 09:27:30 +00:00
Daniel Stenberg
a2bd47c567 Bryan Henderson pointed out in bug report #1081788 that the curl-config
--vernum output wasn't zero prefixed properly (as claimed in documentation).
This is fixed in maketgz now.
2004-12-09 08:06:59 +00:00
Daniel Stenberg
7b3c308eb0 update the version numbers in the libcurl.plist automaticly on release 2004-12-08 23:09:46 +00:00
Daniel Stenberg
1be1d3cfb8 Matt Veenstra updated to 7.12.3. Starting now, we'll update the version number
in this file automatically on releases using the maketgz script.
2004-12-08 23:09:23 +00:00
Daniel Stenberg
b970469df9 Matt Veenstra:
- removal of getdate.c
- Added hostares.c, hostasyn.c, hostip4.c, hostip6.c, hostsync.c,
hostthre.c, inet_ntop.c, nwlib.c, parsedate.c, sterror.c, strtoofft.c

I have tested the build on 10.3, and will build on 10.2.8 in the next days.
2004-12-08 23:02:55 +00:00
Daniel Stenberg
80a324386b Rene Bernhardt found and fixed a buffer overrun in the NTLM code, where
libcurl always and unconditionally overwrote a stack-based array with 3 zero
bytes. I edited the fix to make it less likely to occur again (and added
a comment explaining the reason to the buffer size).
2004-12-07 23:09:41 +00:00
Daniel Stenberg
163518778c minor updates 2004-12-07 23:08:28 +00:00
Daniel Stenberg
7fd1ce4dc3 NORECURSE clarification, minor formatting update 2004-12-07 10:43:21 +00:00
Daniel Stenberg
c78ee11c41 CURLFTPSSL_ALL should make sure that the transfer fails if the data connection
isn't set to encrypted properly
2004-12-07 10:00:20 +00:00
Daniel Stenberg
4435e3b269 Fixed so that the final error message is sent to the verbose info "stream"
even if no errorbuffer is set.
2004-12-06 23:04:30 +00:00
Daniel Stenberg
b96a0dba90 Gisle Vanem's fix for better info messages when failing to connect using
the multi interface
2004-12-06 22:45:45 +00:00
Gisle Vanem
30dfc00a54 'crypto_engine' not used. 2004-12-06 16:36:50 +00:00
Gisle Vanem
fe5979cfdb Replace MINGW32 with built-in __MINGW32__. 2004-12-06 14:43:04 +00:00
Daniel Stenberg
a1f7987ad8 HTTP PUT a to a FTP URL with username+password - over HTTP proxy 2004-12-06 12:54:50 +00:00
Daniel Stenberg
ac269a8f68 Dan Fandrich added the --disable-cookies option to configure to build
libcurl without cookie support. This is mainly useful if you want to build a
minimalistic libcurl with no cookies support at all. Like for embedded
systems or similar.
2004-12-05 23:59:32 +00:00
Daniel Stenberg
35944744f8 Richard Atterer fixed libcurl's way of dealing with the EPSV
response. Previously, libcurl would re-resolve the host name with the new
port number and attempt to connect to that, while it should use the IP from
the control channel. This bug made it hard to EPSV from an FTP server with
multiple IP addresses!
2004-12-05 23:33:33 +00:00
Daniel Stenberg
4b1c0bd1e7 CURLOPT_FTPSSLAUTH was added in 7.12.2 2004-12-03 11:25:06 +00:00
Daniel Stenberg
b7ff86fa2b credit where credit is due 2004-12-03 11:06:05 +00:00
Daniel Stenberg
2c27e4ee76 Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
at a chunk boundary it was not considered an error and thus went unnoticed.
Added test case 207 to verify.
2004-12-03 09:31:25 +00:00
Daniel Stenberg
6ac9e67bd7 made the intended one hour default timeout in the CONNECT loop actually work 2004-12-02 23:30:13 +00:00
Daniel Stenberg
8726a6b6ed comment cleanup 2004-12-02 22:52:14 +00:00
Daniel Stenberg
2f26069a41 test 206 - HTTP proxy CONNECT auth Digest 2004-12-02 17:11:19 +00:00
Daniel Stenberg
d6c155ff47 added comment about port number in CONNECT string being used as test number 2004-12-02 17:11:09 +00:00
Daniel Stenberg
15360e5e51 prevent an initial "(nil)" to get sent in the initial request when doing
CONNECT to a proxy with digest
2004-12-02 17:08:37 +00:00
Gisle Vanem
e587a56fc0 Use "HAVE_SYS_TYPES_H". 2004-12-01 13:41:22 +00:00
Daniel Stenberg
113531432a make the "check" actually open all those file desciptors as well to make sure
it works, as it has proved to not work in some cases (like on Tor Arntsen's
AIX 5100-06 xlc 5.0 --disable-shared runs).
2004-12-01 10:34:46 +00:00
Gisle Vanem
bfa74c2649 alarm() works unreliable on djgpp 2.03. Don't use it. 2004-11-30 14:59:24 +00:00
Daniel Stenberg
6bb215f56c recent changes 2004-11-30 10:21:25 +00:00
Daniel Stenberg
8b37844e5f fixed test case errors 2004-11-30 10:20:59 +00:00
Daniel Stenberg
1445e62312 three new compress test cases 2004-11-30 09:54:16 +00:00
Daniel Stenberg
4781ff88fd Fixed the array comparison function even more, made the temporary files used
for diff output get created in the log/ dir and no longer deletes them since
they help in understanding the problem, fixing the test case and fixing curl
problems.
2004-11-30 09:53:53 +00:00
Daniel Stenberg
c28e15c682 Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream 2004-11-30 09:44:54 +00:00
Daniel Stenberg
fe0585ec91 no longer use the MIME::Base64.pm package as it seems to not be standard
on lots of perl versions, provide our own base64 decoder
2004-11-30 09:27:11 +00:00
Daniel Stenberg
18c0b49f3d added test 221 to test a broken gzip content download 2004-11-29 22:37:52 +00:00
Daniel Stenberg
5d69c956ee added test 220 - simple gzip auto decompress 2004-11-29 22:15:42 +00:00
Daniel Stenberg
93aa22ea08 --disable-epsv when connecting to an IPv6 ftp server 2004-11-29 21:45:25 +00:00
Daniel Stenberg
b7c6bc20be removed comment 2004-11-29 21:44:40 +00:00
Daniel Stenberg
9bb4a95e08 include setup.h first 2004-11-29 21:44:23 +00:00
Daniel Stenberg
0966ddafaa As reported in Mandrake's bug tracker bug 12285
(http://qa.mandrakesoft.com/show_bug.cgi?id=12285), when connecting to an
IPv6 host with FTP, --disable-epsv (or --disable-eprt) effectively disables
the ability to transfer a file. Now, when connected to an FTP server with
IPv6, these FTP commands can't be disabled even if asked to with the
available libcurl options.
2004-11-29 21:25:07 +00:00
Daniel Stenberg
c073625fb9 zero terminate the buffer spitout() returns, as the sws.c code depends on
that!
2004-11-29 18:26:09 +00:00
Daniel Stenberg
85dd4bfb8d make it possible for a test case to depend on the feature 'libz' 2004-11-29 12:23:02 +00:00
Daniel Stenberg
5ae34aa8e1 killed trailing whitespace 2004-11-29 12:11:46 +00:00
Daniel Stenberg
0eb8414750 Enable test cases to provide sections base64-encoded to be able to test
with binary data.
2004-11-29 12:10:09 +00:00
Daniel Stenberg
09717d3fc8 utility to base encode data passed on stdin 2004-11-29 12:09:05 +00:00
Daniel Stenberg
81a3246a56 stricter newline policy 2004-11-29 12:01:07 +00:00
Daniel Stenberg
4c8fbe9abf spell 2004-11-29 08:47:33 +00:00
Daniel Stenberg
c0d448f778 if gmtime() returns NULL, this returns -1 to bail out nicely 2004-11-29 08:10:10 +00:00
Daniel Stenberg
16e9a9eaef removed one we won't do, removed the CWD optimize as it is (partly) done 2004-11-28 13:04:34 +00:00
Daniel Stenberg
0d7446c134 add more info to the stderr output 2004-11-28 08:57:03 +00:00
Daniel Stenberg
a4752673bb typecast the coversion from long to int 2004-11-27 09:27:48 +00:00
Daniel Stenberg
9a0d5c4ed8 progress meter newline 2004-11-26 21:35:14 +00:00
Gisle Vanem
d85bc18178 I changed my mind. Remove ioctl() macro in setup.h instead. 2004-11-26 16:08:15 +00:00
Gisle Vanem
f0e66d8c76 Added anyauthput.exe. 2004-11-26 15:04:15 +00:00
Gisle Vanem
af114358c8 Renamed urldata.h members 'ioctl*' to 'ioctrl*' due to
clash with djgpp ioctl() macro in setup.h.
2004-11-26 14:57:01 +00:00
Daniel Stenberg
ffe17a8197 As reported in Mandrake's bug tracker bug 12289
(http://qa.mandrakesoft.com/show_bug.cgi?id=12289), curl would print a newline
to "finish" the progress meter after each redirect and not only after a
completed transfer.
2004-11-26 14:33:13 +00:00
Daniel Stenberg
2459e1e268 removed no longer used variable 2004-11-26 08:52:18 +00:00
Daniel Stenberg
a34a4af36a last-second-before-commit changes corrected 2004-11-26 08:41:39 +00:00
Daniel Stenberg
bf51f05a50 FTP improvements:
If EPSV, EPRT or LPRT is tried and doesn't work, it will not be retried on
the same server again even if a following request is made using a persistent
connection.

If a second request is made to a server, requesting a file from the same
directory as the previous request operated on, libcurl will no longer make
that long series of CWD commands just to end up on the same spot. Note that
this is only for *exactly* the same dir. There is still room for improvements
to optimize the CWD-sending when the dirs are only slightly different.

Added test 210, 211 and 212 to verify these changes. Had to improve the
test script too and added a new primitive to the test file format.
2004-11-25 22:21:49 +00:00
Daniel Stenberg
5d94ff5974 made the code fit within 80 cols 2004-11-25 16:49:14 +00:00
Daniel Stenberg
0d4ddfa743 mingw _has_ a ftruncate() but it doesn't work with 64bit file sizes so we
can just safely pretend we don't have one
2004-11-24 22:11:18 +00:00
Gisle Vanem
56c9899832 Provide a 64-bit capable ftruncate(). MingW has one, but
it takes only 32-bit offsets.
2004-11-24 19:34:25 +00:00
Daniel Stenberg
7b3fba1ad5 added missing new error string 2004-11-24 18:25:33 +00:00
Daniel Stenberg
700e3b685a mingw has a ftruncate() function 2004-11-24 16:16:36 +00:00
Daniel Stenberg
3e1caa6185 HTTP "auth done right". See lib/README.httpauth 2004-11-24 16:11:35 +00:00
Daniel Stenberg
50eafb7668 decided to skip the MSVC makefile fixes, nobody seems to really want them
and they are rather excessive
2004-11-24 16:08:41 +00:00
Daniel Stenberg
25559ac02e Andrs Garca fixed the configure script to detect select properly when run
with Msys/Mingw on Windows.
2004-11-24 15:49:43 +00:00
Gisle Vanem
51a87fa652 Clarify the static vs. import lib issue on Win32. 2004-11-24 15:14:42 +00:00
Daniel Stenberg
b2dad0342f added a bunch of people who really deserve to be here 2004-11-23 22:15:49 +00:00
Daniel Stenberg
a5abce7982 oops, use the precheck too! 2004-11-23 10:05:10 +00:00
Daniel Stenberg
de3f22b288 cut out release with no issue to fix 2004-11-23 09:52:56 +00:00
Daniel Stenberg
be5cc378c8 introducing the client/precheck concept to allow test 518 to *only* run when
it actually can run and test the FD_SETSIZE stuff it is meant to test
2004-11-23 09:50:16 +00:00
Daniel Stenberg
4afc4aed73 yet another binding 2004-11-23 09:22:23 +00:00
Daniel Stenberg
a4e1ac7952 David Phillips fix for test 518 and my extension to make it not run on
systems that can't run it fine.
2004-11-22 22:26:46 +00:00
Daniel Stenberg
f84d2b4d36 trying a version with URLs for all function calls 2004-11-22 16:24:46 +00:00
Daniel Stenberg
b4c7876e4b issue 52 is fixed, I work on 51 2004-11-22 15:49:17 +00:00
Daniel Stenberg
4207ef3d27 removed trailing whitespace 2004-11-22 14:41:36 +00:00
Daniel Stenberg
b3572269a4 removed unused variable and trailing whitespace 2004-11-22 14:41:24 +00:00
Daniel Stenberg
097d449cc1 remove curl_ prefix from functions not present in libcurl 2004-11-22 14:07:23 +00:00
Daniel Stenberg
7f44713487 re-indented to curl style 2004-11-22 13:48:35 +00:00
Daniel Stenberg
b7a6b78e0c renamed curl_thread to my_thread to avoid confusion 2004-11-22 13:43:52 +00:00
Daniel Stenberg
855a9eff76 add URLs in comments for all libcurl function calls 2004-11-22 13:39:23 +00:00
Daniel Stenberg
8e34e75100 Curl_select's timeout arg is an int 2004-11-22 13:28:44 +00:00
Daniel Stenberg
4be60ac155 the FD_SETSIZE problem is fixed 2004-11-21 23:13:13 +00:00
Daniel Stenberg
5ec4501b9d The FD_SETSIZE issue is already sorted, at least internally. We still need
to provide a better multi-API to allow apps to avoid select().
2004-11-21 13:18:36 +00:00
Daniel Stenberg
e80f566a14 added comment for windows people about READFUNCTION being needed 2004-11-21 12:42:28 +00:00
Daniel Stenberg
1729918777 Dan Fandrich fix to compile with libc5 2004-11-20 08:57:56 +00:00
Gisle Vanem
cef290c6b4 Enable >2GB files for MingW. 2004-11-19 15:15:52 +00:00
Gisle Vanem
539e34b5df Suppress signed vs. unsigned warnings on Win32 2004-11-19 14:38:02 +00:00
Daniel Stenberg
765683403f Curl_select() now uses curl_socket_t on socket arguments 2004-11-19 14:03:19 +00:00
Gisle Vanem
cca9fca894 ifdef for portable "/dev/null". 2004-11-19 13:50:41 +00:00
Gisle Vanem
2b403db811 Winsock sockets are not in range 0..FD_SETSIZE.
Shouldn't Curl_select() use curl_socket_t ?
2004-11-19 13:46:58 +00:00
Daniel Stenberg
03e7b7c95f add select.obj 2004-11-19 13:45:46 +00:00
Daniel Stenberg
1a05a90f1c David Phillips' FD_SETSIZE fix 2004-11-19 08:52:33 +00:00
Daniel Stenberg
dcea109bb5 Dan Fandrich fix: eliminates some pedantic CodeWarrior compiler warnings and
errors.
2004-11-18 14:04:40 +00:00
Gisle Vanem
d46a573bbe Added revision tag. 2004-11-16 17:15:07 +00:00
Daniel Stenberg
7d0d19708a Added README.httpauth to the dist 2004-11-16 14:24:54 +00:00
Daniel Stenberg
09f14efade saved for the future 2004-11-16 14:02:24 +00:00
Daniel Stenberg
87753cda49 mention the openssl callbacks for SSL multithread 2004-11-16 08:49:51 +00:00
Daniel Stenberg
66f6f43056 added test case 517: 22 tests of the curl_getdate() function 2004-11-15 21:49:35 +00:00
Daniel Stenberg
86f059dcfb tiny format fix for nicer man output 2004-11-15 21:41:21 +00:00
Daniel Stenberg
5931d43a36 clean up start time and t_startsingle use so that redirect_time works properly 2004-11-15 11:27:03 +00:00
Daniel Stenberg
8475a0df2f new -w variables supported 2004-11-15 11:25:39 +00:00
Gisle Vanem
ccc4c9c02c Added top_srcdir. 2004-11-15 10:41:58 +00:00
Gisle Vanem
16edb15600 Added revision id, test for USE_ARES.
Uses Makefile.inc.
2004-11-15 10:38:34 +00:00
Daniel Stenberg
9e7534a46e binding for R 2004-11-15 08:54:29 +00:00
Gisle Vanem
737dddaec0 Changes for static/dynamic linking of libcurl.
No need to generate a dummy sys/utime.h. Cleanup.
2004-11-14 13:51:33 +00:00
Gisle Vanem
b5c90c9b05 Borland doesn't have <sys/utime.h>, utime() nor
_lseeki64().
2004-11-14 13:50:21 +00:00
Gisle Vanem
c3ecd552f5 Borland doesn't have <sys/utime.h> nor utime(). 2004-11-14 13:49:09 +00:00
Gisle Vanem
56f0227c92 Static lib is libcurl.lib and import lib libcurl_imp.lib.
Added implib command. Cleanup
2004-11-14 13:48:15 +00:00
Daniel Stenberg
dcb5a4df01 Dan fixed the CURL_DISABLE_VERBOSE_STRINGS stuff for older gcc versions since
they don't support C99 varargs macros.
2004-11-13 21:57:33 +00:00
Gisle Vanem
fd64213c2f MingW/djgpp: Use GNU make's internal 'cd' to avoid shell-troubles. 2004-11-13 16:57:56 +00:00
Gisle Vanem
fc2c06754c Fix location of timeval.c. 2004-11-13 16:55:53 +00:00
Gisle Vanem
7ec200f4d1 Update comment. 2004-11-13 16:54:26 +00:00
Gisle Vanem
e53f139925 Add "-DCURL_STATICLIB" for static build.
Add ../lib/timeval.c for objects.
2004-11-13 15:47:17 +00:00
Gisle Vanem
61599ceb7b Renamed import lib to "libcurl_imp.lib".
Some cleanup and making it more readable.
2004-11-13 14:17:41 +00:00
Gisle Vanem
6f8e3f106a Set OpenSSL path to same as in ../lib/Makefile.vc6.
Import lib is now "libcurl_imp.lib".
Some cleanup and making it more readable.
2004-11-13 14:17:24 +00:00
Gisle Vanem
8fd676f73e MSVC with static link must define CURL_STATICLIB.
zlib path set to same as in lib/Makefile.vc6.
2004-11-12 11:48:02 +00:00
Gisle Vanem
98a8103a3b Netware target (hosted on Linux gcc) doesn't support
or need __declspec.
2004-11-12 11:45:05 +00:00
Daniel Stenberg
94043b1150 Dan Fandrich added the --disable-crypto-auth option to configure to allow
libcurl to build without Digest support. (I figure it should also explicitly
disable Negotiate and NTLM.)
2004-11-12 09:18:14 +00:00
Daniel Stenberg
1b02ad5e8a format mistake fixed 2004-11-12 06:42:30 +00:00
Daniel Stenberg
4897587615 Dan Fandrich can spell, I cannot 2004-11-11 23:13:59 +00:00
Daniel Stenberg
8e2f57c82e Dan Fandrich: make --disable-dict actually disable dict 2004-11-11 23:13:06 +00:00
Daniel Stenberg
c3323b1902 clarify and update according to commit made just now 2004-11-11 23:11:32 +00:00
Daniel Stenberg
59c063dfd3 Fix behaviour when passing NULL to CURLOPT_POSTFIELDS and CURLOPT_HTTPPOST. 2004-11-11 23:11:04 +00:00
Daniel Stenberg
8c16696f47 fix a IDN detect/use mistake 2004-11-11 22:01:53 +00:00
Daniel Stenberg
f68950db67 added some details on what to come 2004-11-11 16:56:34 +00:00
Daniel Stenberg
710e370c34 Dan Fandrich added --disable-verbose 2004-11-11 16:34:24 +00:00
Daniel Stenberg
7bb6d76d14 When libidn is detected without explicitly told to, we provide -L/lib and
-I/include options. Not anymore.
2004-11-11 14:41:37 +00:00
Daniel Stenberg
2467f814a8 fix the -I path to the proper include dir when --enable-debug is used 2004-11-11 14:15:41 +00:00
Gisle Vanem
a654ef9ee6 Adapted for C++. 2004-11-11 12:25:40 +00:00
Daniel Stenberg
c1688733c1 recent fixes 2004-11-11 09:51:12 +00:00
Daniel Stenberg
cd73a733c7 dates from 2038 or later now return 0x7fffffff when 32 bit time_t is used 2004-11-11 09:26:09 +00:00
Daniel Stenberg
8ef8e949bd fix curl.h include 2004-11-11 08:03:43 +00:00
Daniel Stenberg
49111a63e6 configure --with-gssapi fix 2004-11-10 21:43:41 +00:00
Daniel Stenberg
ee4ecf5155 Gisle's CURL_EXTERN fix 2004-11-10 15:50:33 +00:00
Gisle Vanem
3478253e5a Replace IsNT with IS_NT(). 2004-11-10 14:30:25 +00:00
Gisle Vanem
6ddc59dadf Replace IsNT with IS_NT().
Return correct timeval in windows_port.c.
Squelch gcc warnings:
  use 'ares_socket_t' in ares_fds.c.
  Don't cast a 'lvalue' in ares_init.c.
2004-11-10 14:23:20 +00:00
Daniel Stenberg
dc8688b8dc fix CURL_EXTERN for debug builds 2004-11-09 18:10:51 +00:00
Gisle Vanem
865e495188 Handle drive-letter on MS-DOS. 2004-11-09 14:57:11 +00:00
Gisle Vanem
d3c0ed007e Removed libcurl.def 2004-11-09 14:55:23 +00:00
Daniel Stenberg
0dc79376e7 with all external functions marked with CURL_EXTERN it is easy to count them
and... yes, they are 46!
2004-11-09 14:42:04 +00:00
Gisle Vanem
3ccbed1022 Changes for removing libcurl.def file on Win32.
Mark public functions with "CURL_EXTERN".
2004-11-09 14:02:58 +00:00
Gisle Vanem
377e43fbb9 Changes for removing libcurl.def file on Win32.
Added "CURL_EXTERN" to memdebug.h functions.
Cleaned up Makefile.vc6.
2004-11-09 14:00:56 +00:00
Daniel Stenberg
1f2b042b95 today's work 2004-11-08 21:39:18 +00:00
Daniel Stenberg
fd49ba6c18 another lame change in an attempt to fix the moot gcc 3.4 warning 2004-11-08 21:31:57 +00:00
Daniel Stenberg
facfa19cdd weirdo hack to fix debian bug report 278691:
'curl -v writes debugging to its network socket if stderr is closed'
2004-11-08 19:41:28 +00:00
Daniel Stenberg
3347ced899 added a default in the switch in an attempt to avoid the moot "will never be
executed" warning by gcc 3.4.0
2004-11-08 14:46:05 +00:00
Gisle Vanem
592686bee9 Change OS name. Fix header guard. 2004-11-08 14:21:24 +00:00
Gisle Vanem
f471a293ea Un-do changes for WinCE; cdecl decoration is not needed.
Confirmed by Paul Nolan.
2004-11-08 14:20:14 +00:00
Daniel Stenberg
c688166066 check for and require tld.h to be present before libidn usage is activated
in the build, since libidn 0.3.X didn't have the header and we don't support
that old libidn versions anyway.

This was mentioned on the list by Jean-Philippe Barrette-LaPierre and in bug
report #1062264.
2004-11-08 07:47:08 +00:00
Daniel Stenberg
5dcd2710d4 two post-1.2.1 changes 2004-11-07 23:48:42 +00:00
Daniel Stenberg
16d8383625 added ares_cancel and ares_version 2004-11-07 13:37:07 +00:00
Daniel Stenberg
6b49fd7483 Tim Sneddon's VMS fix for huge HTTP POSTs 2004-11-05 14:43:35 +00:00
Daniel Stenberg
f10985fc50 removed errno, added EAGAIN 2004-11-05 08:22:46 +00:00
Daniel Stenberg
edeac97773 it has a sys/stat.h file, according to Paul Nolan 2004-11-05 08:19:34 +00:00
Daniel Stenberg
40498ffdd0 update 2004-11-04 16:18:50 +00:00
Daniel Stenberg
fd884a3cd2 more retry stuff 2004-11-04 16:17:23 +00:00
Daniel Stenberg
1887629c5c test server port numbers are now easily changed 2004-11-04 16:15:26 +00:00
Daniel Stenberg
d3be5b2725 delete trailing whitespace 2004-11-04 16:14:33 +00:00
Daniel Stenberg
2e973684c0 based Andres Garcia's patch, added for mingw build 2004-11-04 14:19:22 +00:00
Daniel Stenberg
ab909fc4c2 recent changes 2004-11-02 21:46:27 +00:00
Daniel Stenberg
4cd5220d27 use ifdef not if 2004-11-02 14:02:29 +00:00
Daniel Stenberg
24d47a6e07 Paul Nolan fix to make libcurl build nicely on Windows CE 2004-11-02 10:12:22 +00:00
Daniel Stenberg
8a66584db4 documented the current --retry options 2004-11-02 09:43:50 +00:00
Daniel Stenberg
186f433e40 modified to not use realloc() on a NULL pointer 2004-11-02 08:26:55 +00:00
Daniel Stenberg
736a40fec9 When cross-compiling, the configure script no longer attempts to use
pkg-config on the build host in order to detect OpenSSL compiler options.
2004-11-01 22:50:59 +00:00
Gisle Vanem
4245400ae4 Fixed _write() arguments. 2004-10-28 13:18:09 +00:00
Gisle Vanem
629bba6b35 *** empty log message *** 2004-10-28 13:13:29 +00:00
Daniel Stenberg
f6f2a9e4be use longs 2004-10-28 07:23:19 +00:00
Daniel Stenberg
8bfcae65ef Dan Fandrich's gzip handling fix 2004-10-27 21:46:11 +00:00
Daniel Stenberg
96cf615e9d Added --retry and --retry-delay first attempt with four related test cases. 2004-10-27 21:29:55 +00:00
Daniel Stenberg
e9b3e1d031 log client disconnects 2004-10-27 14:18:57 +00:00
Daniel Stenberg
7167cde020 Testing to define _REENTRANT unconditionally in here. 2004-10-26 13:31:55 +00:00
Daniel Stenberg
2a80a4c521 mention how LDFLAGS=-R can be used (or LD_LIBRARY_PATH or ld.so.conf) 2004-10-26 08:09:16 +00:00
Daniel Stenberg
83f11b1c9b mention incompatibilities with ares 2004-10-26 08:08:41 +00:00
Daniel Stenberg
a00e7f0f5e Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
file that was already completely downloaded caused an error, while it
doesn't if you don't use --fail! I added test case 194 to verify the fix.
Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in
libcurl v8 due to all the kludges needed to support it.
2004-10-25 11:28:40 +00:00
Daniel Stenberg
e1607f5705 just nicer output when this is seen 2004-10-25 11:28:15 +00:00
Daniel Stenberg
cce931f27d the array sizes _can_ differ and the arrays can still match, since chomp
is used at times but it doesn't decrease the array size
2004-10-25 11:28:01 +00:00
Daniel Stenberg
34089c93bb format update 2004-10-25 11:05:37 +00:00
Daniel Stenberg
beb61ef429 Mohun Biswas found out that formposting a zero-byte file didn't work very
good. I fixed.
2004-10-24 22:31:40 +00:00
Daniel Stenberg
72aff74798 ignore this 2004-10-24 13:02:46 +00:00
Daniel Stenberg
8e715af480 maketgz now creates a ares_version.h.dist file with the given version data
properly set, and the Makefile.am is now fixed to use that when building
a new package with make dist.
2004-10-24 13:02:09 +00:00
Daniel Stenberg
2730842559 Dan Fandrich's better ifdef for include fix 2004-10-21 08:22:07 +00:00
Daniel Stenberg
cac269cf91 1.2.1 release time 2004-10-20 08:01:38 +00:00
Daniel Stenberg
249036ada0 this change was reverted since it broke on solaris 2004-10-19 18:50:46 +00:00
Daniel Stenberg
18d80b9e8f iconv 2.1.3 is considered bad for test case 165 2004-10-19 18:49:31 +00:00
Daniel Stenberg
b2d8e0b476 revert the charset fix as it broke the solaris tests (native iconv doesn't
like that name)
2004-10-19 18:46:12 +00:00
Daniel Stenberg
225a652021 Ralph Mitchell fixed: input field with NAME= and VALUE= weren't processed
properly case insensitive
2004-10-19 18:36:17 +00:00
Daniel Stenberg
38b1d96750 Alexander Krasnostavsky made it possible to make FTP 3rd party transfers with
both source and destination being the same host. It can be useful if you want
to move a file on a server or similar.
2004-10-19 18:26:35 +00:00
Daniel Stenberg
2f069ad3e2 snart isn't really used these days so we cut out the reference to it 2004-10-19 15:34:05 +00:00
Daniel Stenberg
a3dbe03e80 added num_connects 2004-10-19 15:32:31 +00:00
Daniel Stenberg
f4bef25b5e CURLINFO_NUM_CONNECTS and more 2004-10-19 15:30:08 +00:00
Gisle Vanem
ebf7d22503 djgpp has locale.h and setlocale(). 2004-10-19 10:14:06 +00:00
Gisle Vanem
9296d9deb8 All Win compilers have locale.h + setlocale(). 2004-10-19 10:13:26 +00:00
Daniel Stenberg
7b95a25adc bug 1049275 fixes test 165 2004-10-19 06:04:25 +00:00
Daniel Stenberg
82d6cfa7fc Peter Wullinger pointed out that curl should call setlocale() properly to
initiate the specific language operations, to make the IDN stuff work better.
2004-10-18 13:37:18 +00:00
Daniel Stenberg
48750d5fc7 start over on 7.12.3 2004-10-18 08:42:44 +00:00
821 changed files with 72975 additions and 18596 deletions

View File

@@ -1,3 +1,4 @@
compile
config.log
Makefile
libtool
@@ -12,3 +13,4 @@ depcomp
config.guess
config.sub
ltmain.sh
libcurl.pc

3038
CHANGES

File diff suppressed because it is too large Load Diff

1994
CHANGES.2004 Normal file

File diff suppressed because it is too large Load Diff

1183
CHANGES.2005 Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1996 - 2004, Daniel Stenberg, <daniel@haxx.se>.
Copyright (c) 1996 - 2007, Daniel Stenberg, <daniel@haxx.se>.
All rights reserved.

View File

@@ -53,12 +53,6 @@ installed:
give you an older version of the file that isn't up-to-date. That file was
checked in once and won't be updated very regularly.
o yacc/bison
If you don't have yacc or bison, you must rename the lib/getdate.c.cvs file
to lib/getdate.c to be able to build libcurl. yacc/bison is normally used
to generate the lib/getdate.c file from the lib/getdate.y source file.
MAC OS X
With Mac OS X 10.2 and the associated Developer Tools, the installed versions

View File

@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
# Copyright (C) 1998 - 2005, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -24,13 +24,16 @@
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = CHANGES COPYING maketgz reconf Makefile.dist curl-config.in \
curl-style.el sample.emacs RELEASE-NOTES buildconf buildconf.bat
curl-style.el sample.emacs RELEASE-NOTES buildconf buildconf.bat libcurl.pc.in
bin_SCRIPTS = curl-config
SUBDIRS = lib src
DIST_SUBDIRS = $(SUBDIRS) tests include packages docs
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcurl.pc
dist-hook:
rm -rf $(top_builddir)/tests/log
find $(distdir) -name "*.dist" -exec rm {} \;
@@ -48,6 +51,15 @@ pdf:
check: test
if CROSSCOMPILING
test-full: test
test-torture: test
test:
@echo "NOTICE: we can't run the tests when cross-compiling!"
else
test:
@(cd tests; $(MAKE) all quiet-test)
@@ -57,6 +69,8 @@ test-full:
test-torture:
@(cd tests; $(MAKE) all torture-test)
endif
#
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
# must contain the following line:

View File

@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
# Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -21,6 +21,8 @@
# $Id$
###########################################################################
VC=vc6
all:
./configure
make
@@ -53,57 +55,144 @@ borland-clean:
cd ..\src
make -f Makefile.b32 clean
watcom:
cd lib
wmake -f Makefile.Watcom
cd ..\src
wmake -f Makefile.Watcom
watcom-clean:
cd lib
wmake -f Makefile.Watcom clean
cd ..\src
wmake -f Makefile.Watcom clean
mingw32:
cd lib & make -f Makefile.m32 ZLIB=1
cd src & make -f Makefile.m32 ZLIB=1
$(MAKE) -C lib -f Makefile.m32 ZLIB=1
$(MAKE) -C src -f Makefile.m32 ZLIB=1
mingw32-ssl:
cd lib & make -f Makefile.m32 SSL=1 ZLIB=1
cd src & make -f Makefile.m32 SSL=1 ZLIB=1
$(MAKE) -C lib -f Makefile.m32 SSL=1 ZLIB=1
$(MAKE) -C src -f Makefile.m32 SSL=1 ZLIB=1
mingw32-ssh2-ssl:
$(MAKE) -C lib -f Makefile.m32 SSH2=1 SSL=1 ZLIB=1
$(MAKE) -C src -f Makefile.m32 SSH2=1 SSL=1 ZLIB=1
mingw32-ssh2-ssl-sspi:
$(MAKE) -C lib -f Makefile.m32 SSH2=1 SSL=1 SSPI=1 ZLIB=1
$(MAKE) -C src -f Makefile.m32 SSH2=1 SSL=1 SSPI=1 ZLIB=1
mingw32-clean:
cd lib & make -f Makefile.m32 clean
cd src & make -f Makefile.m32 clean
$(MAKE) -C lib -f Makefile.m32 clean
$(MAKE) -C src -f Makefile.m32 clean
vc-clean:
cd lib
nmake -f Makefile.$(VC) clean
cd ..\src
nmake -f Makefile.$(VC) clean
vc-all:
cd lib
nmake -f Makefile.$(VC) cfg=release
nmake -f Makefile.$(VC) cfg=release-ssl
nmake -f Makefile.$(VC) cfg=release-zlib
nmake -f Makefile.$(VC) cfg=release-ssl-zlib
nmake -f Makefile.$(VC) cfg=release-ssl-dll
nmake -f Makefile.$(VC) cfg=release-zlib-dll
nmake -f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
nmake -f Makefile.$(VC) cfg=release-dll
nmake -f Makefile.$(VC) cfg=release-dll-ssl-dll
nmake -f Makefile.$(VC) cfg=release-dll-zlib-dll
nmake -f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
nmake -f Makefile.$(VC) cfg=debug
nmake -f Makefile.$(VC) cfg=debug-ssl
nmake -f Makefile.$(VC) cfg=debug-zlib
nmake -f Makefile.$(VC) cfg=debug-ssl-zlib
nmake -f Makefile.$(VC) cfg=debug-ssl-dll
nmake -f Makefile.$(VC) cfg=debug-zlib-dll
nmake -f Makefile.$(VC) cfg=debug-ssl-dll-zlib-dll
nmake -f Makefile.$(VC) cfg=debug-dll
nmake -f Makefile.$(VC) cfg=debug-dll-ssl-dll
nmake -f Makefile.$(VC) cfg=debug-dll-zlib-dll
nmake -f Makefile.$(VC) cfg=debug-dll-ssl-dll-zlib-dll
vc:
cd lib
nmake /f Makefile.vc6 cfg=release
nmake /f Makefile.$(VC) cfg=release
cd ..\src
nmake /f Makefile.vc6
nmake /f Makefile.$(VC)
vc-zlib:
cd lib
nmake /f Makefile.vc6 cfg=release-zlib
nmake /f Makefile.$(VC) cfg=release-zlib
cd ..\src
nmake /f Makefile.vc6 cfg=release-zlib
nmake /f Makefile.$(VC) cfg=release-zlib
vc-ssl:
cd lib
nmake /f Makefile.vc6 cfg=release-ssl
nmake /f Makefile.$(VC) cfg=release-ssl
cd ..\src
nmake /f Makefile.vc6 cfg=release-ssl
nmake /f Makefile.$(VC) cfg=release-ssl
vc-ssl-zlib:
cd lib
nmake /f Makefile.vc6 cfg=release-ssl-zlib
nmake /f Makefile.$(VC) cfg=release-ssl-zlib
cd ..\src
nmake /f Makefile.vc6 cfg=release-ssl-zlib
nmake /f Makefile.$(VC) cfg=release-ssl-zlib
vc-ssl-dll:
cd lib
nmake /f Makefile.vc6 cfg=release-ssl-dll
nmake /f Makefile.$(VC) cfg=release-ssl-dll
cd ..\src
nmake /f Makefile.vc6
nmake /f Makefile.$(VC) cfg=release-ssl-dll
vc-libcurl-ssl-dll:
vc-dll-ssl-dll:
cd lib
nmake /f Makefile.vc6 cfg=release-libcurl-ssl-dll
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll
cd ..\src
nmake /f Makefile.vc6
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll
vc-dll:
cd lib
nmake /f Makefile.$(VC) cfg=release-dll
cd ..\src
nmake /f Makefile.$(VC) cfg=release-dll
vc-dll-zlib-dll:
cd lib
nmake /f Makefile.$(VC) cfg=release-dll-zlib-dll
cd ..\src
nmake /f Makefile.$(VC) cfg=release-dll-zlib-dll
vc-dll-ssl-dll-zlib-dll:
cd lib
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
cd ..\src
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
vc-ssl-dll-zlib-dll:
cd lib
nmake /f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
cd ..\src
nmake /f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
vc-zlib-dll:
cd lib
nmake /f Makefile.$(VC) cfg=release-zlib-dll
cd ..\src
nmake /f Makefile.$(VC) cfg=release-zlib-dll
vc-sspi:
cd lib
nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
cd ..\src
nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
djgpp:
make -C lib -f Makefile.dj
make -C src -f Makefile.dj
$(MAKE) -C lib -f Makefile.dj
$(MAKE) -C src -f Makefile.dj
cygwin:
./configure
@@ -121,9 +210,25 @@ netware:
$(MAKE) -C lib -f Makefile.netware
$(MAKE) -C src -f Makefile.netware
netware-ares:
$(MAKE) -C lib -f Makefile.netware WITH_ARES=1
$(MAKE) -C src -f Makefile.netware WITH_ARES=1
netware-ssl:
$(MAKE) -C lib -f Makefile.netware SSL=1
$(MAKE) -C src -f Makefile.netware SSL=1
$(MAKE) -C lib -f Makefile.netware WITH_SSL=1
$(MAKE) -C src -f Makefile.netware WITH_SSL=1
netware-ssl-zlib:
$(MAKE) -C lib -f Makefile.netware WITH_SSL=1 WITH_ZLIB=1
$(MAKE) -C src -f Makefile.netware WITH_SSL=1 WITH_ZLIB=1
netware-ssh2-ssl-zlib:
$(MAKE) -C lib -f Makefile.netware WITH_SSH2=1 WITH_SSL=1 WITH_ZLIB=1
$(MAKE) -C src -f Makefile.netware WITH_SSH2=1 WITH_SSL=1 WITH_ZLIB=1
netware-zlib:
$(MAKE) -C lib -f Makefile.netware WITH_ZLIB=1
$(MAKE) -C src -f Makefile.netware WITH_ZLIB=1
netware-clean:
$(MAKE) -C lib -f Makefile.netware clean

35
README
View File

@@ -7,7 +7,7 @@
README
Curl is a command line tool for transferring data specified with URL
syntax. Find out how to use Curl by reading the curl.1 man page or the
syntax. Find out how to use curl by reading the curl.1 man page or the
MANUAL document. Find out how to install Curl by reading the INSTALL
document.
@@ -26,39 +26,14 @@ CONTACT
If you have problems, questions, ideas or suggestions, please contact us
by posting to a suitable mailing list. See http://curl.haxx.se/mail/
Many major contributors to the project are listed in the THANKS document.
All contributors to the project are listed in the THANKS document.
WEB SITE
Visit the curl web site or mirrors for the latest news:
Visit the curl web site or mirrors for the latest news and downloads:
Sweden -- http://curl.haxx.se/
Australia -- http://curl.planetmirror.com/
Denmark -- http://curl.cofman.dk/
Estonia -- http://curl.wildyou.net/
Germany -- http://curl.mirror.at.stealer.net/
Germany -- http://curl.netmirror.org/
Russia -- http://curl.tsuren.net/
Thailand -- http://curl.siamu.ac.th/
US (CA) -- http://curl.mirror.redwire.net/
US -- http://curl.signal42.com/
DOWNLOAD
The official download mirror sites are:
Australia -- http://curl.planetmirror.com/download.html
Estonia -- http://curl.wildyou.net/download.html
Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/
Germany -- http://curl.mirror.at.stealer.net/download.html
Germany -- http://curl.netmirror.org/download.html
Germany -- http://www.mirrorspace.org/curl/
Hongkong -- http://www.execve.net/curl/
Russia -- http://curl.tsuren.net/download.html
Sweden -- ftp://ftp.sunet.se/pub/www/utilities/curl/
Sweden -- http://cool.haxx.se/curl/
Thailand -- http://curl.siamu.ac.th/download.html
US (CA) -- http://curl.mirror.redwire.net/download.html
Sweden http://curl.haxx.se/
Mirrors http://curlm.haxx.se/
CVS

View File

@@ -1,84 +1,78 @@
Curl and libcurl 7.12.2
Curl and libcurl 7.16.2
Public curl release number: 83
Releases counted from the very beginning: 110
Available command line options: 96
Available curl_easy_setopt() options: 121
Number of public functions in libcurl: 36
Amount of public web site mirrors: 13
Number of known libcurl bindings: 27
Public curl release number: 98
Releases counted from the very beginning: 125
Available command line options: 118
Available curl_easy_setopt() options: 141
Number of public functions in libcurl: 54
Amount of public web site mirrors: 38
Number of known libcurl bindings: 35
Number of contributors: 539
This release includes the following changes:
o the IDN code now verifies that only TLD-legitmate letters are used in the
name or a warning is displayed (when verbose is enabled)
o provides error texts for IDN errors
o file upload parts in formposts now get their directory names cut off
o added CURLINFO_OS_ERRNO
o added CURLOPT_FTPSSLAUTH to allow ftp connects to attempt "AUTH TLS" instead
before "AUTH SSL"
o curl_getdate() completely rewritten: may affect rare curl -z use cases
o added CURLOPT_TIMEOUT_MS and CURLOPT_CONNECTTIMEOUT_MS
o added CURLOPT_HTTP_CONTENT_DECODING, CURLOPT_HTTP_TRANSFER_DECODING and
--raw
o added support for using the NSS library for TLS/SSL
o changed default anonymous FTP password
o changed the CURLOPT_FTP_SSL_CCC option to handle active and passive
CCC shutdown
o added the --ftp-ssl-ccc-mode command line option
o includes VC8 Makefiles in the release archive
o --ftp-ssl-control is now honoured on ftps:// URLs
o added experimental CURL_ACKNOWLEDGE_EINTR symbol definition check
o --key and new --pubkey options for SSH public key file logins
o --pass now works for a SSH public key file, too
o select (2) support no longer needed to build the library if poll() used
o CURLOPT_POSTQUOTE works for SFTP
This release includes the following bugfixes:
o CURLOPT_FTP_CREATE_MISSING_DIRS works for third party transfers
o memory leak for cookies received with max-age set
o potential memory leaks in the window name resolver
o URLs with ?-letters in the user name or password fields
o libcurl error message is now provided when send() fails
o no more SIGPIPE on Mac OS X and other SO_NOSIGPIPE-supporting platforms
o HTTP resume was refused if redirected
o configure's gethostbyname check when both nsl and socket libs are required
o configure --with-libidn now checks the given path before defaults
o a race condition sometimes resulting in CURLE_COULDNT_RESOLVE_HOST in the
windows threaded name resolver code
o isspace() invokes with negative values in the cookie code
o a case of read-already-freed-data when CURLOPT_VERBOSE is used and a (very)
persistent connection
o now includes descriptive error messages for IDN errors
o more forgivning PASS response code check for better working with proftpd
o curl/multi.h works better included in winsock-using apps
o curl_easy_reset() no longer enables the progress meter
o build fix for SSL disabled curl with SSL Engine support present
o configure --with-ssl=PATH now ignores pkg-config path info
o CURLOPT_SSLENGINE can be set to NULL even if no engine support is available
o LDAP crash when more than one record was received
o connect failures properly stores an error message in the errorbuffer
o Rare Location:-following problem with bad original URL
o -F can now add Content-Type on non-file sections
o double Host: header when following Location: with replaced Host:
o curl_multi_add_handle() return code
o "Proxy-Connection: close" is now understood and properly dealt with
o curl_getdate() crash
o downloading empty files now calls the write callback properly
o no reverse DNS lookups for ip-only addresses with ipv6-enabled libcurl
o file handler leak when getting an empty file:// URL
o libcurl works better multi-threaded on AIX (when built with xlc)
o cookies over proxy didn't match the path properly
o MSVC makefile fixes to build better
o FTP response 530 on 'PASS' now sends back a better error message
o in testsuite, update test cookies expiration from 2007-Feb-1 to year 2035
o socks5 works
o builds fine with VC2005
o CURLOPT_RANGE set to NULL resets the range for FTP
o curl_multi_remove_handle() rare crash
o passive FTP transfers work with SOCKS
o multi interface HTTPS connection re-use memory leak
o libcurl.m4's --with-libcurl is improved
o curl-config --libs and libcurl.pc no longer list unnecessary dependencies
o fixed an issue with CCC not working on some servers
o several HTTP pipelining problems
o HTTP CONNECT thru a proxy is now less blocking when the multi interface is
used
o HTTP Digest header parsing fix for unquoted last word ending with CRLF
o CURLOPT_PORT, HTTP proxy, re-using connections and non-HTTP protocols
o CURLOPT_INTERFACE for ipv6
o use-after-free issue with HTTP transfers with the multi interface
o the progress callback can get called more frequently
o timeout would restart when signal caught while awaiting socket events
o curl -f with user+password embedded in the URL
o 26 flaws identified by coverity.com
o builds on QNX 6 again
Other curl-related news since the previous public release:
This release includes the following known bugs:
o AdacURL version 7.12.1 http://www.almroth.com/adacurl/index.html
o pycurl version 7.12.1 http://pycurl.sourceforge.net/
o tclcurl version 0.12.1
http://personal1.iddeo.es/andresgarci/tclcurl/english/
o libcurl.NET was announce: http://www.seasideresearch.com/downloads.html
o Get your fresh Mozilla-extracted ca cert bundle here:
http://curl.haxx.se/docs/caextract.html
o New web mirror in Taiwan: http://curl.cs.pu.edu.tw/
o see docs/KNOWN_BUGS (http://curl.haxx.se/docs/knownbugs.html)
Other curl-related news:
o pycurl 7.16.1 was released: http://pycurl.sf.net/
New curl mirrors:
o http://curl.basemirror.de is a new mirror in Germany
o http://curl.xxtracker.org is a new mirror in The Netherlands
This release would not have looked like this without help, code, reports and
advice from friends like these:
Casey O'Donnell, Roland Krikava, Alex, Alexander Krasnostavsky, Kjetil
Jacobsen, Ling Thio, Roman Koifman, Harshal Pradhan, Jonas Forsman, David
Tarendash, Daniel at touchtunes, Bertrand Demiddelaer, Andreas Rieke,
Jean-Claude Chauve, Dan Fandrich, Peter Sylvester, "Mekonikum", Jean-Philippe
Barrette-LaPierre, G<>nter Knauf, Larry Campbell, Fedor Karpelevitch,
Aleksandar Milivojevic, Gisle Vanem, Chris "Bob Bob", Chih-Chung Chang, Andy
Cedilnik, Alan Pinstein, Eric Vergnaud, Traian Nicolescu, runekl at
opoint.com
Yang Tse, Manfred Schwarb, Michael Wallner, Jeff Pohlmeyer, Shmulik Regev,
Rob Crittenden, Robert A. Monat, Dan Fandrich, Duncan Mac-Vicar Prett,
Michal Marek, Robson Braga Araujo, Ian Turner, Linus Nielsen Feltzing,
Ravi Pratap, Adam D. Moss, Jose Kahan, Hang Kin Lau, Justin Fletcher,
Robert Iakobashvili, Bryan Henderson, Eygene Ryabinkin, Daniel Johnson,
Matt Kraai, Nick Zitzmann, Rob Jones
Thanks! (and sorry if I forgot to mention someone)

View File

@@ -1,11 +1,5 @@
Issues not sorted in any particular order.
To be addressed before 7.16.3 (planned release: June 2007)
=============================
To get fixed in 7.12.2 (planned release: mid October 2004)
======================
93 -
To get fixed in 7.12.3 (planned release: December 2004)
======================
47 - Peter Sylvester's patch for SRP on the TLS layer
48 - MSVC Makefile improvements by Samuel D<>az Garc<72>a

File diff suppressed because it is too large Load Diff

View File

@@ -20,3 +20,4 @@ stamp-h1
depcomp
libcares.la
missing
ares_version.h.dist

22
ares/AUTHORS Normal file
View File

@@ -0,0 +1,22 @@
c-ares is based on ares, and these are the people that have worked on it since
the fork was made:
Daniel Stenberg
Dominick Meglio
liren at vivisimo.com
James Bursa
Duncan Wilcox
Dirk Manske
Dan Fandrich
Gisle Vanem
Gunter Knauf
Henrik Stoerner
Yang Tse
Nick Mathewson
Alexander Lazic
Andreas Rieke
Guilherme Balena Versiani
Brad Spencer
Ravi Pratap
William Ahern
Bram Matthys

View File

@@ -1,5 +1,215 @@
Changelog for the c-ares project
* February 19
- Vlad Dinulescu added ares_parse_ns_reply().
* February 13
- Yang Tse: Fix failure to get the search sequence of /etc/hosts and
DNS from /etc/nsswitch.conf, /etc/host.conf or /etc/svc.conf when
/etc/resolv.conf did not exist or was unable to read it.
* November 22
- Install ares_dns.h too
- Michael Wallner fixed this problem: When I set domains in the options
struct, and there are domain/search entries in /etc/resolv.conf, the domains
of the options struct will be overridden.
* November 6
- Yang Tse removed a couple of potential zero size memory allocations.
- Andreas Rieke fixed the line endings in the areslib.dsp file that I (Daniel)
broke in the 1.3.2 release. We should switch to a system where that file is
auto-generated. We could rip some code for that from curl...
Version 1.3.2 (November 3, 2006)
* October 12 2006
- Prevent ares_getsock() to overflow if more than 16 sockets are used.
* September 11 2006
- Guilherme Balena Versiani: I noted a strange BUG in Win32 port
(ares_init.c/get_iphlpapi_dns_info() function): when I disable the network
by hand or disconnect the network cable in Windows 2000 or Windows XP, my
application gets 127.0.0.1 as the only name server. The problem comes from
'GetNetworkParams' function, that returns the empty string "" as the only
name server in that case. Moreover, the Windows implementation of
inet_addr() returns INADDR_LOOPBACK instead of INADDR_NONE.
* August 29 2006
- Brad Spencer did
o made ares_version.h use extern "C" for c++ compilers
o fixed compiler warnings in ares_getnameinfo.c
o fixed a buffer position init for TCP reads
* August 3 2006
- Ravi Pratap fixed ares_getsock() to actually return the proper bitmap and
not always zero!
Version 1.3.1 (June 24, 2006)
* July 23, 2006
- Gisle Vanem added getopt() to the ahost program. Currently accepts
only [-t {a|aaaa}] to specify address family in ares_gethostbyname().
* June 19, 2006
- (wahern) Removed "big endian" DNS section and RR data integer parser
macros from ares_dns.h, which break c-ares on my Sparc64. Bit-wise
operations in C operate on logical values. And in any event the octets are
already in big-endian (aka network) byte order so they're being reversed
(thus the source of the breakage).
* June 18, 2006
- William Ahern handles EAGAIN/EWOULDBLOCK errors in most of the I/O calls
from area_process.c.
TODO: Handle one last EAGAIN for a UDP socket send(2) in
ares__send_query().
* May 10, 2006
- Bram Matthys brought my attention to a libtool peculiarity where detecting
things such as C++ compiler actually is a bad thing and since we don't need
that detection I added a work-around, much inspired by a previous patch by
Paolo Bonzini. This also shortens the configure script quite a lot.
* May 3, 2006
- Nick Mathewson added the ARES_OPT_SOCK_STATE_CB option that when set makes
c-ares call a callback on socket state changes. A better way than the
ares_getsock() to get full control over the socket state.
* January 9, 2006
- Alexander Lazic improved the getservbyport_r() configure check.
* January 6, 2006
- Alexander Lazic pointed out that the buildconf should use the ACLOCAL_FLAGS
variable for easier controlling what it does and how it runs.
* January 5, 2006
- James Bursa fixed c-ares to find the hosts file on RISC OS, and made it
build with newer gcc versions that no longer defines "riscos".
* December 22
- Daniel Stenberg added ares_getsock() that extracts the set of sockets to
wait for action on. Similar to ares_fds() but not restricted to using
select() for the waiting.
* November 25
- Yang Tse fixed some send() / recv() compiler warnings
* September 18
- Added constants that will be used by ares_getaddrinfo
- Made ares_getnameinfo use the reentrant getservbyport (getservbyport_r) if it
is available to ensure it works properly in a threaded environment.
* September 10
- configure fix for detecting a member in the sockaddr_in6 struct which failed
on ipv6-enabled HP-UX 11.00
Version 1.3.0 (August 29, 2005)
* August 21
- Alfredo Tupone provided a fix for the Windows code in get_iphlpapi_dns_info()
when getting the DNS server etc.
* June 19
- Added some checks for the addrinfo structure.
* June 2
- William Ahern:
Make UDP sockets non-blocking. I've confirmed that at least on Linux 2.4 a
read event can come back from poll() on a valid SOCK_DGRAM socket but
recv(2) will still block. This patch doesn't ignore EAGAIN in
read_udp_packets(), though maybe it should. (This patch was edited by Daniel
Stenberg and a new configure test was added (imported from curl's configure)
to properly detect what non-blocking socket approach to use.)
I'm not quite sure how this was happening, but I've been seeing PTR queries
which seem to return empty responses. At least, they were empty when calling
ares_expand_name() on the record. Here's a patch which guarantees to
NUL-terminate the expanded name. The old behavior failed to NUL-terminate if
len was 0, and this was causing strlen() to run past the end of the buffer
after calling ares_expand_name() and getting ARES_SUCCESS as the return
value. If q is not greater than *s then it's equal and *s is always
allocated with at least one byte.
* May 16
- Added ares_getnameinfo which mimics the getnameinfo API (another feature
that could use testing).
* May 14
- Added an inet_ntop function from BIND for systems that do not have it.
* April 9
- Made sortlist support IPv6 (this can probably use some testing).
- Made sortlist support CIDR matching for IPv4.
* April 8
- Added preliminary IPv6 support to ares_gethostbyname. Currently, sortlist
does not work with IPv6. Also provided an implementation of bitncmp from
BIND for systems that do not supply this function. This will be used to add
IPv6 support to sortlist.
- Made ares_gethostbyaddr support IPv6 by specifying AF_INET6 as the family.
The function can lookup IPv6 addresses both from files (/etc/hosts) and
DNS lookups.
* April 7
- Tupone Alfredo fixed includes of arpa/nameser_compat.h to build fine on Mac
OS X.
* April 5
- Dominick Meglio: Provided implementations of inet_net_pton and inet_pton
from BIND for systems that do not include these functions.
* March 11, 2005
- Dominick Meglio added ares_parse_aaaa_reply.c and did various
adjustments. The first little steps towards IPv6 support!
* November 7
- Fixed the VC project and makefile to use ares_cancel and ares_version
* October 24
- The released ares_version.h from 1.2.1 says 1.2.0 due to a maketgz flaw.
This is now fixed.
Version 1.2.1 (October 20, 2004)
* September 29
- Henrik Stoerner fix: got a report that Tru64 Unix (the unix from Digital

View File

@@ -13,6 +13,7 @@ Makefile.in
Makefile.dj
Makefile.m32
Makefile.netware
Makefile.vc6
install-sh
mkinstalldirs
configure

View File

@@ -4,18 +4,17 @@ lib_LTLIBRARIES = libcares.la
man_MANS = $(MANPAGES)
MSVCFILES = vc/adig/adig.dep vc/adig/adig.dsp vc/adig/adig.mak \
vc/adig/adig.plg vc/vc.dsw vc/ahost/ahost.dep vc/ahost/ahost.dsp \
vc/ahost/ahost.mak vc/ahost/ahost.plg vc/areslib/areslib.dep \
vc/areslib/areslib.dsp vc/areslib/areslib.mak vc/areslib/areslib.plg
MSVCFILES = vc/adig/adig.dep vc/adig/adig.dsp vc/vc.dsw vc/ahost/ahost.dep \
vc/ahost/ahost.dsp vc/areslib/areslib.dep vc/areslib/areslib.dsp \
vc/areslib/areslib.dsw
# adig and ahost are just sample programs and thus not mentioned with the
# regular sources and headers
EXTRA_DIST = CHANGES README.cares Makefile.inc adig.c ahost.c $(man_MANS) \
$(MSVCFILES)
$(MSVCFILES) AUTHORS config-win32.h
VER=-version-info 0:0:0
VER=-version-info 1:0:0
# This flag accepts an argument of the form current[:revision[:age]]. So,
# passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
# 1.
@@ -44,7 +43,13 @@ VER=-version-info 0:0:0
# set age to 0. (c:r:a=0)
#
libcares_la_LDFLAGS = $(VER)
if NO_UNDEFINED
# The -no-undefined flag is crucial for this to build fine on some platforms
UNDEF = -no-undefined
endif
libcares_la_LDFLAGS = $(UNDEF) $(VER)
# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc
@@ -54,4 +59,13 @@ libcares_la_SOURCES = $(CSOURCES) $(HHEADERS)
# where to install the c-ares headers
libcares_ladir = $(includedir)
# what headers to install on 'make install':
libcares_la_HEADERS = ares.h ares_version.h
libcares_la_HEADERS = ares.h ares_version.h ares_dns.h
# Make files named *.dist replace the file without .dist extension
dist-hook:
find $(distdir) -name "*.dist" -exec rm {} \;
(distit=`find $(srcdir) -name "*.dist"`; \
for file in $$distit; do \
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
cp $$file $(distdir)$$strip; \
done)

View File

@@ -2,34 +2,63 @@
# c-ares Makefile for djgpp/gcc/Watt-32.
# By Gisle Vanem <giva@bgnett.no> 2004.
#
.SUFFIXES: .exe
# $Id$
TOPDIR = ..
include ../packages/DOS/common.dj
include Makefile.inc
WATT32_ROOT = $(subst \,/,$(WATT_ROOT))
CFLAGS += -DWATT32 -DHAVE_AF_INET6 -DHAVE_PF_INET6 -DHAVE_FIONBIO \
-DHAVE_STRUCT_IN6_ADDR -DHAVE_SOCKADDR_IN6_SIN6_SCOPE_ID \
-DHAVE_SYS_TIME_H -DHAVE_STRUCT_SOCKADDR_IN6 -DHAVE_STRUCT_ADDRINFO \
-DHAVE_SIGNAL_H -DHAVE_SIG_ATOMIC_T -DRETSIGTYPE='void' -DHAVE_PROCESS_H \
-DHAVE_ARPA_NAMESER_H -DNS_INADDRSZ=4 -DHAVE_RECV -DHAVE_SEND \
-DSEND_TYPE_ARG1='int' -DSEND_QUAL_ARG2='const' \
-DSEND_TYPE_ARG2='void*' -DSEND_TYPE_ARG3='int' \
-DSEND_TYPE_ARG4='int' -DSEND_TYPE_RETV='int' \
-DRECV_TYPE_ARG1='int' -DRECV_TYPE_ARG2='void*' \
-DRECV_TYPE_ARG3='int' -DRECV_TYPE_ARG4='int' \
-DRECV_TYPE_RETV='int' -DHAVE_STRUCT_TIMEVAL \
-UHAVE_CONFIG_H
CC = gcc
CFLAGS = -O2 -Wall -DWATT32 -Dselect=select_s -I$(WATT32_ROOT)/inc
LDFLAGS = -s
EX_LIBS = $(WATT32_ROOT)/lib/libwatt.a
OBJ_DIR = djgpp
ifeq ($(USE_DEBUG),1)
EX_LIBS = ../lib/libcurl.a
OBJ_HACK = $(OBJECTS)
else
OBJ_HACK = libcares.a
endif
ifeq ($(USE_SSL),1)
EX_LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
endif
ifeq ($(USE_ZLIB),1)
EX_LIBS += $(ZLIB_ROOT)/libz.a
CFLAGS += -DUSE_MANUAL
endif
ifeq ($(USE_IDNA),1)
EX_LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
endif
EX_LIBS += $(WATT32_ROOT)/lib/libwatt.a
OBJECTS = $(addprefix $(OBJ_DIR)/, $(CSOURCES:.c=.o))
all: $(OBJ_DIR) libcares.a ahost.exe adig.exe
@echo Welcome to c-ares.
$(OBJ_DIR):
- mkdir $(OBJ_DIR)
libcares.a: $(OBJECTS)
ar rs $@ $?
ahost.exe: ahost.c libcares.a
ahost.exe: ahost.c $(OBJ_HACK)
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
adig.exe: adig.c libcares.a
adig.exe: adig.c $(OBJ_HACK)
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
clean:
@@ -39,12 +68,5 @@ vclean realclean: clean
rm -f ahost.exe adig.exe depend.dj
- rmdir $(OBJ_DIR)
$(OBJ_DIR)/%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
@echo
depend:
$(CC) -MM $(CFLAGS) $(CSOURCES) | \
sed -e 's/^\([a-zA-Z0-9_-]*\.o:\)/$$(OBJ_DIR)\/\1/' > depend.dj
-include depend.dj

View File

@@ -1,15 +1,22 @@
CSOURCES = ares_fds.c ares_process.c ares_free_hostent.c ares_query.c \
ares__close_sockets.c ares_free_string.c ares_search.c ares__get_hostent.c \
ares_gethostbyaddr.c ares_send.c ares__read_line.c ares_gethostbyname.c \
ares_strerror.c ares_cancel.c ares_init.c ares_timeout.c ares_destroy.c \
ares_mkquery.c ares_version.c ares_expand_name.c ares_parse_a_reply.c \
windows_port.c ares_expand_string.c ares_parse_ptr_reply.c
CSOURCES = ares_fds.c ares_getsock.c ares_process.c ares_free_hostent.c \
ares_query.c ares__close_sockets.c ares_free_string.c ares_search.c \
ares__get_hostent.c ares_gethostbyaddr.c ares_send.c ares__read_line.c \
ares_gethostbyname.c ares_strerror.c ares_cancel.c ares_init.c \
ares_timeout.c ares_destroy.c ares_mkquery.c ares_version.c \
ares_expand_name.c ares_parse_a_reply.c windows_port.c \
ares_expand_string.c ares_parse_ptr_reply.c ares_parse_aaaa_reply.c \
ares_getnameinfo.c inet_net_pton.c bitncmp.c inet_ntop.c \
ares_parse_ns_reply.c
HHEADERS = ares.h ares_private.h setup.h ares_dns.h ares_version.h nameser.h
HHEADERS = ares.h ares_private.h setup.h ares_dns.h ares_version.h \
nameser.h inet_net_pton.h inet_ntop.h ares_ipv6.h bitncmp.h \
setup_once.h
MANPAGES= ares_destroy.3 ares_expand_name.3 ares_expand_string.3 ares_fds.3 \
ares_free_hostent.3 ares_free_string.3 ares_gethostbyaddr.3 \
ares_gethostbyname.3 ares_init.3 ares_init_options.3 ares_mkquery.3 \
ares_parse_a_reply.3 ares_parse_ptr_reply.3 ares_process.3 \
ares_query.3 ares_search.3 ares_send.3 ares_strerror.3 ares_timeout.3 \
ares_version.3 ares_cancel.3
ares_version.3 ares_cancel.3 ares_parse_aaaa_reply.3 ares_getnameinfo.3 \
ares_getsock.3 ares_parse_ns_reply.3

View File

@@ -7,29 +7,21 @@
## Quick hack by Guenter; comments to: /dev/nul
CC = gcc
AR = ar
RANLIB = ranlib
STRIP = strip -g
#RM = rm -f
########################################################
## Nothing more to do below this line!
LIB=libcares.a
CC=gcc
#CPPFLAGS=@CPPFLAGS@
WARN_FLAGS=-Wall
CFLAGS=-O2
CFLAGS+=${WARN_CFLAGS} ${ERROR_CFLAGS}
DEFS=-DMINGW32
CFLAGS=-O2 -Wall
LDFLAGS=-s
LIBS=-lwsock32
ALL_CFLAGS=${CPPFLAGS} ${CFLAGS} ${DEFS}
MANPAGES := $(patsubst %.c,%.o,$(wildcard ares_*.3))
OBJS := $(patsubst %.c,%.o,$(wildcard ares_*.c))
OBJS += windows_port.o
OBJS += windows_port.o inet_ntop.o inet_net_pton.o bitncmp.o
$(LIB): ${OBJS}
ar cru $@ ${OBJS}
@@ -51,7 +43,7 @@ ahost.exe: ahost.o $(LIB)
${OBJS}: ares.h ares_dns.h ares_private.h
.c.o:
${CC} -c ${ALL_CFLAGS} $<
${CC} -c ${CFLAGS} $<
check:
@@ -73,3 +65,4 @@ clean:
distclean: clean
rm -f config.cache config.log config.status Makefile

View File

@@ -1,9 +1,10 @@
#################################################################
# $Id$
#
## Makefile for building libares.lib (NetWare version - gnu make)
## Makefile for building libares (NetWare version - gnu make)
## Use: make -f Makefile.netware
##
## Comments to: Guenter Knauf <eflash@gmx.net>
## Comments to: Guenter Knauf http://www.gknw.de/phpbb
#
#################################################################
@@ -18,9 +19,9 @@ endif
# Edit the vars below to change NLM target settings.
TARGETS = adig.nlm ahost.nlm
LTARGET = libcares.lib
LTARGET = libcares.$(LIBEXT)
VERSION = $(LIBCARES_VERSION)
COPYR = Copyright (c) 1996 - 2004, Daniel Stenberg, <daniel@haxx.se>
COPYR = Copyright (C) 1996 - 2007, Daniel Stenberg, <daniel@haxx.se>
DESCR = cURL $(subst .def,,$(notdir $@)) $(LIBCARES_VERSION_STR) - http://curl.haxx.se
MTSAFE = YES
STACK = 64000
@@ -72,6 +73,7 @@ LD = mwldnlm
LDFLAGS = -nostdlib $(PRELUDE) $(OBJS) $(<:.def=.o) -o $@ -commandfile
AR = mwldnlm
ARFLAGS = -type library -w nocmdline $(OBJDIR)/*.o -o
LIBEXT = lib
CFLAGS += -msgstyle gcc -gccinc -inline off -opt nointrinsics -proc 586
CFLAGS += -relax_pointers
#CFLAGS += -w on
@@ -88,8 +90,9 @@ LD = nlmconv
LDFLAGS = -T
AR = ar
ARFLAGS = -cq
CFLAGS += -fno-builtin -fpack-struct -fpcc-struct-return -fno-strict-aliasing
CFLAGS += -Wall -Wno-format # -pedantic
LIBEXT = a
CFLAGS += -fno-builtin -fpcc-struct-return -fno-strict-aliasing
CFLAGS += -Wall -Wno-format -Wno-uninitialized # -pedantic
ifeq ($(LIBARCH),LIBC)
PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
else
@@ -104,7 +107,7 @@ SDK_LIBC = $(NDK_ROOT)/libc
ifeq ($(LIBARCH),LIBC)
INCLUDES += -I$(SDK_LIBC)/include -I$(SDK_LIBC)/include/nks
INCLUDES += -I$(SDK_LIBC)/include/winsock
# INCLUDES += -I$(SDK_LIBC)/include/winsock
CFLAGS += -D_POSIX_SOURCE
# CFLAGS += -D__ANSIC__
else
@@ -126,7 +129,10 @@ DL = '
#-include $(NDKBASE)/nlmconv/ncpfs.inc
endif
OBJS := $(patsubst %.c,$(OBJDIR)/%.o,$(wildcard ares_*.c))
# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc
OBJS := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(CSOURCES)))
.PHONY: lib nlm prebuild dist install clean
@@ -152,7 +158,7 @@ clean:
-$(RM) -r $(OBJDIR)
-$(RM) -r arpa
%.lib: $(OBJS)
%.$(LIBEXT): $(OBJS)
@echo Creating $@
@-$(RM) $@
@$(AR) $(ARFLAGS) $@ $^
@@ -252,10 +258,14 @@ config.h: Makefile.netware
@echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
@echo $(DL)** All your changes will be lost!!$(DL) >> $@
@echo $(DL)*/$(DL) >> $@
@echo $(DL)#ifndef NETWARE$(DL) >> $@
@echo $(DL)#error This $(notdir $@) is created for NetWare platform!$(DL) >> $@
@echo $(DL)#endif$(DL) >> $@
@echo $(DL)#define OS "i586-pc-NetWare"$(DL) >> $@
@echo $(DL)#define VERSION "$(LIBCURL_VERSION_STR)"$(DL) >> $@
@echo $(DL)#define PACKAGE_BUGREPORT "curl-bug@haxx.se"$(DL) >> $@
@echo $(DL)#define VERSION "$(LIBCARES_VERSION_STR)"$(DL) >> $@
@echo $(DL)#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"$(DL) >> $@
@echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
@echo $(DL)#define HAVE_ARPA_NAMESER_H 1$(DL) >> $@
@echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
@echo $(DL)#define HAVE_DLFCN_H 1$(DL) >> $@
@echo $(DL)#define HAVE_DLOPEN 1$(DL) >> $@
@@ -272,9 +282,13 @@ config.h: Makefile.netware
@echo $(DL)#define HAVE_LONGLONG 1$(DL) >> $@
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
@echo $(DL)#define HAVE_RECV 1$(DL) >> $@
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
@echo $(DL)#define HAVE_SEND 1$(DL) >> $@
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
@echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SIG_ATOMIC_T 1$(DL) >> $@
@echo $(DL)#define HAVE_SOCKET 1$(DL) >> $@
@echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
@echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
@@ -293,10 +307,29 @@ config.h: Makefile.netware
@echo $(DL)#define HAVE_TIME_H 1$(DL) >> $@
@echo $(DL)#define HAVE_UNAME 1$(DL) >> $@
@echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG2 char *$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG3 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
@echo $(DL)#define SIZEOF_CURL_OFF_T 4$(DL) >> $@
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
@echo $(DL)#define HAVE_AF_INET6 1$(DL) >> $@
@echo $(DL)#define HAVE_PF_INET6 1$(DL) >> $@
@echo $(DL)#define HAVE_STRUCT_ADDRINFO 1$(DL) >> $@
@echo $(DL)#define HAVE_STRUCT_IN6_ADDR 1$(DL) >> $@
@echo $(DL)#define HAVE_STRUCT_SOCKADDR_IN6 1$(DL) >> $@
@echo $(DL)#define HAVE_STRUCT_TIMEVAL 1$(DL) >> $@
@echo $(DL)#define SIZEOF_STRUCT_IN6_ADDR 16$(DL) >> $@
@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
ifdef NW_WINSOCK
@echo $(DL)#define HAVE_CLOSESOCKET 1$(DL) >> $@
else
@@ -305,6 +338,11 @@ else
@echo $(DL)#define HAVE_SYS_SOCKIO_H 1$(DL) >> $@
@echo $(DL)#define HAVE_NETDB_H 1$(DL) >> $@
endif
@echo $(DL)#ifdef __GNUC__$(DL) >> $@
@echo $(DL)#define HAVE_VARIADIC_MACROS_GCC 1$(DL) >> $@
@echo $(DL)#else$(DL) >> $@
@echo $(DL)#define HAVE_VARIADIC_MACROS_C99 1$(DL) >> $@
@echo $(DL)#endif$(DL) >> $@
ifdef OLD_NOVELLSDK
@echo $(DL)#define socklen_t int$(DL) >> $@
endif

231
ares/Makefile.vc6 Normal file
View File

@@ -0,0 +1,231 @@
# $Id$
#
# C-ares makefile for MSVC6+
# G. Vanem <giva@bgnett.no>.
#
CFG_MODEL = MD
DEBUG_MODEL = d
USE_WATT32 = 0
#
# Configurations:
# -MD - msvcrt.dll, threads, release (normal)
# -MDd - msvcrtd.dll, threads, debug
# -ML - libc, no threads, release
# -MLd - libc, no threads, debug
# -MT - libc, threads, release
# -MTd - libc, threads, debug
CC = cl
CFLAGS = -nologo -$(CFG_MODEL)$(DEBUG_MODEL) -W3 -Yd -Zi
LDFLAGS = -machine:i386 -map
OBJ_DIR = VC6_obj
DEF_FILE = cares.def
!if "$(USE_WATT32)" == "1"
CFLAGS = $(CFLAGS) -UWIN32 -DWATT32 -I$(WATT_ROOT)\inc
EX_LIBS = $(WATT_ROOT)\lib\wattcpvc_imp.lib
!else
CFLAGS = $(CFLAGS) -DWIN32 -DWIN32_LEAN_AND_MEAN
EX_LIBS = advapi32.lib ws2_32.lib
!endif
!if "$(DEBUG_MODEL)" == "d"
CFLAGS = $(CFLAGS) -D_DEBUG -GZ
LDFLAGS = $(LDFLAGS) -debug -fixed:no
!else
CFLAGS = $(CFLAGS) -O2 -Og
LDFLAGS = $(LDFLAGS) -release
!endif
OBJECTS = $(OBJ_DIR)\ares_fds.obj \
$(OBJ_DIR)\ares_process.obj \
$(OBJ_DIR)\ares_free_hostent.obj \
$(OBJ_DIR)\ares_query.obj \
$(OBJ_DIR)\ares__close_sockets.obj \
$(OBJ_DIR)\ares_free_string.obj \
$(OBJ_DIR)\ares_search.obj \
$(OBJ_DIR)\ares__get_hostent.obj \
$(OBJ_DIR)\ares_gethostbyaddr.obj \
$(OBJ_DIR)\ares_getsock.obj \
$(OBJ_DIR)\ares_send.obj \
$(OBJ_DIR)\ares__read_line.obj \
$(OBJ_DIR)\ares_gethostbyname.obj \
$(OBJ_DIR)\ares_getnameinfo.obj \
$(OBJ_DIR)\ares_strerror.obj \
$(OBJ_DIR)\ares_cancel.obj \
$(OBJ_DIR)\ares_init.obj \
$(OBJ_DIR)\ares_timeout.obj \
$(OBJ_DIR)\ares_destroy.obj \
$(OBJ_DIR)\ares_mkquery.obj \
$(OBJ_DIR)\ares_version.obj \
$(OBJ_DIR)\ares_expand_name.obj \
$(OBJ_DIR)\ares_parse_a_reply.obj \
$(OBJ_DIR)\ares_parse_aaaa_reply.obj \
$(OBJ_DIR)\ares_parse_ns_reply.obj \
$(OBJ_DIR)\windows_port.obj \
$(OBJ_DIR)\ares_expand_string.obj \
$(OBJ_DIR)\ares_parse_ptr_reply.obj \
$(OBJ_DIR)\bitncmp.obj \
$(OBJ_DIR)\inet_net_pton.obj \
$(OBJ_DIR)\inet_ntop.obj
all: $(OBJ_DIR) cares.lib cares.dll cares_imp.lib ahost.exe adig.exe
@echo Welcome to c-ares library and examples
$(OBJ_DIR):
mkdir $(OBJ_DIR)
cares.lib: $(OBJ_DIR) $(OBJECTS)
lib -nologo -out:$@ $(OBJECTS)
cares_imp.lib cares.dll: $(OBJ_DIR) $(DEF_FILE) $(OBJECTS)
link $(LDFLAGS) -dll -implib:cares_imp.lib -out:cares.dll \
-def:$(DEF_FILE) $(OBJECTS) $(EX_LIBS)
$(DEF_FILE): $(OBJECTS) Makefile.VC6
@echo ; Generated. DO NOT EDIT > $@
@echo LIBRARY cares.dll >> $@
@echo EXPORTS >> $@
@echo ares_cancel >> $@
@echo ares_destroy >> $@
@echo ares_expand_name >> $@
@echo ares_expand_string >> $@
@echo ares_fds >> $@
@echo ares_free_hostent >> $@
@echo ares_free_string >> $@
@echo ares_gethostbyaddr >> $@
@echo ares_gethostbyname >> $@
@echo ares_getsock >> $@
@echo ares_init >> $@
@echo ares_init_options >> $@
@echo ares_mkquery >> $@
@echo ares_parse_a_reply >> $@
@echo ares_parse_ptr_reply >> $@
@echo ares_parse_ns_reply >> $@
@echo ares_process >> $@
@echo ares_query >> $@
@echo ares_search >> $@
@echo ares_strerror >> $@
@echo ares_strncasecmp >> $@
@echo ares_strcasecmp >> $@
@echo ares_timeout >> $@
@echo ares_version >> $@
@echo ares_inet_net_pton >> $@
@echo ares_inet_ntop >> $@
@echo ares_inet_pton >> $@
@echo ares_writev >> $@
@echo ares_getnameinfo >> $@
@echo ares_gettimeofday >> $@
@echo ares_parse_aaaa_reply >> $@
ahost.exe: $(OBJ_DIR) $(OBJ_DIR)\ahost.obj $(OBJ_DIR)\getopt.obj cares_imp.lib
link $(LDFLAGS) -out:$@ $(OBJ_DIR)\ahost.obj $(OBJ_DIR)\getopt.obj cares_imp.lib $(EX_LIBS)
adig.exe: $(OBJ_DIR) $(OBJ_DIR)\adig.obj $(OBJ_DIR)\getopt.obj cares_imp.lib
link $(LDFLAGS) -out:$@ $(OBJ_DIR)\adig.obj $(OBJ_DIR)\getopt.obj cares_imp.lib $(EX_LIBS)
clean:
- del $(OBJ_DIR)\*.obj *.ilk *.pdb *.pbt *.pbi *.pbo *._xe *.map
vclean realclean: clean
- del $(DEF_FILE) cares.lib cares_imp.* cares.dll ahost.exe adig.exe
- rd $(OBJ_DIR)
.c{$(OBJ_DIR)}.obj:
$(CC) $(CFLAGS) -Fo$*.obj -c $<
#
# Copyright "gcc -MM .."
#
$(OBJ_DIR)\ares_fds.obj: ares_fds.c setup.h setup_once.h ares.h ares_private.h \
ares_ipv6.h
$(OBJ_DIR)\ares_process.obj: ares_process.c setup.h setup_once.h nameser.h \
ares.h ares_dns.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_free_hostent.obj: ares_free_hostent.c setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_query.obj: ares_query.c setup.h setup_once.h nameser.h \
ares.h ares_dns.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares__close_sockets.obj: ares__close_sockets.c setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_free_string.obj: ares_free_string.c setup.h setup_once.h ares.h
$(OBJ_DIR)\ares_search.obj: ares_search.c setup.h setup_once.h nameser.h \
ares.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares__get_hostent.obj: ares__get_hostent.c setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h inet_net_pton.h
$(OBJ_DIR)\ares_gethostbyaddr.obj: ares_gethostbyaddr.c setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h
$(OBJ_DIR)\ares_send.obj: ares_send.c setup.h setup_once.h nameser.h ares.h \
ares_dns.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares__read_line.obj: ares__read_line.c setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_gethostbyname.obj: ares_gethostbyname.c setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h bitncmp.h
$(OBJ_DIR)\ares_strerror.obj: ares_strerror.c setup.h setup_once.h ares.h
$(OBJ_DIR)\ares_cancel.obj: ares_cancel.c setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_init.obj: ares_init.c setup.h setup_once.h nameser.h ares.h \
ares_private.h ares_ipv6.h inet_net_pton.h
$(OBJ_DIR)\ares_timeout.obj: ares_timeout.c setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_destroy.obj: ares_destroy.c setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_mkquery.obj: ares_mkquery.c setup.h setup_once.h nameser.h \
ares.h ares_dns.h
$(OBJ_DIR)\ares_version.obj: ares_version.c setup.h setup_once.h ares_version.h
$(OBJ_DIR)\ares_expand_name.obj: ares_expand_name.c setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_parse_a_reply.obj: ares_parse_a_reply.c setup.h setup_once.h \
nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\windows_port.obj: windows_port.c setup.h setup_once.h nameser.h \
ares.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_expand_string.obj: ares_expand_string.c setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_parse_ptr_reply.obj: ares_parse_ptr_reply.c setup.h \
setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_parse_aaaa_reply.obj: ares_parse_aaaa_reply.c setup.h \
setup_once.h nameser.h ares.h ares_dns.h inet_net_pton.h ares_private.h \
ares_ipv6.h
$(OBJ_DIR)\ares_parse_ns_reply.obj: ares_parse_ns_reply.c setup.h \
setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h
$(OBJ_DIR)\ares_getnameinfo.obj: ares_getnameinfo.c setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_ntop.h
$(OBJ_DIR)\inet_net_pton.obj: inet_net_pton.c setup.h setup_once.h nameser.h \
ares_ipv6.h inet_net_pton.h
$(OBJ_DIR)\bitncmp.obj: bitncmp.c bitncmp.h
$(OBJ_DIR)\inet_ntop.obj: inet_ntop.c setup.h setup_once.h nameser.h \
ares_ipv6.h inet_ntop.h

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,6 @@
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* $Id$
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
@@ -14,30 +16,38 @@
*/
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/nameser.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <netdb.h>
#endif
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include "ares.h"
#include "ares_dns.h"
#include "inet_ntop.h"
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#ifdef WATT32
#undef WIN32 /* Redefined in MingW headers */
#endif
/* Mac OS X portability check */
@@ -45,8 +55,10 @@
#define T_SRV 33 /* server selection */
#endif
#ifndef optind
extern int optind;
extern char *optarg;
#endif
struct nv {
const char *name;
@@ -142,8 +154,8 @@ int main(int argc, char **argv)
fd_set read_fds, write_fds;
struct timeval *tvp, tv;
#ifdef WIN32
WORD wVersionRequested = MAKEWORD(1,1);
#ifdef USE_WINSOCK
WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
WSADATA wsaData;
WSAStartup(wVersionRequested, &wsaData);
#endif
@@ -151,10 +163,16 @@ int main(int argc, char **argv)
options.flags = ARES_FLAG_NOCHECKRESP;
options.servers = NULL;
options.nservers = 0;
while ((c = getopt(argc, argv, "f:s:c:t:T:U:")) != -1)
while ((c = getopt(argc, argv, "df:s:c:t:T:U:")) != -1)
{
switch (c)
{
case 'd':
#ifdef WATT32
dbug_init();
#endif
break;
case 'f':
/* Add a flag. */
for (i = 0; i < nflags; i++)
@@ -214,17 +232,17 @@ int main(int argc, char **argv)
case 'T':
/* Set the TCP port number. */
if (!isdigit((unsigned char)*optarg))
if (!ISDIGIT(*optarg))
usage();
options.tcp_port = strtol(optarg, NULL, 0);
options.tcp_port = (unsigned short)strtol(optarg, NULL, 0);
optmask |= ARES_OPT_TCP_PORT;
break;
case 'U':
/* Set the UDP port number. */
if (!isdigit((unsigned char)*optarg))
if (!ISDIGIT(*optarg))
usage();
options.udp_port = strtol(optarg, NULL, 0);
options.udp_port = (unsigned short)strtol(optarg, NULL, 0);
optmask |= ARES_OPT_UDP_PORT;
break;
}
@@ -266,7 +284,7 @@ int main(int argc, char **argv)
break;
tvp = ares_timeout(channel, NULL, &tv);
count = select(nfds, &read_fds, &write_fds, NULL, tvp);
if (count < 0 && errno != EINVAL)
if (count < 0 && SOCKERRNO != EINVAL)
{
perror("select");
return 1;
@@ -275,6 +293,11 @@ int main(int argc, char **argv)
}
ares_destroy(channel);
#ifdef USE_WINSOCK
WSACleanup();
#endif
return 0;
}
@@ -385,7 +408,7 @@ static const unsigned char *display_question(const unsigned char *aptr,
*/
if (aptr + QFIXEDSZ > abuf + alen)
{
free(name);
ares_free_string(name);
return NULL;
}
@@ -401,7 +424,7 @@ static const unsigned char *display_question(const unsigned char *aptr,
if (dnsclass != C_IN)
printf("\t%s", class_name(dnsclass));
printf("\t%s\n", type_name(type));
free(name);
ares_free_string(name);
return aptr;
}
@@ -412,7 +435,7 @@ static const unsigned char *display_rr(const unsigned char *aptr,
char *name;
int type, dnsclass, ttl, dlen, status;
long len;
struct in_addr addr;
char addr[46];
/* Parse the RR name. */
status = ares_expand_name(aptr, abuf, alen, &name, &len);
@@ -425,7 +448,7 @@ static const unsigned char *display_rr(const unsigned char *aptr,
*/
if (aptr + RRFIXEDSZ > abuf + alen)
{
free(name);
ares_free_string(name);
return NULL;
}
@@ -438,7 +461,7 @@ static const unsigned char *display_rr(const unsigned char *aptr,
aptr += RRFIXEDSZ;
if (aptr + dlen > abuf + alen)
{
free(name);
ares_free_string(name);
return NULL;
}
@@ -447,7 +470,7 @@ static const unsigned char *display_rr(const unsigned char *aptr,
if (dnsclass != C_IN)
printf("\t%s", class_name(dnsclass));
printf("\t%s", type_name(type));
free(name);
ares_free_string(name);
/* Display the RR data. Don't touch aptr. */
switch (type)
@@ -465,7 +488,7 @@ static const unsigned char *display_rr(const unsigned char *aptr,
if (status != ARES_SUCCESS)
return NULL;
printf("\t%s.", name);
free(name);
ares_free_string(name);
break;
case T_HINFO:
@@ -474,12 +497,12 @@ static const unsigned char *display_rr(const unsigned char *aptr,
len = *p;
if (p + len + 1 > aptr + dlen)
return NULL;
printf("\t%.*s", len, p + 1);
printf("\t%.*s", (int)len, p + 1);
p += len + 1;
len = *p;
if (p + len + 1 > aptr + dlen)
return NULL;
printf("\t%.*s", len, p + 1);
printf("\t%.*s", (int)len, p + 1);
break;
case T_MINFO:
@@ -489,13 +512,13 @@ static const unsigned char *display_rr(const unsigned char *aptr,
if (status != ARES_SUCCESS)
return NULL;
printf("\t%s.", name);
free(name);
ares_free_string(name);
p += len;
status = ares_expand_name(p, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
printf("\t%s.", name);
free(name);
ares_free_string(name);
break;
case T_MX:
@@ -504,12 +527,12 @@ static const unsigned char *display_rr(const unsigned char *aptr,
*/
if (dlen < 2)
return NULL;
printf("\t%d", (aptr[0] << 8) | aptr[1]);
printf("\t%d", DNS__16BIT(aptr));
status = ares_expand_name(aptr + 2, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
printf("\t%s.", name);
free(name);
ares_free_string(name);
break;
case T_SOA:
@@ -521,22 +544,20 @@ static const unsigned char *display_rr(const unsigned char *aptr,
if (status != ARES_SUCCESS)
return NULL;
printf("\t%s.\n", name);
free(name);
ares_free_string(name);
p += len;
status = ares_expand_name(p, abuf, alen, &name, &len);
if (status != ARES_SUCCESS)
return NULL;
printf("\t\t\t\t\t\t%s.\n", name);
free(name);
ares_free_string(name);
p += len;
if (p + 20 > aptr + dlen)
return NULL;
printf("\t\t\t\t\t\t( %d %d %d %d %d )",
(p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3],
(p[4] << 24) | (p[5] << 16) | (p[6] << 8) | p[7],
(p[8] << 24) | (p[9] << 16) | (p[10] << 8) | p[11],
(p[12] << 24) | (p[13] << 16) | (p[14] << 8) | p[15],
(p[16] << 24) | (p[17] << 16) | (p[18] << 8) | p[19]);
printf("\t\t\t\t\t\t( %lu %lu %lu %lu %lu )",
(unsigned long)DNS__32BIT(p), (unsigned long)DNS__32BIT(p+4),
(unsigned long)DNS__32BIT(p+8), (unsigned long)DNS__32BIT(p+12),
(unsigned long)DNS__32BIT(p+16));
break;
case T_TXT:
@@ -548,7 +569,7 @@ static const unsigned char *display_rr(const unsigned char *aptr,
len = *p;
if (p + len + 1 > aptr + dlen)
return NULL;
printf("\t%.*s", len, p + 1);
printf("\t%.*s", (int)len, p + 1);
p += len + 1;
}
break;
@@ -557,8 +578,14 @@ static const unsigned char *display_rr(const unsigned char *aptr,
/* The RR data is a four-byte Internet address. */
if (dlen != 4)
return NULL;
memcpy(&addr, aptr, sizeof(struct in_addr));
printf("\t%s", inet_ntoa(addr));
printf("\t%s", ares_inet_ntop(AF_INET,aptr,addr,sizeof(addr)));
break;
case T_AAAA:
/* The RR data is a 16-byte IPv6 address. */
if (dlen != 16)
return NULL;
printf("\t%s", ares_inet_ntop(AF_INET6,aptr,addr,sizeof(addr)));
break;
case T_WKS:
@@ -578,11 +605,12 @@ static const unsigned char *display_rr(const unsigned char *aptr,
if (status != ARES_SUCCESS)
return NULL;
printf("\t%s.", name);
free(name);
ares_free_string(name);
break;
default:
printf("\t[Unknown RR; cannot parse]");
break;
}
printf("\n");

View File

@@ -1,4 +1,6 @@
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* $Id$
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
@@ -14,26 +16,43 @@
*/
#include "setup.h"
#include <sys/types.h>
#ifdef WIN32
#else
#if !defined(WIN32) || defined(WATT32)
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#endif
#include "ares.h"
#include "ares_dns.h"
#include "inet_ntop.h"
#include "inet_net_pton.h"
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#ifndef optind
extern int optind;
extern char *optarg;
#endif
#ifndef HAVE_STRUCT_IN6_ADDR
struct in6_addr
{
unsigned char s6_addr[16];
};
#endif
static void callback(void *arg, int status, struct hostent *host);
@@ -42,18 +61,45 @@ static void usage(void);
int main(int argc, char **argv)
{
ares_channel channel;
int status, nfds;
int status, nfds, c, addr_family = AF_INET;
fd_set read_fds, write_fds;
struct timeval *tvp, tv;
struct in_addr addr;
struct in_addr addr4;
struct in6_addr addr6;
#ifdef WIN32
WORD wVersionRequested = MAKEWORD(1,1);
#ifdef USE_WINSOCK
WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
WSADATA wsaData;
WSAStartup(wVersionRequested, &wsaData);
#endif
if (argc <= 1)
while ((c = getopt(argc,argv,"dt:h")) != -1)
{
switch (c)
{
case 'd':
#ifdef WATT32
dbug_init();
#endif
break;
case 't':
if (!strcasecmp(optarg,"a"))
addr_family = AF_INET;
else if (!strcasecmp(optarg,"aaaa"))
addr_family = AF_INET6;
else
usage();
break;
case 'h':
default:
usage();
break;
}
}
argc -= optind;
argv += optind;
if (argc < 1)
usage();
status = ares_init(&channel);
@@ -64,15 +110,21 @@ int main(int argc, char **argv)
}
/* Initiate the queries, one per command-line argument. */
for (argv++; *argv; argv++)
for ( ; *argv; argv++)
{
addr.s_addr = inet_addr(*argv);
if (addr.s_addr == INADDR_NONE)
ares_gethostbyname(channel, *argv, AF_INET, callback, *argv);
if (ares_inet_pton(AF_INET, *argv, &addr4) == 1)
{
ares_gethostbyaddr(channel, &addr4, sizeof(addr4), AF_INET, callback,
*argv);
}
else if (ares_inet_pton(AF_INET6, *argv, &addr6) == 1)
{
ares_gethostbyaddr(channel, &addr6, sizeof(addr6), AF_INET6, callback,
*argv);
}
else
{
ares_gethostbyaddr(channel, &addr, sizeof(addr), AF_INET, callback,
*argv);
ares_gethostbyname(channel, *argv, addr_family, callback, *argv);
}
}
@@ -90,12 +142,16 @@ int main(int argc, char **argv)
}
ares_destroy(channel);
#ifdef USE_WINSOCK
WSACleanup();
#endif
return 0;
}
static void callback(void *arg, int status, struct hostent *host)
{
struct in_addr addr;
char **p;
if (status != ARES_SUCCESS)
@@ -106,13 +162,26 @@ static void callback(void *arg, int status, struct hostent *host)
for (p = host->h_addr_list; *p; p++)
{
memcpy(&addr, *p, sizeof(struct in_addr));
printf("%-32s\t%s\n", host->h_name, inet_ntoa(addr));
char addr_buf[46] = "??";
ares_inet_ntop(host->h_addrtype, *p, addr_buf, sizeof(addr_buf));
printf("%-32s\t%s", host->h_name, addr_buf);
#if 0
if (host->h_aliases[0])
{
int i;
printf (", Aliases: ");
for (i = 0; host->h_aliases[i]; i++)
printf("%s ", host->h_aliases[i]);
}
#endif
puts("");
}
}
static void usage(void)
{
fprintf(stderr, "usage: ahost {host|addr} ...\n");
fprintf(stderr, "usage: ahost [-t {a|aaaa}] {host|addr} ...\n");
exit(1);
}

View File

@@ -29,12 +29,18 @@
#if defined(WATT32)
#include <netinet/in.h>
#include <sys/socket.h>
#include <tcp.h>
#elif defined(WIN32)
#include <winsock.h>
#include <winsock2.h>
#include <windows.h>
#else
#include <netinet/in.h>
#include <sys/socket.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define ARES_SUCCESS 0
@@ -60,6 +66,13 @@
#define ARES_EDESTRUCTION 16
#define ARES_EBADSTR 17
/* ares_getnameinfo error codes */
#define ARES_EBADFLAGS 18
/* ares_getaddrinfo error codes */
#define ARES_ENONAME 19
#define ARES_EBADHINTS 20
/* Flag values */
#define ARES_FLAG_USEVC (1 << 0)
#define ARES_FLAG_PRIMARY (1 << 1)
@@ -80,6 +93,60 @@
#define ARES_OPT_SERVERS (1 << 6)
#define ARES_OPT_DOMAINS (1 << 7)
#define ARES_OPT_LOOKUPS (1 << 8)
#define ARES_OPT_SOCK_STATE_CB (1 << 9)
/* Nameinfo flag values */
#define ARES_NI_NOFQDN (1 << 0)
#define ARES_NI_NUMERICHOST (1 << 1)
#define ARES_NI_NAMEREQD (1 << 2)
#define ARES_NI_NUMERICSERV (1 << 3)
#define ARES_NI_DGRAM (1 << 4)
#define ARES_NI_TCP 0
#define ARES_NI_UDP ARES_NI_DGRAM
#define ARES_NI_SCTP (1 << 5)
#define ARES_NI_DCCP (1 << 6)
#define ARES_NI_NUMERICSCOPE (1 << 7)
#define ARES_NI_LOOKUPHOST (1 << 8)
#define ARES_NI_LOOKUPSERVICE (1 << 9)
/* Reserved for future use */
#define ARES_NI_IDN (1 << 10)
#define ARES_NI_IDN_ALLOW_UNASSIGNED (1 << 11)
#define ARES_NI_IDN_USE_STD3_ASCII_RULES (1 << 12)
/* Addrinfo flag values */
#define ARES_AI_CANONNAME (1 << 0)
#define ARES_AI_NUMERICHOST (1 << 1)
#define ARES_AI_PASSIVE (1 << 2)
#define ARES_AI_NUMERICSERV (1 << 3)
#define ARES_AI_V4MAPPED (1 << 4)
#define ARES_AI_ALL (1 << 5)
#define ARES_AI_ADDRCONFIG (1 << 6)
/* Reserved for future use */
#define ARES_AI_IDN (1 << 10)
#define ARES_AI_IDN_ALLOW_UNASSIGNED (1 << 11)
#define ARES_AI_IDN_USE_STD3_ASCII_RULES (1 << 12)
#define ARES_AI_CANONIDN (1 << 13)
#define ARES_AI_MASK (ARES_AI_CANONNAME|ARES_AI_NUMERICHOST|ARES_AI_PASSIVE| \
ARES_AI_NUMERICSERV|ARES_AI_V4MAPPED|ARES_AI_ALL| \
ARES_AI_ADDRCONFIG)
#define ARES_GETSOCK_MAXNUM 16 /* ares_getsock() can return info about this
many sockets */
#define ARES_GETSOCK_READABLE(bits,num) (bits & (1<< (num)))
#define ARES_GETSOCK_WRITABLE(bits,num) (bits & (1 << ((num) + \
ARES_GETSOCK_MAXNUM)))
#ifdef WIN32
typedef void (*ares_sock_state_cb)(void *data,
SOCKET socket,
int readable,
int writable);
#else
typedef void (*ares_sock_state_cb)(void *data,
int socket,
int readable,
int writable);
#endif
struct ares_options {
int flags;
@@ -93,16 +160,21 @@ struct ares_options {
char **domains;
int ndomains;
char *lookups;
ares_sock_state_cb sock_state_cb;
void *sock_state_cb_data;
};
struct hostent;
struct timeval;
struct sockaddr;
struct ares_channeldata;
typedef struct ares_channeldata *ares_channel;
typedef void (*ares_callback)(void *arg, int status, unsigned char *abuf,
int alen);
typedef void (*ares_host_callback)(void *arg, int status,
struct hostent *hostent);
typedef void (*ares_nameinfo_callback)(void *arg, int status,
char *node, char *service);
int ares_init(ares_channel *channelptr);
int ares_init_options(ares_channel *channelptr, struct ares_options *options,
@@ -119,8 +191,12 @@ void ares_gethostbyname(ares_channel channel, const char *name, int family,
ares_host_callback callback, void *arg);
void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
int family, ares_host_callback callback, void *arg);
void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
socklen_t salen, int flags,
ares_nameinfo_callback callback,
void *arg);
int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds);
int ares_getsock(ares_channel channel, int *socks, int numsocks);
struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv,
struct timeval *tv);
void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds);
@@ -133,11 +209,18 @@ int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf,
int alen, unsigned char **s, long *enclen);
int ares_parse_a_reply(const unsigned char *abuf, int alen,
struct hostent **host);
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
struct hostent **host);
int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
int addrlen, int family, struct hostent **host);
int ares_parse_ns_reply(const unsigned char *abuf, int alen,
struct hostent **host);
void ares_free_string(void *str);
void ares_free_hostent(struct hostent *host);
const char *ares_strerror(int code);
void ares_free_errmem(char *mem);
#ifdef __cplusplus
}
#endif
#endif /* ARES__H */

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -23,7 +25,7 @@
#include "ares.h"
#include "ares_private.h"
void ares__close_sockets(struct server_state *server)
void ares__close_sockets(ares_channel channel, struct server_state *server)
{
struct send_request *sendreq;
@@ -46,11 +48,13 @@ void ares__close_sockets(struct server_state *server)
/* Close the TCP and UDP sockets. */
if (server->tcp_socket != ARES_SOCKET_BAD)
{
SOCK_STATE_CALLBACK(channel, server->tcp_socket, 0, 0);
closesocket(server->tcp_socket);
server->tcp_socket = ARES_SOCKET_BAD;
}
if (server->udp_socket != ARES_SOCKET_BAD)
{
SOCK_STATE_CALLBACK(channel, server->udp_socket, 0, 0);
closesocket(server->udp_socket);
server->udp_socket = ARES_SOCKET_BAD;
}

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#if !defined(WIN32) || defined(WATT32)
#include <sys/socket.h>
@@ -30,12 +31,15 @@
#include "ares.h"
#include "ares_private.h"
#include "inet_net_pton.h"
int ares__get_hostent(FILE *fp, struct hostent **host)
int ares__get_hostent(FILE *fp, int family, struct hostent **host)
{
char *line = NULL, *p, *q, *canonical, **alias;
int status, linesize, end_at_hostname, naliases;
struct in_addr addr;
struct in6_addr addr6;
int addrlen = sizeof(struct in_addr);
struct hostent *hostent = NULL;
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
@@ -49,23 +53,34 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
/* Get the address part. */
p = line;
while (*p && !isspace((unsigned char)*p))
while (*p && !ISSPACE(*p))
p++;
if (!*p)
continue;
*p = 0;
addr.s_addr = inet_addr(line);
if (addr.s_addr == INADDR_NONE)
{
if (ares_inet_pton(AF_INET6, line, &addr6) > 0)
{
if (family != AF_INET6)
continue;
addrlen = sizeof(struct in6_addr);
}
else
continue;
}
else if (family != AF_INET)
continue;
/* Get the canonical hostname. */
p++;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
if (!*p)
continue;
q = p;
while (*q && !isspace((unsigned char)*q))
while (*q && !ISSPACE(*q))
q++;
end_at_hostname = (*q == 0);
*q = 0;
@@ -76,13 +91,13 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
{
/* Count the aliases. */
p = q + 1;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
while (*p)
{
while (*p && !isspace((unsigned char)*p))
while (*p && !ISSPACE(*p))
p++;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
naliases++;
}
@@ -100,7 +115,7 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
hostent->h_addr_list = malloc(2 * sizeof(char *));
if (!hostent->h_addr_list)
break;
hostent->h_addr_list[0] = malloc(sizeof(struct in_addr));
hostent->h_addr_list[0] = malloc(addrlen);
if (!hostent->h_addr_list[0])
break;
hostent->h_aliases = malloc((naliases + 1) * sizeof(char *));
@@ -112,12 +127,12 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
if (!end_at_hostname)
{
p = canonical + strlen(canonical) + 1;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
while (*p)
{
q = p;
while (*q && !isspace((unsigned char)*q))
while (*q && !ISSPACE(*q))
q++;
hostent->h_aliases[naliases] = malloc(q - p + 1);
if (hostent->h_aliases[naliases] == NULL)
@@ -125,7 +140,7 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
memcpy(hostent->h_aliases[naliases], p, q - p);
hostent->h_aliases[naliases][q - p] = 0;
p = q;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
naliases++;
}
@@ -134,9 +149,12 @@ int ares__get_hostent(FILE *fp, struct hostent **host)
}
hostent->h_aliases[naliases] = NULL;
hostent->h_addrtype = AF_INET;
hostent->h_length = sizeof(struct in_addr);
memcpy(hostent->h_addr_list[0], &addr, sizeof(struct in_addr));
hostent->h_addrtype = family;
hostent->h_length = addrlen;
if (family == AF_INET)
memcpy(hostent->h_addr_list[0], &addr, addrlen);
else if (family == AF_INET6)
memcpy(hostent->h_addr_list[0], &addr6, addrlen);
hostent->h_addr_list[1] = NULL;
*host = hostent;
free(line);

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -50,7 +52,7 @@ int ares__read_line(FILE *fp, char **buf, int *bufsize)
if ((*buf)[len - 1] == '\n')
{
(*buf)[len - 1] = 0;
return ARES_SUCCESS;
break;
}
offset = len;
@@ -61,4 +63,5 @@ int ares__read_line(FILE *fp, char **buf, int *bufsize)
*buf = newbuf;
*bufsize *= 2;
}
return ARES_SUCCESS;
}

View File

@@ -33,5 +33,7 @@ might have been stored in their arguments.
.SH SEE ALSO
.BR ares_init (3)
.BR ares_destroy (3)
.SH NOTES
This function was added in c-ares 1.2.0
.SH AUTHOR
Dirk Manske

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright (C) 2004 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
@@ -37,7 +39,10 @@ void ares_cancel(ares_channel channel)
channel->queries = NULL;
if (!(channel->flags & ARES_FLAG_STAYOPEN))
{
for (i = 0; i < channel->nservers; i++)
ares__close_sockets(&channel->servers[i]);
if (channel->servers)
{
for (i = 0; i < channel->nservers; i++)
ares__close_sockets(channel, &channel->servers[i]);
}
}
}

View File

@@ -14,14 +14,14 @@
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_DESTROY 3 "23 July 1998"
.TH ARES_DESTROY 3 "7 December 2004"
.SH NAME
ares_destroy \- Destroy a resolver channel
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B int ares_destroy(ares_channel \fIchannel\fP)
.B void ares_destroy(ares_channel \fIchannel\fP)
.fi
.SH DESCRIPTION
The

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -23,23 +25,37 @@ void ares_destroy(ares_channel channel)
int i;
struct query *query;
for (i = 0; i < channel->nservers; i++)
ares__close_sockets(&channel->servers[i]);
free(channel->servers);
for (i = 0; i < channel->ndomains; i++)
free(channel->domains[i]);
free(channel->domains);
if (!channel)
return;
if (channel->servers) {
for (i = 0; i < channel->nservers; i++)
ares__close_sockets(channel, &channel->servers[i]);
free(channel->servers);
}
if (channel->domains) {
for (i = 0; i < channel->ndomains; i++)
free(channel->domains[i]);
free(channel->domains);
}
if(channel->sortlist)
free(channel->sortlist);
free(channel->lookups);
while (channel->queries)
{
query = channel->queries;
channel->queries = query->next;
query->callback(query->arg, ARES_EDESTRUCTION, NULL, 0);
if (channel->lookups)
free(channel->lookups);
while (channel->queries) {
query = channel->queries;
channel->queries = query->next;
query->callback(query->arg, ARES_EDESTRUCTION, NULL, 0);
if (query->tcpbuf)
free(query->tcpbuf);
if (query->skip_server)
free(query->skip_server);
free(query);
}
free(query);
}
free(channel);
}

View File

@@ -21,12 +21,22 @@
#define DNS__16BIT(p) (((p)[0] << 8) | (p)[1])
#define DNS__32BIT(p) (((p)[0] << 24) | ((p)[1] << 16) | \
((p)[2] << 8) | (p)[3])
#define DNS__SET16BIT(p, v) (((p)[0] = ((v) >> 8) & 0xff), \
((p)[1] = (v) & 0xff))
#define DNS__SET32BIT(p, v) (((p)[0] = ((v) >> 24) & 0xff), \
((p)[1] = ((v) >> 16) & 0xff), \
((p)[2] = ((v) >> 8) & 0xff), \
((p)[3] = (v) & 0xff))
#define DNS__SET16BIT(p, v) (((p)[0] = (unsigned char)(((v) >> 8) & 0xff)), \
((p)[1] = (unsigned char)((v) & 0xff)))
#define DNS__SET32BIT(p, v) (((p)[0] = (unsigned char)(((v) >> 24) & 0xff)), \
((p)[1] = (unsigned char)(((v) >> 16) & 0xff)), \
((p)[2] = (unsigned char)(((v) >> 8) & 0xff)), \
((p)[3] = (unsigned char)((v) & 0xff)))
#if 0
/* we cannot use this approach on systems where we can't access 16/32 bit
data on un-aligned addresses */
#define DNS__16BIT(p) ntohs(*(unsigned short*)(p))
#define DNS__32BIT(p) ntohl(*(unsigned long*)(p))
#define DNS__SET16BIT(p, v) *(unsigned short*)(p) = htons(v)
#define DNS__SET32BIT(p, v) *(unsigned long*)(p) = htonl(v)
#endif
/* Macros for parsing a DNS header */
#define DNS_HEADER_QID(h) DNS__16BIT(h)
@@ -44,19 +54,19 @@
#define DNS_HEADER_ARCOUNT(h) DNS__16BIT((h) + 10)
/* Macros for constructing a DNS header */
#define DNS_HEADER_SET_QID(h, v) DNS__SET16BIT(h, v)
#define DNS_HEADER_SET_QR(h, v) ((h)[2] |= (((v) & 0x1) << 7))
#define DNS_HEADER_SET_OPCODE(h, v) ((h)[2] |= (((v) & 0xf) << 3))
#define DNS_HEADER_SET_AA(h, v) ((h)[2] |= (((v) & 0x1) << 2))
#define DNS_HEADER_SET_TC(h, v) ((h)[2] |= (((v) & 0x1) << 1))
#define DNS_HEADER_SET_RD(h, v) ((h)[2] |= (((v) & 0x1)))
#define DNS_HEADER_SET_RA(h, v) ((h)[3] |= (((v) & 0x1) << 7))
#define DNS_HEADER_SET_Z(h, v) ((h)[3] |= (((v) & 0x7) << 4))
#define DNS_HEADER_SET_RCODE(h, v) ((h)[3] |= (((v) & 0xf)))
#define DNS_HEADER_SET_QDCOUNT(h, v) DNS__SET16BIT((h) + 4, v)
#define DNS_HEADER_SET_ANCOUNT(h, v) DNS__SET16BIT((h) + 6, v)
#define DNS_HEADER_SET_NSCOUNT(h, v) DNS__SET16BIT((h) + 8, v)
#define DNS_HEADER_SET_ARCOUNT(h, v) DNS__SET16BIT((h) + 10, v)
#define DNS_HEADER_SET_QID(h, v) DNS__SET16BIT(h, v)
#define DNS_HEADER_SET_QR(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 7))
#define DNS_HEADER_SET_OPCODE(h, v) ((h)[2] |= (unsigned char)(((v) & 0xf) << 3))
#define DNS_HEADER_SET_AA(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 2))
#define DNS_HEADER_SET_TC(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 1))
#define DNS_HEADER_SET_RD(h, v) ((h)[2] |= (unsigned char)((v) & 0x1))
#define DNS_HEADER_SET_RA(h, v) ((h)[3] |= (unsigned char)(((v) & 0x1) << 7))
#define DNS_HEADER_SET_Z(h, v) ((h)[3] |= (unsigned char)(((v) & 0x7) << 4))
#define DNS_HEADER_SET_RCODE(h, v) ((h)[3] |= (unsigned char)((v) & 0xf))
#define DNS_HEADER_SET_QDCOUNT(h, v) DNS__SET16BIT((h) + 4, v)
#define DNS_HEADER_SET_ANCOUNT(h, v) DNS__SET16BIT((h) + 6, v)
#define DNS_HEADER_SET_NSCOUNT(h, v) DNS__SET16BIT((h) + 8, v)
#define DNS_HEADER_SET_ARCOUNT(h, v) DNS__SET16BIT((h) + 10, v)
/* Macros for parsing the fixed part of a DNS question */
#define DNS_QUESTION_TYPE(q) DNS__16BIT(q)

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,13 +16,15 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdlib.h>
@@ -103,6 +107,8 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
/* Nuke the trailing period if we wrote one. */
if (q > *s)
*(q - 1) = 0;
else
*q = 0; /* zero terminate */
return ARES_SUCCESS;
}

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
@@ -26,7 +27,8 @@
int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
{
struct server_state *server;
int i, nfds;
ares_socket_t nfds;
int i;
/* No queries, no file descriptors. */
if (!channel->queries)
@@ -43,13 +45,13 @@ int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
nfds = server->udp_socket + 1;
}
if (server->tcp_socket != ARES_SOCKET_BAD)
{
FD_SET(server->tcp_socket, read_fds);
if (server->qhead)
FD_SET(server->tcp_socket, write_fds);
if (server->tcp_socket >= nfds)
nfds = server->tcp_socket + 1;
}
{
FD_SET(server->tcp_socket, read_fds);
if (server->qhead)
FD_SET(server->tcp_socket, write_fds);
if (server->tcp_socket >= nfds)
nfds = server->tcp_socket + 1;
}
}
return nfds;
return (int)nfds;
}

View File

@@ -28,8 +28,8 @@ The
.I ares_free_hostent
function frees a
.B struct hostent
allocated by one of the functions \fIares_parse_a_reply(3)\fP or
\fIares_parse_ptr_reply(3)\fP.
allocated by one of the functions \fIares_parse_a_reply(3)\fP,
\fIares_parse_aaaa_reply(3)\fP, or \fIares_parse_ptr_reply(3)\fP.
.SH NOTES
It is not necessary (and is not correct) to free the host structure passed to
the callback functions for \fIares_gethostbyname(3)\fP or
@@ -37,6 +37,7 @@ the callback functions for \fIares_gethostbyname(3)\fP or
host structures when the callback returns.
.SH SEE ALSO
.BR ares_parse_a_reply (3),
.BR ares_parse_aaaa_reply (3),
.BR ares_parse_ptr_reply (3)
.SH AUTHOR
Greg Hudson, MIT Information Systems

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -27,7 +29,7 @@ void ares_free_hostent(struct hostent *host)
{
char **p;
free(host->h_name);
free((char *)(host->h_name));
for (p = host->h_aliases; *p; p++)
free(*p);
free(host->h_aliases);

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 2000 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -16,6 +18,7 @@
#include "setup.h"
#include <stdlib.h>
#include "ares.h"
#include "ares_private.h"
void ares_free_string(void *str)
{

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -12,9 +14,7 @@
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
@@ -23,6 +23,9 @@
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdio.h>
@@ -31,6 +34,7 @@
#include "ares.h"
#include "ares_private.h"
#include "inet_net_pton.h"
#ifdef WATT32
#undef WIN32
@@ -39,7 +43,8 @@
struct addr_query {
/* Arguments passed to ares_gethostbyaddr() */
ares_channel channel;
struct in_addr addr;
union ares_addr addr;
int family;
ares_host_callback callback;
void *arg;
@@ -51,14 +56,21 @@ static void addr_callback(void *arg, int status, unsigned char *abuf,
int alen);
static void end_aquery(struct addr_query *aquery, int status,
struct hostent *host);
static int file_lookup(struct in_addr *addr, struct hostent **host);
static int file_lookup(union ares_addr *addr, int family, struct hostent **host);
void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
int family, ares_host_callback callback, void *arg)
{
struct addr_query *aquery;
if (family != AF_INET || addrlen != sizeof(struct in_addr))
if (family != AF_INET && family != AF_INET6)
{
callback(arg, ARES_ENOTIMP, NULL);
return;
}
if ((family == AF_INET && addrlen != sizeof(struct in_addr)) ||
(family == AF_INET6 && addrlen != sizeof(struct in6_addr)))
{
callback(arg, ARES_ENOTIMP, NULL);
return;
@@ -71,7 +83,11 @@ void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
return;
}
aquery->channel = channel;
memcpy(&aquery->addr, addr, sizeof(aquery->addr));
if (family == AF_INET)
memcpy(&aquery->addr.addr4, addr, sizeof(struct in_addr));
else
memcpy(&aquery->addr.addr6, addr, sizeof(struct in6_addr));
aquery->family = family;
aquery->callback = callback;
aquery->arg = arg;
aquery->remaining_lookups = channel->lookups;
@@ -82,7 +98,7 @@ void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
static void next_lookup(struct addr_query *aquery)
{
const char *p;
char name[64];
char name[128];
int a1, a2, a3, a4, status;
struct hostent *host;
unsigned long addr;
@@ -92,18 +108,38 @@ static void next_lookup(struct addr_query *aquery)
switch (*p)
{
case 'b':
addr = ntohl(aquery->addr.s_addr);
a1 = (int)((addr >> 24) & 0xff);
a2 = (int)((addr >> 16) & 0xff);
a3 = (int)((addr >> 8) & 0xff);
a4 = (int)(addr & 0xff);
sprintf(name, "%d.%d.%d.%d.in-addr.arpa", a4, a3, a2, a1);
aquery->remaining_lookups = p + 1;
ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback,
aquery);
if (aquery->family == AF_INET)
{
addr = ntohl(aquery->addr.addr4.s_addr);
a1 = (int)((addr >> 24) & 0xff);
a2 = (int)((addr >> 16) & 0xff);
a3 = (int)((addr >> 8) & 0xff);
a4 = (int)(addr & 0xff);
sprintf(name, "%d.%d.%d.%d.in-addr.arpa", a4, a3, a2, a1);
aquery->remaining_lookups = p + 1;
ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback,
aquery);
}
else
{
unsigned char *bytes;
bytes = (unsigned char *)&aquery->addr.addr6.s6_addr;
sprintf(name, "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.ip6.arpa",
bytes[15]&0xf, bytes[15] >> 4, bytes[14]&0xf, bytes[14] >> 4,
bytes[13]&0xf, bytes[13] >> 4, bytes[12]&0xf, bytes[12] >> 4,
bytes[11]&0xf, bytes[11] >> 4, bytes[10]&0xf, bytes[10] >> 4,
bytes[9]&0xf, bytes[9] >> 4, bytes[8]&0xf, bytes[8] >> 4,
bytes[7]&0xf, bytes[7] >> 4, bytes[6]&0xf, bytes[6] >> 4,
bytes[5]&0xf, bytes[5] >> 4, bytes[4]&0xf, bytes[4] >> 4,
bytes[3]&0xf, bytes[3] >> 4, bytes[2]&0xf, bytes[2] >> 4,
bytes[1]&0xf, bytes[1] >> 4, bytes[0]&0xf, bytes[0] >> 4);
aquery->remaining_lookups = p + 1;
ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback,
aquery);
}
return;
case 'f':
status = file_lookup(&aquery->addr, &host);
status = file_lookup(&aquery->addr, aquery->family, &host);
if (status != ARES_ENOTFOUND)
{
end_aquery(aquery, status, host);
@@ -122,8 +158,12 @@ static void addr_callback(void *arg, int status, unsigned char *abuf, int alen)
if (status == ARES_SUCCESS)
{
status = ares_parse_ptr_reply(abuf, alen, &aquery->addr,
sizeof(struct in_addr), AF_INET, &host);
if (aquery->family == AF_INET)
status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addr4,
sizeof(struct in_addr), AF_INET, &host);
else
status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addr6,
sizeof(struct in6_addr), AF_INET6, &host);
end_aquery(aquery, status, host);
}
else if (status == ARES_EDESTRUCTION)
@@ -141,27 +181,27 @@ static void end_aquery(struct addr_query *aquery, int status,
free(aquery);
}
static int file_lookup(struct in_addr *addr, struct hostent **host)
static int file_lookup(union ares_addr *addr, int family, struct hostent **host)
{
FILE *fp;
int status;
int error;
#ifdef WIN32
char PATH_HOSTS[MAX_PATH];
if (IsNT) {
char tmp[MAX_PATH];
HKEY hkeyHosts;
if (IS_NT()) {
char tmp[MAX_PATH];
HKEY hkeyHosts;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts)
== ERROR_SUCCESS)
{
DWORD dwLength = MAX_PATH;
RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, tmp,
&dwLength);
ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH);
RegCloseKey(hkeyHosts);
}
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts)
== ERROR_SUCCESS)
{
DWORD dwLength = MAX_PATH;
RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp,
&dwLength);
ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH);
RegCloseKey(hkeyHosts);
}
}
else
GetWindowsDirectory(PATH_HOSTS, MAX_PATH);
@@ -178,12 +218,39 @@ static int file_lookup(struct in_addr *addr, struct hostent **host)
fp = fopen(PATH_HOSTS, "r");
if (!fp)
return ARES_ENOTFOUND;
while ((status = ares__get_hostent(fp, host)) == ARES_SUCCESS)
{
if (memcmp((*host)->h_addr, addr, sizeof(struct in_addr)) == 0)
break;
error = ERRNO;
switch(error)
{
case ENOENT:
case ESRCH:
return ARES_ENOTFOUND;
default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n",
PATH_HOSTS));
*host = NULL;
return ARES_EFILE;
}
}
while ((status = ares__get_hostent(fp, family, host)) == ARES_SUCCESS)
{
if (family != (*host)->h_addrtype)
{
ares_free_hostent(*host);
continue;
}
if (family == AF_INET)
{
if (memcmp((*host)->h_addr, &addr->addr4, sizeof(struct in_addr)) == 0)
break;
}
else if (family == AF_INET6)
{
if (memcmp((*host)->h_addr, &addr->addr6, sizeof(struct in6_addr)) == 0)
break;
}
ares_free_hostent(*host);
}
fclose(fp);

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
@@ -23,8 +24,13 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#ifdef HAVE_ARPA_NAMESER_H
#include <arpa/nameser.h>
#endif
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdio.h>
#include <stdlib.h>
@@ -33,6 +39,8 @@
#include "ares.h"
#include "ares_private.h"
#include "inet_net_pton.h"
#include "bitncmp.h"
#ifdef WATT32
#undef WIN32
@@ -44,7 +52,7 @@ struct host_query {
char *name;
ares_host_callback callback;
void *arg;
int family;
const char *remaining_lookups;
};
@@ -53,13 +61,17 @@ static void host_callback(void *arg, int status, unsigned char *abuf,
int alen);
static void end_hquery(struct host_query *hquery, int status,
struct hostent *host);
static int fake_hostent(const char *name, ares_host_callback callback,
static int fake_hostent(const char *name, int family, ares_host_callback callback,
void *arg);
static int file_lookup(const char *name, struct hostent **host);
static int file_lookup(const char *name, int family, struct hostent **host);
static void sort_addresses(struct hostent *host, struct apattern *sortlist,
int nsort);
static void sort6_addresses(struct hostent *host, struct apattern *sortlist,
int nsort);
static int get_address_index(struct in_addr *addr, struct apattern *sortlist,
int nsort);
static int get6_address_index(struct in6_addr *addr, struct apattern *sortlist,
int nsort);
void ares_gethostbyname(ares_channel channel, const char *name, int family,
ares_host_callback callback, void *arg)
@@ -67,13 +79,13 @@ void ares_gethostbyname(ares_channel channel, const char *name, int family,
struct host_query *hquery;
/* Right now we only know how to look up Internet addresses. */
if (family != AF_INET)
if (family != AF_INET && family != AF_INET6)
{
callback(arg, ARES_ENOTIMP, NULL);
return;
}
if (fake_hostent(name, callback, arg))
if (fake_hostent(name, family, callback, arg))
return;
/* Allocate and fill in the host query structure. */
@@ -85,6 +97,7 @@ void ares_gethostbyname(ares_channel channel, const char *name, int family,
}
hquery->channel = channel;
hquery->name = strdup(name);
hquery->family = family;
if (!hquery->name)
{
free(hquery);
@@ -112,13 +125,17 @@ static void next_lookup(struct host_query *hquery)
case 'b':
/* DNS lookup */
hquery->remaining_lookups = p + 1;
ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
hquery);
if (hquery->family == AF_INET6)
ares_search(hquery->channel, hquery->name, C_IN, T_AAAA, host_callback,
hquery);
else
ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
hquery);
return;
case 'f':
/* Host file lookup */
status = file_lookup(hquery->name, &host);
status = file_lookup(hquery->name, hquery->family, &host);
if (status != ARES_ENOTFOUND)
{
end_hquery(hquery, status, host);
@@ -138,11 +155,27 @@ static void host_callback(void *arg, int status, unsigned char *abuf, int alen)
if (status == ARES_SUCCESS)
{
status = ares_parse_a_reply(abuf, alen, &host);
if (host && channel->nsort)
sort_addresses(host, channel->sortlist, channel->nsort);
if (hquery->family == AF_INET)
{
status = ares_parse_a_reply(abuf, alen, &host);
if (host && channel->nsort)
sort_addresses(host, channel->sortlist, channel->nsort);
}
else if (hquery->family == AF_INET6)
{
status = ares_parse_aaaa_reply(abuf, alen, &host);
if (host && channel->nsort)
sort6_addresses(host, channel->sortlist, channel->nsort);
}
end_hquery(hquery, status, host);
}
else if (status == ARES_ENODATA && hquery->family == AF_INET6)
{
/* There was no AAAA. Now lookup an A */
hquery->family = AF_INET;
ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
hquery);
}
else if (status == ARES_EDESTRUCTION)
end_hquery(hquery, status, NULL);
else
@@ -162,36 +195,34 @@ static void end_hquery(struct host_query *hquery, int status,
/* If the name looks like an IP address, fake up a host entry, end the
* query immediately, and return true. Otherwise return false.
*/
static int fake_hostent(const char *name, ares_host_callback callback,
static int fake_hostent(const char *name, int family, ares_host_callback callback,
void *arg)
{
struct in_addr addr;
struct hostent hostent;
const char *p;
char *aliases[1] = { NULL };
char *addrs[2];
int result = 0;
struct in_addr in;
struct in6_addr in6;
/* It only looks like an IP address if it's all numbers and dots. */
for (p = name; *p; p++)
{
if (!isdigit((unsigned char)*p) && *p != '.')
return 0;
}
if (family == AF_INET)
result = ((in.s_addr = inet_addr(name)) == INADDR_NONE ? 0 : 1);
else if (family == AF_INET6)
result = (ares_inet_pton(AF_INET6, name, &in6) < 1 ? 0 : 1);
/* It also only looks like an IP address if it's non-zero-length and
* doesn't end with a dot.
*/
if (p == name || *(p - 1) == '.')
if (!result)
return 0;
/* It looks like an IP address. Figure out what IP address it is. */
addr.s_addr = inet_addr(name);
if (addr.s_addr == INADDR_NONE)
if (family == AF_INET)
{
callback(arg, ARES_EBADNAME, NULL);
return 1;
hostent.h_length = sizeof(struct in_addr);
addrs[0] = (char *)&in;
}
else if (family == AF_INET6)
{
hostent.h_length = sizeof(struct in6_addr);
addrs[0] = (char *)&in6;
}
/* Duplicate the name, to avoid a constness violation. */
hostent.h_name = strdup(name);
if (!hostent.h_name)
@@ -201,39 +232,38 @@ static int fake_hostent(const char *name, ares_host_callback callback,
}
/* Fill in the rest of the host structure and terminate the query. */
addrs[0] = (char *) &addr;
addrs[1] = NULL;
hostent.h_aliases = aliases;
hostent.h_addrtype = AF_INET;
hostent.h_length = sizeof(struct in_addr);
hostent.h_addrtype = family;
hostent.h_addr_list = addrs;
callback(arg, ARES_SUCCESS, &hostent);
free(hostent.h_name);
free((char *)(hostent.h_name));
return 1;
}
static int file_lookup(const char *name, struct hostent **host)
static int file_lookup(const char *name, int family, struct hostent **host)
{
FILE *fp;
char **alias;
int status;
int error;
#ifdef WIN32
char PATH_HOSTS[MAX_PATH];
if (IsNT) {
char tmp[MAX_PATH];
HKEY hkeyHosts;
if (IS_NT()) {
char tmp[MAX_PATH];
HKEY hkeyHosts;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts)
== ERROR_SUCCESS)
{
DWORD dwLength = MAX_PATH;
RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, tmp,
&dwLength);
ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH);
RegCloseKey(hkeyHosts);
}
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts)
== ERROR_SUCCESS)
{
DWORD dwLength = MAX_PATH;
RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp,
&dwLength);
ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH);
RegCloseKey(hkeyHosts);
}
}
else
GetWindowsDirectory(PATH_HOSTS, MAX_PATH);
@@ -250,9 +280,23 @@ static int file_lookup(const char *name, struct hostent **host)
fp = fopen(PATH_HOSTS, "r");
if (!fp)
return ARES_ENOTFOUND;
while ((status = ares__get_hostent(fp, host)) == ARES_SUCCESS)
{
error = ERRNO;
switch(error)
{
case ENOENT:
case ESRCH:
return ARES_ENOTFOUND;
default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n",
PATH_HOSTS));
*host = NULL;
return ARES_EFILE;
}
}
while ((status = ares__get_hostent(fp, family, host)) == ARES_SUCCESS)
{
if (strcasecmp((*host)->h_name, name) == 0)
break;
@@ -310,8 +354,66 @@ static int get_address_index(struct in_addr *addr, struct apattern *sortlist,
for (i = 0; i < nsort; i++)
{
if ((addr->s_addr & sortlist[i].mask.s_addr) == sortlist[i].addr.s_addr)
break;
if (sortlist[i].family != AF_INET)
continue;
if (sortlist[i].type == PATTERN_MASK)
{
if ((addr->s_addr & sortlist[i].mask.addr.addr4.s_addr)
== sortlist[i].addr.addr4.s_addr)
break;
}
else
{
if (!ares_bitncmp(&addr->s_addr, &sortlist[i].addr.addr4.s_addr,
sortlist[i].mask.bits))
break;
}
}
return i;
}
static void sort6_addresses(struct hostent *host, struct apattern *sortlist,
int nsort)
{
struct in6_addr a1, a2;
int i1, i2, ind1, ind2;
/* This is a simple insertion sort, not optimized at all. i1 walks
* through the address list, with the loop invariant that everything
* to the left of i1 is sorted. In the loop body, the value at i1 is moved
* back through the list (via i2) until it is in sorted order.
*/
for (i1 = 0; host->h_addr_list[i1]; i1++)
{
memcpy(&a1, host->h_addr_list[i1], sizeof(struct in6_addr));
ind1 = get6_address_index(&a1, sortlist, nsort);
for (i2 = i1 - 1; i2 >= 0; i2--)
{
memcpy(&a2, host->h_addr_list[i2], sizeof(struct in6_addr));
ind2 = get6_address_index(&a2, sortlist, nsort);
if (ind2 <= ind1)
break;
memcpy(host->h_addr_list[i2 + 1], &a2, sizeof(struct in6_addr));
}
memcpy(host->h_addr_list[i2 + 1], &a1, sizeof(struct in6_addr));
}
}
/* Find the first entry in sortlist which matches addr. Return nsort
* if none of them match.
*/
static int get6_address_index(struct in6_addr *addr, struct apattern *sortlist,
int nsort)
{
int i;
for (i = 0; i < nsort; i++)
{
if (sortlist[i].family != AF_INET6)
continue;
if (!ares_bitncmp(&addr->s6_addr, &sortlist[i].addr.addr6.s6_addr, sortlist[i].mask.bits))
break;
}
return i;
}

145
ares/ares_getnameinfo.3 Normal file
View File

@@ -0,0 +1,145 @@
.\" $Id$
.\"
.\" Copyright 2005 by Dominick Meglio.
.\"
.\" Permission to use, copy, modify, and distribute this
.\" software and its documentation for any purpose and without
.\" fee is hereby granted, provided that the above copyright
.\" notice appear in all copies and that both that copyright
.\" notice and this permission notice appear in supporting
.\" documentation, and that the name of M.I.T. not be used in
.\" advertising or publicity pertaining to distribution of the
.\" software without specific, written prior permission.
.\" M.I.T. makes no representations about the suitability of
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_GETNAMEINFO 3 "16 May 2005"
.SH NAME
ares_getnameinfo \- Address-to-nodename translation in protocol-independent manner
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B typedef void (*ares_nameinfo_callback)(void *\fIarg\fP, int \fIstatus\fP,
.B char *\fInode\fP, char *\fIservice\fP)
.PP
.B void ares_getnameinfo(ares_channel \fIchannel\fP, const struct sockaddr *\fIsa\fP,
.B socklen_t \fIsalen\fP, int \fIflags\fP, ares_nameinfo_callback \fIcallback\fP,
.B void *\fIarg\fP)
.fi
.SH DESCRIPTION
The
.B ares_getnameinfo
function is defined for protocol-independent address translation. The function
is a combination of \fIares_gethostbyaddr(3)\fP and \fIgetservbyport(3)\fP. The function will
translate the address either by executing a host query on the name service channel
identified by
.IR channel
or it will attempt to resolve it locally if possible.
The parameters
.I sa
and
.I len
give the address as a sockaddr structure, and
.I flags
gives the options that the function will use. Valid flags are listed below:
.TP 19
.B ARES_NI_NOFQDN
Only the nodename portion of the FQDN is returned for local hosts.
.TP 19
.B ARES_NI_NUMERICHOST
The numeric form of the hostname is returned rather than the name.
.TP 19
.B ARES_NI_NAMEREQD
An error is returned if the hostname cannot be found in the DNS.
.TP 19
.B ARES_NI_NUMERICSERV
The numeric form of the service is returned rather than the name.
.TP 19
.B ARES_NI_TCP
The service name is to be looked up for the TCP protocol.
.TP 19
.B ARES_NI_UDP
The service name is to be looked up for the UDP protocol.
.TP 19
.B ARES_NI_SCTP
The service name is to be looked up for the SCTP protocol.
.TP 19
.B ARES_NI_DCCP
The service name is to be looked up for the DCCP protocol.
.TP 19
.B ARES_NI_NUMERICSCOPE
The numeric form of the scope ID is returned rather than the name.
.TP 19
.B ARES_NI_LOOKUPHOST
A hostname lookup is being requested.
.TP 19
.B ARES_NI_LOOKUPSERVICE
A service name lookup is being requested.
.PP
When the query
is complete or has
failed, the ares library will invoke \fIcallback\fP. Completion or failure of
the query may happen immediately, or may happen during a later call to
\fIares_process(3)\fP, \fIares_destroy(3)\fP or \fIares_cancel(3)\fP.
.PP
The callback argument
.I arg
is copied from the
.B ares_getnameinfo
argument
.IR arg .
The callback argument
.I status
indicates whether the query succeeded and, if not, how it failed. It
may have any of the following values:
.TP 19
.B ARES_SUCCESS
The host lookup completed successfully.
.TP 19
.B ARES_ENOTIMP
The ares library does not know how to look up addresses of type
.IR family .
.TP 19
.B ARES_ENOTFOUND
The address
.I addr
was not found.
.TP 19
.B ARES_ENOMEM
Memory was exhausted.
.TP 19
.B ARES_EDESTRUCTION
The name service channel
.I channel
is being destroyed; the query will not be completed.
.TP 19
.B ARES_EBADFLAGS
The
.I flags
parameter contains an illegal value.
.PP
On successful completion of the query, the callback argument
.I node
contains a string representing the hostname (assuming
.B ARES_NI_LOOKUPHOST
was specified). Additionally,
.I service
contains a string representing the service name (assuming
.B ARES_NI_LOOKUPSERVICE
was specified).
If the query did not complete successfully, or one of the values
was not requested,
.I node
or
.I service
will be
.BR NULL .
.SH SEE ALSO
.BR ares_process (3),
.BR ares_getaddrinfo (3)
.SH AUTHOR
Dominick Meglio
.br
Copyright 2005 by Dominick Meglio.

390
ares/ares_getnameinfo.c Normal file
View File

@@ -0,0 +1,390 @@
/* $Id$ */
/* Copyright 2005 by Dominick Meglio
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#include "setup.h"
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#ifdef HAVE_NET_IF_H
#include <net/if.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ares.h"
#include "ares_private.h"
#include "ares_ipv6.h"
#include "inet_ntop.h"
#ifdef WATT32
#undef WIN32
#endif
struct nameinfo_query {
ares_nameinfo_callback callback;
void *arg;
union {
struct sockaddr_in addr4;
struct sockaddr_in6 addr6;
} addr;
int family;
int flags;
};
#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
#define IPBUFSIZ 40+IF_NAMESIZE
#else
#define IPBUFSIZ 40
#endif
static void nameinfo_callback(void *arg, int status, struct hostent *host);
static char *lookup_service(unsigned short port, int flags,
char *buf, size_t buflen);
#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
static void append_scopeid(struct sockaddr_in6 *addr6, unsigned int scopeid,
char *buf, size_t buflen);
#endif
static char *ares_striendstr(const char *s1, const char *s2);
void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa, socklen_t salen,
int flags, ares_nameinfo_callback callback, void *arg)
{
struct sockaddr_in *addr = NULL;
struct sockaddr_in6 *addr6 = NULL;
struct nameinfo_query *niquery;
/* Verify the buffer size */
if (salen == sizeof(struct sockaddr_in))
addr = (struct sockaddr_in *)sa;
else if (salen == sizeof(struct sockaddr_in6))
addr6 = (struct sockaddr_in6 *)sa;
else
{
callback(arg, ARES_ENOTIMP, NULL, NULL);
return;
}
/* If neither, assume they want a host */
if (!(flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST))
flags |= ARES_NI_LOOKUPHOST;
/* All they want is a service, no need for DNS */
if ((flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST))
{
char buf[33], *service;
unsigned int port = 0;
if (salen == sizeof(struct sockaddr_in))
port = addr->sin_port;
else
port = addr6->sin6_port;
service = lookup_service((unsigned short)(port & 0xffff),
flags, buf, sizeof(buf));
callback(arg, ARES_SUCCESS, NULL, service);
return;
}
/* They want a host lookup */
if ((flags & ARES_NI_LOOKUPHOST))
{
/* A numeric host can be handled without DNS */
if ((flags & ARES_NI_NUMERICHOST))
{
unsigned int port = 0;
char ipbuf[IPBUFSIZ];
char srvbuf[33];
char *service = NULL;
ipbuf[0] = 0;
/* Specifying not to lookup a host, but then saying a host
* is required has to be illegal.
*/
if (flags & ARES_NI_NAMEREQD)
{
callback(arg, ARES_EBADFLAGS, NULL, NULL);
return;
}
if (salen == sizeof(struct sockaddr_in6))
{
ares_inet_ntop(AF_INET6, &addr6->sin6_addr, ipbuf, IPBUFSIZ);
port = addr6->sin6_port;
/* If the system supports scope IDs, use it */
#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
append_scopeid(addr6, flags, ipbuf, sizeof(ipbuf));
#endif
}
else
{
ares_inet_ntop(AF_INET, &addr->sin_addr, ipbuf, IPBUFSIZ);
port = addr->sin_port;
}
/* They also want a service */
if (flags & ARES_NI_LOOKUPSERVICE)
service = lookup_service((unsigned short)(port & 0xffff),
flags, srvbuf, sizeof(srvbuf));
callback(arg, ARES_SUCCESS, ipbuf, service);
return;
}
/* This is where a DNS lookup becomes necessary */
else
{
niquery = malloc(sizeof(struct nameinfo_query));
if (!niquery)
{
callback(arg, ARES_ENOMEM, NULL, NULL);
return;
}
niquery->callback = callback;
niquery->arg = arg;
niquery->flags = flags;
if (sa->sa_family == AF_INET)
{
niquery->family = AF_INET;
memcpy(&niquery->addr.addr4, addr, sizeof(addr));
ares_gethostbyaddr(channel, &addr->sin_addr, sizeof(struct in_addr), AF_INET,
nameinfo_callback, niquery);
}
else
{
niquery->family = AF_INET6;
memcpy(&niquery->addr.addr6, addr6, sizeof(addr6));
ares_gethostbyaddr(channel, &addr6->sin6_addr, sizeof(struct in6_addr), AF_INET6,
nameinfo_callback, niquery);
}
}
}
}
static void nameinfo_callback(void *arg, int status, struct hostent *host)
{
struct nameinfo_query *niquery = (struct nameinfo_query *) arg;
char srvbuf[33];
char *service = NULL;
if (status == ARES_SUCCESS)
{
/* They want a service too */
if (niquery->flags & ARES_NI_LOOKUPSERVICE)
{
if (niquery->family == AF_INET)
service = lookup_service(niquery->addr.addr4.sin_port,
niquery->flags, srvbuf, sizeof(srvbuf));
else
service = lookup_service(niquery->addr.addr6.sin6_port,
niquery->flags, srvbuf, sizeof(srvbuf));
}
/* NOFQDN means we have to strip off the domain name portion.
We do this by determining our own domain name, then searching the string
for this domain name and removing it.
*/
if (niquery->flags & ARES_NI_NOFQDN)
{
char buf[255];
char *domain;
gethostname(buf, 255);
if ((domain = strchr(buf, '.')))
{
char *end = ares_striendstr(host->h_name, domain);
if (end)
*end = 0;
}
}
niquery->callback(niquery->arg, ARES_SUCCESS, (char *)(host->h_name),
service);
return;
}
/* We couldn't find the host, but it's OK, we can use the IP */
else if (status == ARES_ENOTFOUND && !(niquery->flags & ARES_NI_NAMEREQD))
{
char ipbuf[IPBUFSIZ];
if (niquery->family == AF_INET)
ares_inet_ntop(AF_INET, &niquery->addr.addr4.sin_addr, ipbuf, IPBUFSIZ);
else
{
ares_inet_ntop(AF_INET6, &niquery->addr.addr6.sin6_addr, ipbuf, IPBUFSIZ);
#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
append_scopeid(&niquery->addr.addr6, niquery->flags, ipbuf, sizeof(ipbuf));
#endif
}
/* They want a service too */
if (niquery->flags & ARES_NI_LOOKUPSERVICE)
{
if (niquery->family == AF_INET)
service = lookup_service(niquery->addr.addr4.sin_port,
niquery->flags, srvbuf, sizeof(srvbuf));
else
service = lookup_service(niquery->addr.addr6.sin6_port,
niquery->flags, srvbuf, sizeof(srvbuf));
}
niquery->callback(niquery->arg, ARES_SUCCESS, ipbuf, service);
return;
}
niquery->callback(niquery->arg, status, NULL, NULL);
free(niquery);
}
static char *lookup_service(unsigned short port, int flags,
char *buf, size_t buflen)
{
const char *proto;
struct servent *sep;
#ifdef HAVE_GETSERVBYPORT_R
struct servent se;
#endif
char tmpbuf[4096];
if (port)
{
if (flags & ARES_NI_NUMERICSERV)
sep = NULL;
else
{
if (flags & ARES_NI_UDP)
proto = "udp";
else if (flags & ARES_NI_SCTP)
proto = "sctp";
else if (flags & ARES_NI_DCCP)
proto = "dccp";
else
proto = "tcp";
#ifdef HAVE_GETSERVBYPORT_R
sep = &se;
memset(tmpbuf, 0, sizeof(tmpbuf));
#if GETSERVBYPORT_R_ARGS == 6
if (getservbyport_r(port, proto, &se, (void *)tmpbuf, sizeof(tmpbuf), &sep) != 0)
sep = NULL;
#elif GETSERVBYPORT_R_ARGS == 5
sep = getservbyport_r(port, proto, &se, (void *)tmpbuf, sizeof(tmpbuf));
#elif GETSERVBYPORT_R_ARGS == 4
if (getservbyport_r(port, proto, &se, (void *)tmpbuf) != 0)
sep = NULL;
#else
/* Lets just hope the OS uses TLS! */
sep = getservbyport(port, proto);
#endif
#else
/* Lets just hope the OS uses TLS! */
sep = getservbyport(port, proto);
#endif
}
if (sep && sep->s_name)
/* get service name */
strcpy(tmpbuf, sep->s_name);
else
/* get port as a string */
sprintf(tmpbuf, "%u", (unsigned int)ntohs(port));
if (strlen(tmpbuf) < buflen)
/* return it if buffer big enough */
strcpy(buf, tmpbuf);
else
/* avoid reusing previous one */
buf[0] = '\0';
return buf;
}
buf[0] = '\0';
return NULL;
}
#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
static void append_scopeid(struct sockaddr_in6 *addr6, unsigned int flags,
char *buf, size_t buflen)
{
#ifdef HAVE_IF_INDEXTONAME
int is_ll, is_mcll;
#endif
char fmt_u[] = "%u";
char fmt_lu[] = "%lu";
char tmpbuf[IF_NAMESIZE + 2];
size_t bufl;
char *fmt = (sizeof(addr6->sin6_scope_id) > sizeof(unsigned int))?fmt_lu:fmt_u;
tmpbuf[0] = '%';
#ifdef HAVE_IF_INDEXTONAME
is_ll = IN6_IS_ADDR_LINKLOCAL(&addr6->sin6_addr);
is_mcll = IN6_IS_ADDR_MC_LINKLOCAL(&addr6->sin6_addr);
if ((flags & ARES_NI_NUMERICSCOPE) ||
(!is_ll && !is_mcll))
{
sprintf(&tmpbuf[1], fmt, addr6->sin6_scope_id);
}
else
{
if (if_indextoname(addr6->sin6_scope_id, &tmpbuf[1]) == NULL)
sprintf(&tmpbuf[1], fmt, addr6->sin6_scope_id);
}
#else
sprintf(&tmpbuf[1], fmt, addr6->sin6_scope_id);
(void) flags;
#endif
tmpbuf[IF_NAMESIZE + 1] = '\0';
bufl = strlen(buf);
if(bufl + strlen(tmpbuf) < buflen)
/* only append the scopeid string if it fits in the target buffer */
strcpy(&buf[bufl], tmpbuf);
}
#endif
/* Determines if s1 ends with the string in s2 (case-insensitive) */
static char *ares_striendstr(const char *s1, const char *s2)
{
const char *c1, *c2, *c1_begin;
int lo1, lo2;
size_t s1_len = strlen(s1), s2_len = strlen(s2);
/* If the substr is longer than the full str, it can't match */
if (s2_len > s1_len)
return NULL;
/* Jump to the end of s1 minus the length of s2 */
c1_begin = s1+s1_len-s2_len;
c1 = (const char *)c1_begin;
c2 = s2;
while (c2 < s2+s2_len)
{
lo1 = tolower(*c1);
lo2 = tolower(*c2);
if (lo1 != lo2)
return NULL;
else
{
c1++;
c2++;
}
}
if (c2 == c1 && c2 == NULL)
return (char *)c1_begin;
return NULL;
}

58
ares/ares_getsock.3 Normal file
View File

@@ -0,0 +1,58 @@
.\" $Id$
.\"
.\" Copyright 1998 by Daniel Stenberg
.\"
.\" Permission to use, copy, modify, and distribute this
.\" software and its documentation for any purpose and without
.\" fee is hereby granted, provided that the above copyright
.\" notice appear in all copies and that both that copyright
.\" notice and this permission notice appear in supporting
.\" documentation, and that the name of M.I.T. not be used in
.\" advertising or publicity pertaining to distribution of the
.\" software without specific, written prior permission.
.\" M.I.T. makes no representations about the suitability of
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_GETSOCK 3 "22 December 2005"
.SH NAME
ares_getsock \- get file descriptors to wait on
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B int ares_getsock(ares_channel \fIchannel\fP, int *\fIsocks\fP,
.B int \fInumsocks\fP);
.fi
.SH DESCRIPTION
The
.B ares_getsock
function retrieves the set of file descriptors which the calling
application should wait on for reading and/or writing for the
processing of name service queries pending on the name service channel
identified by
.IR channel .
File descriptors will be set in the integer array pointed to by
\fIsocks\fP.
\fInumsocks\fP is the size of the given array in number of ints.
This function can only return information about up to 16 sockets. If more are
in use (however unlikely that is), they are simply not reported back.
.SH RETURN VALUES
\fBares_getsock\fP returns a bitmask for what actions to wait for on the
different sockets. The ares.h header file provides these convenience macros to
extract the information appropriately:
.nf
#define ARES_GETSOCK_MAXNUM 16 /* ares_getsock() can return info about
this many sockets */
#define ARES_GETSOCK_READABLE(bits,num) (bits & (1<< (num)))
#define ARES_GETSOCK_WRITABLE(bits,num) (bits & (1 << ((num) + \
ARES_GETSOCK_MAXNUM)))
.fi
.SH NOTES
This function was added in c-ares 1.3.1
.SH SEE ALSO
.BR ares_timeout (3),
.BR ares_fds (3),
.BR ares_process (3)

69
ares/ares_getsock.c Normal file
View File

@@ -0,0 +1,69 @@
/* $Id$ */
/* Copyright (C) 2005 - 2007, Daniel Stenberg
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. M.I.T. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#include "setup.h"
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include "ares.h"
#include "ares_private.h"
int ares_getsock(ares_channel channel,
int *s,
int numsocks) /* size of the 'socks' array */
{
struct server_state *server;
int i;
int sockindex=0;
int bitmap = 0;
unsigned int setbits = 0xffffffff;
ares_socket_t *socks = (ares_socket_t *)s;
/* No queries, no file descriptors. */
if (!channel->queries)
return 0;
for (i = 0;
(i < channel->nservers) && (sockindex < ARES_GETSOCK_MAXNUM);
i++)
{
server = &channel->servers[i];
if (server->udp_socket != ARES_SOCKET_BAD)
{
if(sockindex >= numsocks)
break;
socks[sockindex] = server->udp_socket;
bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex);
sockindex++;
}
if (server->tcp_socket != ARES_SOCKET_BAD)
{
if(sockindex >= numsocks)
break;
socks[sockindex] = server->tcp_socket;
bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex);
if (server->qhead)
/* then the tcp socket is also writable! */
bitmap |= ARES_GETSOCK_WRITABLE(setbits, sockindex);
sockindex++;
}
}
return bitmap;
}

View File

@@ -14,7 +14,7 @@
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_INIT 3 "21 July 1998"
.TH ARES_INIT 3 "7 December 2004"
.SH NAME
ares_init, ares_init_options \- Initialize a resolver channel
.SH SYNOPSIS
@@ -25,31 +25,20 @@ ares_init, ares_init_options \- Initialize a resolver channel
.B int ares_init_options(ares_channel *\fIchannel\fP,
.B struct ares_options *\fIoptions\fP, int \fIoptmask\fP)
.PP
.B cc file.c -lares
.B cc file.c -lcares
.fi
.SH DESCRIPTION
The
.B ares_init
function initializes a communications channel for name service
lookups. If it returns successfully,
.B ares_init
will set the variable pointed to by
.I channel
to a handle used to identify the name service channel. The caller
should invoke
The \fBares_init\fP function initializes a communications channel for name
service lookups. If it returns successfully, \fBares_init\fP will set the
variable pointed to by \fIchannel\fP to a handle used to identify the name
service channel. The caller should invoke
.BR ares_destroy (3)
on the handle when the channel is no longer needed.
.PP
The
.B ares_init_options
function also initializes a name service channel, with additional
options useful for applications requiring more control over name
service configuration. The
.I optmask
parameter specifies which fields in the structure pointed to by
.I options
are set, as follows:
.PP
The \fBares_init_options\fP function also initializes a name service channel,
with additional options useful for applications requiring more control over
name service configuration. The \fIoptmask\fP parameter specifies which fields
in the structure pointed to by \fIoptions\fP are set, as follows:
.TP 18
.B ARES_OPT_FLAGS
.B int \fIflags\fP;
@@ -109,6 +98,24 @@ The lookups to perform for host queries.
.I lookups
should be set to a string of the characters "b" or "f", where "b"
indicates a DNS lookup and "f" indicates a lookup in the hosts file.
.TP 18
.B ARES_OPT_SOCK_STATE_CB
.B void (*\fIsock_state_cb\fP)(void *data, int s, int read, int write);
.br
.B void *\fIsock_state_cb_data\fP;
.br
A callback function to be invoked when a socket changes state.
.I s
will be passed the socket whose state has changed;
.I read
will be set to true if the socket should listen for read events, and
.I write
will be set to true if the socket should listen for write events.
The value of
.I sock_state_cb_data
will be passed as the
.I data
argument.
.PP
The
.I flags
@@ -127,9 +134,11 @@ If a truncated response to a UDP query is received, do not fall back
to TCP; simply continue on with the truncated response.
.TP 23
.B ARES_FLAG_NORECURSE
Do not set the "recursion desired" bit on outgoing queries, so that
the name server being contacted will not try to fetch the answer from
other servers if it doesn't know the answer locally.
Do not set the "recursion desired" bit on outgoing queries, so that the name
server being contacted will not try to fetch the answer from other servers if
it doesn't know the answer locally. Be aware that ares will not do the
recursion for you. Recursion must be handled by the application calling ares
if \fIARES_FLAG_NORECURSE\fP is set.
.TP 23
.B ARES_FLAG_STAYOPEN
Do not close communciations sockets when the number of active queries

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
@@ -27,13 +28,23 @@
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_PROCESS_H
#include <process.h> /* Some have getpid() here */
#endif
#endif
#include <stdio.h>
@@ -44,6 +55,7 @@
#include <errno.h>
#include "ares.h"
#include "ares_private.h"
#include "inet_net_pton.h"
#ifdef WATT32
#undef WIN32 /* Redefined in MingW/MSVC headers */
@@ -54,19 +66,23 @@ static int init_by_options(ares_channel channel, struct ares_options *options,
static int init_by_environment(ares_channel channel);
static int init_by_resolv_conf(ares_channel channel);
static int init_by_defaults(ares_channel channel);
static int config_nameserver(struct server_state **servers, int *nservers,
char *str);
static int set_search(ares_channel channel, const char *str);
static int set_options(ares_channel channel, const char *str);
static const char *try_option(const char *p, const char *q, const char *opt);
#ifndef WIN32
static int sortlist_alloc(struct apattern **sortlist, int *nsort, struct apattern *pat);
static int ip_addr(const char *s, int len, struct in_addr *addr);
static void natural_mask(struct apattern *pat);
static int config_domain(ares_channel channel, char *str);
static int config_lookup(ares_channel channel, const char *str,
const char *bindch, const char *filech);
static int config_nameserver(struct server_state **servers, int *nservers,
char *str);
static int config_sortlist(struct apattern **sortlist, int *nsort,
const char *str);
static int set_search(ares_channel channel, const char *str);
static int set_options(ares_channel channel, const char *str);
static char *try_config(char *s, const char *opt);
static const char *try_option(const char *p, const char *q, const char *opt);
static int ip_addr(const char *s, int len, struct in_addr *addr);
static void natural_mask(struct apattern *pat);
#endif
int ares_init(ares_channel *channelptr)
{
@@ -77,13 +93,26 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
int optmask)
{
ares_channel channel;
int i, status;
int i;
int status = ARES_SUCCESS;
struct server_state *server;
struct timeval tv;
#ifdef CURLDEBUG
const char *env = getenv("CARES_MEMDEBUG");
if (env)
curl_memdebug(env);
env = getenv("CARES_MEMLIMIT");
if (env)
curl_memlimit(atoi(env));
#endif
channel = malloc(sizeof(struct ares_channeldata));
if (!channel)
if (!channel) {
*channelptr = NULL;
return ARES_ENOMEM;
}
/* Set everything to distinguished values so we know they haven't
* been set yet.
@@ -101,21 +130,42 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
channel->queries = NULL;
channel->domains = NULL;
channel->sortlist = NULL;
channel->servers = NULL;
channel->sock_state_cb = NULL;
channel->sock_state_cb_data = NULL;
/* Initialize configuration by each of the four sources, from highest
* precedence to lowest.
*/
if (status == ARES_SUCCESS) {
status = init_by_options(channel, options, optmask);
if (status == ARES_SUCCESS)
if (status != ARES_SUCCESS)
DEBUGF(fprintf(stderr, "Error: init_by_options failed: %s\n",
ares_strerror(status)));
}
if (status == ARES_SUCCESS) {
status = init_by_environment(channel);
if (status == ARES_SUCCESS)
if (status != ARES_SUCCESS)
DEBUGF(fprintf(stderr, "Error: init_by_environment failed: %s\n",
ares_strerror(status)));
}
if (status == ARES_SUCCESS) {
status = init_by_resolv_conf(channel);
if (status == ARES_SUCCESS)
if (status != ARES_SUCCESS)
DEBUGF(fprintf(stderr, "Error: init_by_resolv_conf failed: %s\n",
ares_strerror(status)));
}
if (status == ARES_SUCCESS) {
status = init_by_defaults(channel);
if (status != ARES_SUCCESS)
DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n",
ares_strerror(status)));
}
if (status != ARES_SUCCESS)
{
/* Something failed; clean up memory we may have allocated. */
if (channel->nservers != -1)
if (channel->servers)
free(channel->servers);
if (channel->domains)
{
@@ -154,7 +204,7 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
*/
gettimeofday(&tv, NULL);
channel->next_id = (unsigned short)
(tv.tv_sec ^ tv.tv_usec ^ getpid()) & 0xffff;
((tv.tv_sec ^ tv.tv_usec ^ getpid()) & 0xffff);
channel->queries = NULL;
@@ -180,16 +230,25 @@ static int init_by_options(ares_channel channel, struct ares_options *options,
channel->udp_port = options->udp_port;
if ((optmask & ARES_OPT_TCP_PORT) && channel->tcp_port == -1)
channel->tcp_port = options->tcp_port;
if ((optmask & ARES_OPT_SOCK_STATE_CB) && channel->sock_state_cb == NULL)
{
channel->sock_state_cb = options->sock_state_cb;
channel->sock_state_cb_data = options->sock_state_cb_data;
}
/* Copy the servers, if given. */
if ((optmask & ARES_OPT_SERVERS) && channel->nservers == -1)
{
channel->servers =
malloc(options->nservers * sizeof(struct server_state));
if (!channel->servers && options->nservers != 0)
return ARES_ENOMEM;
for (i = 0; i < options->nservers; i++)
channel->servers[i].addr = options->servers[i];
/* Avoid zero size allocations at any cost */
if (options->nservers > 0)
{
channel->servers =
malloc(options->nservers * sizeof(struct server_state));
if (!channel->servers)
return ARES_ENOMEM;
for (i = 0; i < options->nservers; i++)
channel->servers[i].addr = options->servers[i];
}
channel->nservers = options->nservers;
}
@@ -198,16 +257,20 @@ static int init_by_options(ares_channel channel, struct ares_options *options,
*/
if ((optmask & ARES_OPT_DOMAINS) && channel->ndomains == -1)
{
channel->domains = malloc(options->ndomains * sizeof(char *));
if (!channel->domains && options->ndomains != 0)
return ARES_ENOMEM;
for (i = 0; i < options->ndomains; i++)
{
channel->ndomains = i;
channel->domains[i] = strdup(options->domains[i]);
if (!channel->domains[i])
return ARES_ENOMEM;
}
/* Avoid zero size allocations at any cost */
if (options->ndomains > 0)
{
channel->domains = malloc(options->ndomains * sizeof(char *));
if (!channel->domains)
return ARES_ENOMEM;
for (i = 0; i < options->ndomains; i++)
{
channel->ndomains = i;
channel->domains[i] = strdup(options->domains[i]);
if (!channel->domains[i])
return ARES_ENOMEM;
}
}
channel->ndomains = options->ndomains;
}
@@ -264,7 +327,8 @@ static int get_res_nt(HKEY hKey, const char *subkey, char **obuf)
if (!*obuf)
return 0;
if (RegQueryValueEx(hKey, subkey, 0, NULL, *obuf, &size) != ERROR_SUCCESS)
if (RegQueryValueEx(hKey, subkey, 0, NULL,
(LPBYTE)*obuf, &size) != ERROR_SUCCESS)
{
free(*obuf);
return 0;
@@ -305,7 +369,8 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
{
FIXED_INFO *fi = alloca (sizeof(*fi));
DWORD size = sizeof (*fi);
DWORD (WINAPI *GetNetworkParams) (FIXED_INFO*, DWORD*); /* available only on Win-98/2000+ */
typedef DWORD (WINAPI* get_net_param_func) (FIXED_INFO*, DWORD*);
get_net_param_func GetNetworkParams; /* available only on Win-98/2000+ */
HMODULE handle;
IP_ADDR_STRING *ipAddr;
int i, count = 0;
@@ -313,6 +378,7 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
size_t ip_size = sizeof("255.255.255.255,")-1;
size_t left = ret_size;
char *ret = ret_buf;
HRESULT res;
if (!fi)
return (0);
@@ -321,11 +387,12 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
if (!handle)
return (0);
(void*)GetNetworkParams = GetProcAddress (handle, "GetNetworkParams");
GetNetworkParams = (get_net_param_func) GetProcAddress (handle, "GetNetworkParams");
if (!GetNetworkParams)
goto quit;
if ((*GetNetworkParams) (fi, &size) != ERROR_BUFFER_OVERFLOW)
res = (*GetNetworkParams) (fi, &size);
if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS))
goto quit;
fi = alloca (size);
@@ -339,7 +406,8 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
printf ("DNS Servers:\n"
" %s (primary)\n", fi->DnsServerList.IpAddress.String);
}
if (inet_addr(fi->DnsServerList.IpAddress.String) != INADDR_NONE &&
if (strlen(fi->DnsServerList.IpAddress.String) > 0 &&
inet_addr(fi->DnsServerList.IpAddress.String) != INADDR_NONE &&
left > ip_size)
{
ret += sprintf (ret, "%s,", fi->DnsServerList.IpAddress.String);
@@ -375,7 +443,7 @@ quit:
static int init_by_resolv_conf(ares_channel channel)
{
char *line = NULL;
int status, nservers = 0, nsort = 0;
int status = -1, nservers = 0, nsort = 0;
struct server_state *servers = NULL;
struct apattern *sortlist = NULL;
@@ -421,7 +489,7 @@ DhcpNameServer
goto okay;
}
if (IsNT)
if (IS_NT())
{
if (RegOpenKeyEx(
HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
@@ -488,7 +556,7 @@ DhcpNameServer
if (status == ARES_SUCCESS)
status = ARES_EOF;
#elif defined(riscos)
#elif defined(__riscos__)
/* Under RISC OS, name servers are listed in the
system variable Inet$Resolvers, space separated. */
@@ -505,7 +573,7 @@ DhcpNameServer
do {
space = strchr(pos, ' ');
if (space)
*space = 0;
*space = '\0';
status = config_nameserver(&servers, &nservers, pos);
if (status != ARES_SUCCESS)
break;
@@ -541,32 +609,47 @@ DhcpNameServer
char *p;
FILE *fp;
int linesize;
int error;
fp = fopen(PATH_RESOLV_CONF, "r");
if (!fp)
return (errno == ENOENT) ? ARES_SUCCESS : ARES_EFILE;
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
{
if ((p = try_config(line, "domain")))
status = config_domain(channel, p);
else if ((p = try_config(line, "lookup")) && !channel->lookups)
status = config_lookup(channel, p, "bind", "file");
else if ((p = try_config(line, "search")))
status = set_search(channel, p);
else if ((p = try_config(line, "nameserver")) && channel->nservers == -1)
status = config_nameserver(&servers, &nservers, p);
else if ((p = try_config(line, "sortlist")) && channel->nsort == -1)
status = config_sortlist(&sortlist, &nsort, p);
else if ((p = try_config(line, "options")))
status = set_options(channel, p);
else
status = ARES_SUCCESS;
if (status != ARES_SUCCESS)
break;
if (fp) {
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
{
if ((p = try_config(line, "domain")) && channel->ndomains == -1)
status = config_domain(channel, p);
else if ((p = try_config(line, "lookup")) && !channel->lookups)
status = config_lookup(channel, p, "bind", "file");
else if ((p = try_config(line, "search")) && channel->ndomains == -1)
status = set_search(channel, p);
else if ((p = try_config(line, "nameserver")) && channel->nservers == -1)
status = config_nameserver(&servers, &nservers, p);
else if ((p = try_config(line, "sortlist")) && channel->nsort == -1)
status = config_sortlist(&sortlist, &nsort, p);
else if ((p = try_config(line, "options")))
status = set_options(channel, p);
else
status = ARES_SUCCESS;
if (status != ARES_SUCCESS)
break;
}
fclose(fp);
}
else {
error = ERRNO;
switch(error) {
case ENOENT:
case ESRCH:
status = ARES_EOF;
break;
default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n", PATH_RESOLV_CONF));
status = ARES_EFILE;
}
}
fclose(fp);
if (!channel->lookups) {
if ((status == ARES_EOF) && (!channel->lookups)) {
/* Many systems (Solaris, Linux, BSD's) use nsswitch.conf */
fp = fopen("/etc/nsswitch.conf", "r");
if (fp) {
@@ -577,9 +660,23 @@ DhcpNameServer
}
fclose(fp);
}
else {
error = ERRNO;
switch(error) {
case ENOENT:
case ESRCH:
status = ARES_EOF;
break;
default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/nsswitch.conf"));
status = ARES_EFILE;
}
}
}
if (!channel->lookups) {
if ((status == ARES_EOF) && (!channel->lookups)) {
/* Linux / GNU libc 2.x and possibly others have host.conf */
fp = fopen("/etc/host.conf", "r");
if (fp) {
@@ -590,9 +687,23 @@ DhcpNameServer
}
fclose(fp);
}
else {
error = ERRNO;
switch(error) {
case ENOENT:
case ESRCH:
status = ARES_EOF;
break;
default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/host.conf"));
status = ARES_EFILE;
}
}
}
if (!channel->lookups) {
if ((status == ARES_EOF) && (!channel->lookups)) {
/* Tru64 uses /etc/svc.conf */
fp = fopen("/etc/svc.conf", "r");
if (fp) {
@@ -603,6 +714,20 @@ DhcpNameServer
}
fclose(fp);
}
else {
error = ERRNO;
switch(error) {
case ENOENT:
case ESRCH:
status = ARES_EOF;
break;
default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/svc.conf"));
status = ARES_EFILE;
}
}
}
if(line)
@@ -676,7 +801,6 @@ static int init_by_defaults(ares_channel channel)
if (gethostname(hostname, sizeof(hostname)) == -1
|| !strchr(hostname, '.'))
{
channel->domains = malloc(0);
channel->ndomains = 0;
}
else
@@ -708,15 +832,16 @@ static int init_by_defaults(ares_channel channel)
return ARES_SUCCESS;
}
#ifndef WIN32
static int config_domain(ares_channel channel, char *str)
{
char *q;
/* Set a single search domain. */
q = str;
while (*q && !isspace((unsigned char)*q))
while (*q && !ISSPACE(*q))
q++;
*q = 0;
*q = '\0';
return set_search(channel, str);
}
@@ -738,16 +863,18 @@ static int config_lookup(ares_channel channel, const char *str,
if (*p == *bindch) *l++ = 'b';
else *l++ = 'f';
}
while (*p && !isspace((unsigned char)*p) && (*p != ','))
while (*p && !ISSPACE(*p) && (*p != ','))
p++;
while (*p && (isspace((unsigned char)*p) || (*p == ',')))
while (*p && (ISSPACE(*p) || (*p == ',')))
p++;
}
*l = 0;
*l = '\0';
channel->lookups = strdup(lookups);
return (channel->lookups) ? ARES_SUCCESS : ARES_ENOMEM;
}
#endif
static int config_nameserver(struct server_state **servers, int *nservers,
char *str)
{
@@ -763,12 +890,12 @@ static int config_nameserver(struct server_state **servers, int *nservers,
while (more)
{
more = 0;
while (*p && !isspace(*p) && *p != ',')
while (*p && !ISSPACE(*p) && *p != ',')
p++;
if (*p)
{
*p = 0;
*p = '\0';
more = 1;
}
@@ -809,52 +936,88 @@ static int config_nameserver(struct server_state **servers, int *nservers,
return ARES_SUCCESS;
}
#ifndef WIN32
static int config_sortlist(struct apattern **sortlist, int *nsort,
const char *str)
{
struct apattern pat, *newsort;
struct apattern pat;
const char *q;
/* Add sortlist entries. */
while (*str && *str != ';')
{
int bits;
char ipbuf[16], ipbufpfx[32];
/* Find just the IP */
q = str;
while (*q && *q != '/' && *q != ';' && !isspace((unsigned char)*q))
while (*q && *q != '/' && *q != ';' && !ISSPACE(*q))
q++;
if (ip_addr(str, (int)(q - str), &pat.addr) == 0)
memcpy(ipbuf, str, (int)(q-str));
ipbuf[(int)(q-str)] = '\0';
/* Find the prefix */
if (*q == '/')
{
/* We have a pattern address; now determine the mask. */
if (*q == '/')
const char *str2 = q+1;
while (*q && *q != ';' && !ISSPACE(*q))
q++;
memcpy(ipbufpfx, str, (int)(q-str));
ipbufpfx[(int)(q-str)] = '\0';
str = str2;
}
else
ipbufpfx[0] = '\0';
/* Lets see if it is CIDR */
/* First we'll try IPv6 */
if ((bits = ares_inet_net_pton(AF_INET6, ipbufpfx ? ipbufpfx : ipbuf,
&pat.addr.addr6,
sizeof(pat.addr.addr6))) > 0)
{
pat.type = PATTERN_CIDR;
pat.mask.bits = (unsigned short)bits;
pat.family = AF_INET6;
if (!sortlist_alloc(sortlist, nsort, &pat))
return ARES_ENOMEM;
}
if (ipbufpfx &&
(bits = ares_inet_net_pton(AF_INET, ipbufpfx, &pat.addr.addr4,
sizeof(pat.addr.addr4))) > 0)
{
pat.type = PATTERN_CIDR;
pat.mask.bits = (unsigned short)bits;
pat.family = AF_INET;
if (!sortlist_alloc(sortlist, nsort, &pat))
return ARES_ENOMEM;
}
/* See if it is just a regular IP */
else if (ip_addr(ipbuf, (int)(q-str), &pat.addr.addr4) == 0)
{
if (ipbufpfx)
{
str = q + 1;
while (*q && *q != ';' && !isspace((unsigned char)*q))
q++;
if (ip_addr(str, (int)(q - str), &pat.mask) != 0)
memcpy(ipbuf, str, (int)(q-str));
ipbuf[(int)(q-str)] = '\0';
if (ip_addr(ipbuf, (int)(q - str), &pat.mask.addr.addr4) != 0)
natural_mask(&pat);
}
else
natural_mask(&pat);
/* Add this pattern to our list. */
newsort = realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern));
if (!newsort)
pat.family = AF_INET;
pat.type = PATTERN_MASK;
if (!sortlist_alloc(sortlist, nsort, &pat))
return ARES_ENOMEM;
newsort[*nsort] = pat;
*sortlist = newsort;
(*nsort)++;
}
else
{
while (*q && *q != ';' && !isspace((unsigned char)*q))
while (*q && *q != ';' && !ISSPACE(*q))
q++;
}
str = q;
while (isspace((unsigned char)*str))
while (ISSPACE(*str))
str++;
}
return ARES_SUCCESS;
}
#endif
static int set_search(ares_channel channel, const char *str)
{
@@ -866,6 +1029,7 @@ static int set_search(ares_channel channel, const char *str)
for(n=0; n < channel->ndomains; n++)
free(channel->domains[n]);
free(channel->domains);
channel->domains = NULL;
channel->ndomains = -1;
}
@@ -874,15 +1038,21 @@ static int set_search(ares_channel channel, const char *str)
p = str;
while (*p)
{
while (*p && !isspace((unsigned char)*p))
while (*p && !ISSPACE(*p))
p++;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
n++;
}
if (!n)
{
channel->ndomains = 0;
return ARES_SUCCESS;
}
channel->domains = malloc(n * sizeof(char *));
if (!channel->domains && n)
if (!channel->domains)
return ARES_ENOMEM;
/* Now copy the domains. */
@@ -892,7 +1062,7 @@ static int set_search(ares_channel channel, const char *str)
{
channel->ndomains = n;
q = p;
while (*q && !isspace((unsigned char)*q))
while (*q && !ISSPACE(*q))
q++;
channel->domains[n] = malloc(q - p + 1);
if (!channel->domains[n])
@@ -900,7 +1070,7 @@ static int set_search(ares_channel channel, const char *str)
memcpy(channel->domains[n], p, q - p);
channel->domains[n][q - p] = 0;
p = q;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
n++;
}
@@ -917,7 +1087,7 @@ static int set_options(ares_channel channel, const char *str)
while (*p)
{
q = p;
while (*q && !isspace((unsigned char)*q))
while (*q && !ISSPACE(*q))
q++;
val = try_option(p, q, "ndots:");
if (val && channel->ndots == -1)
@@ -929,41 +1099,55 @@ static int set_options(ares_channel channel, const char *str)
if (val && channel->tries == -1)
channel->tries = atoi(val);
p = q;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
}
return ARES_SUCCESS;
}
#ifndef WIN32
static char *try_config(char *s, const char *opt)
{
size_t len;
len = strlen(opt);
if (strncmp(s, opt, len) != 0 || !isspace((unsigned char)s[len]))
if (strncmp(s, opt, len) != 0 || !ISSPACE(s[len]))
return NULL;
s += len;
while (isspace((unsigned char)*s))
while (ISSPACE(*s))
s++;
return s;
}
#endif
static const char *try_option(const char *p, const char *q, const char *opt)
{
size_t len = strlen(opt);
return ((size_t)(q - p) > len && !strncmp(p, opt, len)) ? &p[len] : NULL;
}
static int ip_addr(const char *s, int len, struct in_addr *addr)
#ifndef WIN32
static int sortlist_alloc(struct apattern **sortlist, int *nsort,
struct apattern *pat)
{
struct apattern *newsort;
newsort = realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern));
if (!newsort)
return 0;
newsort[*nsort] = *pat;
*sortlist = newsort;
(*nsort)++;
return 1;
}
static int ip_addr(const char *ipbuf, int len, struct in_addr *addr)
{
char ipbuf[16];
/* Four octets and three periods yields at most 15 characters. */
if (len > 15)
return -1;
memcpy(ipbuf, s, len);
ipbuf[len] = 0;
addr->s_addr = inet_addr(ipbuf);
if (addr->s_addr == INADDR_NONE && strcmp(ipbuf, "255.255.255.255") != 0)
@@ -978,15 +1162,16 @@ static void natural_mask(struct apattern *pat)
/* Store a host-byte-order copy of pat in a struct in_addr. Icky,
* but portable.
*/
addr.s_addr = ntohl(pat->addr.s_addr);
addr.s_addr = ntohl(pat->addr.addr4.s_addr);
/* This is out of date in the CIDR world, but some people might
* still rely on it.
*/
if (IN_CLASSA(addr.s_addr))
pat->mask.s_addr = htonl(IN_CLASSA_NET);
pat->mask.addr.addr4.s_addr = htonl(IN_CLASSA_NET);
else if (IN_CLASSB(addr.s_addr))
pat->mask.s_addr = htonl(IN_CLASSB_NET);
pat->mask.addr.addr4.s_addr = htonl(IN_CLASSB_NET);
else
pat->mask.s_addr = htonl(IN_CLASSC_NET);
pat->mask.addr.addr4.s_addr = htonl(IN_CLASSC_NET);
}
#endif

81
ares/ares_ipv6.h Normal file
View File

@@ -0,0 +1,81 @@
/* $Id$ */
/*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#ifndef ARES_IPV6_H
#define ARES_IPV6_H
#ifndef HAVE_PF_INET6
#define PF_INET6 AF_INET6
#endif
#ifndef HAVE_STRUCT_IN6_ADDR
struct in6_addr
{
unsigned char s6_addr[16];
};
#endif
#ifndef HAVE_STRUCT_SOCKADDR_IN6
struct sockaddr_in6
{
unsigned short sin6_family;
unsigned short sin6_port;
unsigned long sin6_flowinfo;
struct in6_addr sin6_addr;
unsigned int sin6_scope_id;
};
#endif
#ifndef HAVE_STRUCT_ADDRINFO
struct addrinfo
{
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */
char *ai_canonname;
struct sockaddr *ai_addr;
struct addrinfo *ai_next;
};
#endif
#ifndef NS_IN6ADDRSZ
#if SIZEOF_STRUCT_IN6_ADDR == 0
/* We cannot have it set to zero, so we pick a fixed value here */
#define NS_IN6ADDRSZ 16
#else
#define NS_IN6ADDRSZ SIZEOF_STRUCT_IN6_ADDR
#endif
#endif
#ifndef NS_INADDRSZ
#define NS_INADDRSZ SIZEOF_STRUCT_IN_ADDR
#endif
#ifndef NS_INT16SZ
#define NS_INT16SZ 2
#endif
#ifndef IF_NAMESIZE
#ifdef IFNAMSIZ
#define IF_NAMESIZE IFNAMSIZ
#else
#define IF_NAMESIZE 256
#endif
#endif
#endif /* ARES_IPV6_H */

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,19 +16,22 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdlib.h>
#include <string.h>
#include "ares.h"
#include "ares_dns.h"
#include "ares_private.h"
/* Header format, from RFC 1035:
* 1 1 1 1 1 1
@@ -109,7 +114,12 @@ int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
memset(q, 0, HFIXEDSZ);
DNS_HEADER_SET_QID(q, id);
DNS_HEADER_SET_OPCODE(q, QUERY);
DNS_HEADER_SET_RD(q, (rd) ? 1 : 0);
if (rd) {
DNS_HEADER_SET_RD(q, 1);
}
else {
DNS_HEADER_SET_RD(q, 0);
}
DNS_HEADER_SET_QDCOUNT(q, 1);
/* A name of "." is a screw case for the loop below, so adjust it. */
@@ -135,7 +145,7 @@ int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
return ARES_EBADNAME;
/* Encode the length and copy the data. */
*q++ = len;
*q++ = (unsigned char)len;
for (p = name; *p && *p != '.'; p++)
{
if (*p == '\\' && *(p + 1) != 0)

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
@@ -24,6 +25,9 @@
#include <arpa/inet.h>
#include <netdb.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdlib.h>

View File

@@ -0,0 +1,64 @@
.\" $Id$
.\"
.\" Copyright 2005 by Dominick Meglio.
.\"
.\" Permission to use, copy, modify, and distribute this
.\" software and its documentation for any purpose and without
.\" fee is hereby granted, provided that the above copyright
.\" notice appear in all copies and that both that copyright
.\" notice and this permission notice appear in supporting
.\" documentation, and that the name of M.I.T. not be used in
.\" advertising or publicity pertaining to distribution of the
.\" software without specific, written prior permission.
.\" M.I.T. makes no representations about the suitability of
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_PARSE_AAAA_REPLY 3 "10 March 2005"
.SH NAME
ares_parse_aaaa_reply \- Parse a reply to a DNS query of type AAAA into a hostent
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B int ares_parse_aaaa_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
.B struct hostent **\fIhost\fP);
.fi
.SH DESCRIPTION
The
.B ares_parse_aaaa_reply
function parses the response to a query of type AAAA into a
.BR "struct hostent" .
The parameters
.I abuf
and
.I alen
give the contents of the response. The result is stored in allocated
memory and a pointer to it stored into the variable pointed to by
.IR host .
It is the caller's responsibility to free the resulting host structure
using
.BR ares_free_hostent (3)
when it is no longer needed.
.SH RETURN VALUES
.B ares_parse_aaaa_reply
can return any of the following values:
.TP 15
.B ARES_SUCCESS
The response was successfully parsed.
.TP 15
.B ARES_EBADRESP
The response was malformatted.
.TP 15
.B ARES_ENODATA
The response did not contain an answer to the query.
.TP 15
.B ARES_ENOMEM
Memory was exhausted.
.SH SEE ALSO
.BR ares_gethostbyname (3),
.BR ares_free_hostent (3)
.SH AUTHOR
Dominick Meglio
.br
Copyright 2005 by Dominick Meglio.

View File

@@ -0,0 +1,180 @@
/* $Id$ */
/* Copyright 2005 Dominick Meglio
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#include "setup.h"
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#ifdef HAVE_ARPA_NAMESER_H
#include <arpa/nameser.h>
#endif
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdlib.h>
#include <string.h>
#include "ares.h"
#include "ares_dns.h"
#include "inet_net_pton.h"
#include "ares_private.h"
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
struct hostent **host)
{
unsigned int qdcount, ancount;
int status, i, rr_type, rr_class, rr_len, naddrs;
int naliases;
long len;
const unsigned char *aptr;
char *hostname, *rr_name, *rr_data, **aliases;
struct in6_addr *addrs;
struct hostent *hostent;
/* Set *host to NULL for all failure cases. */
*host = NULL;
/* Give up if abuf doesn't have room for a header. */
if (alen < HFIXEDSZ)
return ARES_EBADRESP;
/* Fetch the question and answer count from the header. */
qdcount = DNS_HEADER_QDCOUNT(abuf);
ancount = DNS_HEADER_ANCOUNT(abuf);
if (qdcount != 1)
return ARES_EBADRESP;
/* Expand the name from the question, and skip past the question. */
aptr = abuf + HFIXEDSZ;
status = ares_expand_name(aptr, abuf, alen, &hostname, &len);
if (status != ARES_SUCCESS)
return status;
if (aptr + len + QFIXEDSZ > abuf + alen)
{
free(hostname);
return ARES_EBADRESP;
}
aptr += len + QFIXEDSZ;
/* Allocate addresses and aliases; ancount gives an upper bound for both. */
addrs = malloc(ancount * sizeof(struct in6_addr));
if (!addrs)
{
free(hostname);
return ARES_ENOMEM;
}
aliases = malloc((ancount + 1) * sizeof(char *));
if (!aliases)
{
free(hostname);
free(addrs);
return ARES_ENOMEM;
}
naddrs = 0;
naliases = 0;
/* Examine each answer resource record (RR) in turn. */
for (i = 0; i < (int)ancount; i++)
{
/* Decode the RR up to the data field. */
status = ares_expand_name(aptr, abuf, alen, &rr_name, &len);
if (status != ARES_SUCCESS)
break;
aptr += len;
if (aptr + RRFIXEDSZ > abuf + alen)
{
status = ARES_EBADRESP;
break;
}
rr_type = DNS_RR_TYPE(aptr);
rr_class = DNS_RR_CLASS(aptr);
rr_len = DNS_RR_LEN(aptr);
aptr += RRFIXEDSZ;
if (rr_class == C_IN && rr_type == T_AAAA
&& rr_len == sizeof(struct in6_addr)
&& strcasecmp(rr_name, hostname) == 0)
{
memcpy(&addrs[naddrs], aptr, sizeof(struct in6_addr));
naddrs++;
status = ARES_SUCCESS;
}
if (rr_class == C_IN && rr_type == T_CNAME)
{
/* Record the RR name as an alias. */
aliases[naliases] = rr_name;
naliases++;
/* Decode the RR data and replace the hostname with it. */
status = ares_expand_name(aptr, abuf, alen, &rr_data, &len);
if (status != ARES_SUCCESS)
break;
free(hostname);
hostname = rr_data;
}
else
free(rr_name);
aptr += rr_len;
if (aptr > abuf + alen)
{
status = ARES_EBADRESP;
break;
}
}
if (status == ARES_SUCCESS && naddrs == 0)
status = ARES_ENODATA;
if (status == ARES_SUCCESS)
{
/* We got our answer. Allocate memory to build the host entry. */
aliases[naliases] = NULL;
hostent = malloc(sizeof(struct hostent));
if (hostent)
{
hostent->h_addr_list = malloc((naddrs + 1) * sizeof(char *));
if (hostent->h_addr_list)
{
/* Fill in the hostent and return successfully. */
hostent->h_name = hostname;
hostent->h_aliases = aliases;
hostent->h_addrtype = AF_INET6;
hostent->h_length = sizeof(struct in6_addr);
for (i = 0; i < naddrs; i++)
hostent->h_addr_list[i] = (char *) &addrs[i];
hostent->h_addr_list[naddrs] = NULL;
*host = hostent;
return ARES_SUCCESS;
}
free(hostent);
}
status = ARES_ENOMEM;
}
for (i = 0; i < naliases; i++)
free(aliases[i]);
free(aliases);
free(addrs);
free(hostname);
return status;
}

View File

@@ -0,0 +1,66 @@
.\"
.\" Copyright 1998 by the Massachusetts Institute of Technology.
.\"
.\" Permission to use, copy, modify, and distribute this
.\" software and its documentation for any purpose and without
.\" fee is hereby granted, provided that the above copyright
.\" notice appear in all copies and that both that copyright
.\" notice and this permission notice appear in supporting
.\" documentation, and that the name of M.I.T. not be used in
.\" advertising or publicity pertaining to distribution of the
.\" software without specific, written prior permission.
.\" M.I.T. makes no representations about the suitability of
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_PARSE_NS_REPLY 3 "10 February 2007"
.SH NAME
ares_parse_ns_reply \- Parse a reply to a DNS query of type NS into a hostent
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B int ares_parse_ns_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
.B struct hostent **\fIhost\fP);
.fi
.SH DESCRIPTION
The
.B ares_parse_ns_reply
function parses the response to a query of type NS into a
.BR "struct hostent" .
The parameters
.I abuf
and
.I alen
give the contents of the response. The result is stored in allocated
memory and a pointer to it stored into the variable pointed to by
.IR host .
The nameservers are stored into the
.BR aliases
field of the
.IR host
structure.
It is the caller's responsibility to free the resulting host structure
using
.BR ares_free_hostent (3)
when it is no longer needed.
.SH RETURN VALUES
.B ares_parse_ns_reply
can return any of the following values:
.TP 15
.B ARES_SUCCESS
The response was successfully parsed.
.TP 15
.B ARES_EBADRESP
The response was malformatted.
.TP 15
.B ARES_ENODATA
The response did not contain an answer to the query.
.TP 15
.B ARES_ENOMEM
Memory was exhausted.
.SH SEE ALSO
.BR ares_query (3),
.BR ares_free_hostent (3)
.SH AUTHOR
Written by Vlad Dinulescu <vlad.dinulescu@avira.com>, on behalf of AVIRA Gmbh http://www.avira.com

171
ares/ares_parse_ns_reply.c Normal file
View File

@@ -0,0 +1,171 @@
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
/*
* ares_parse_ns_reply created by Vlad Dinulescu <vlad.dinulescu@avira.com>
* on behalf of AVIRA Gmbh - http://www.avira.com
*/
#include "setup.h"
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdlib.h>
#include <string.h>
#include "ares.h"
#include "ares_dns.h"
#include "ares_private.h"
int ares_parse_ns_reply( const unsigned char* abuf, int alen,
struct hostent** host )
{
unsigned int qdcount, ancount;
int status, i, rr_type, rr_class, rr_len;
int nameservers_num;
long len;
const unsigned char *aptr;
char* hostname, *rr_name, *rr_data, **nameservers;
struct hostent *hostent;
/* Set *host to NULL for all failure cases. */
*host = NULL;
/* Give up if abuf doesn't have room for a header. */
if ( alen < HFIXEDSZ )
return ARES_EBADRESP;
/* Fetch the question and answer count from the header. */
qdcount = DNS_HEADER_QDCOUNT( abuf );
ancount = DNS_HEADER_ANCOUNT( abuf );
if ( qdcount != 1 )
return ARES_EBADRESP;
/* Expand the name from the question, and skip past the question. */
aptr = abuf + HFIXEDSZ;
status = ares_expand_name( aptr, abuf, alen, &hostname, &len );
if ( status != ARES_SUCCESS )
return status;
if ( aptr + len + QFIXEDSZ > abuf + alen )
{
free( hostname );
return ARES_EBADRESP;
}
aptr += len + QFIXEDSZ;
/* Allocate nameservers array; ancount gives an upper bound */
nameservers = malloc( ( ancount + 1 ) * sizeof( char * ) );
if ( !nameservers )
{
free( hostname );
return ARES_ENOMEM;
}
nameservers_num = 0;
/* Examine each answer resource record (RR) in turn. */
for ( i = 0; i < ( int ) ancount; i++ )
{
/* Decode the RR up to the data field. */
status = ares_expand_name( aptr, abuf, alen, &rr_name, &len );
if ( status != ARES_SUCCESS )
break;
aptr += len;
if ( aptr + RRFIXEDSZ > abuf + alen )
{
status = ARES_EBADRESP;
break;
}
rr_type = DNS_RR_TYPE( aptr );
rr_class = DNS_RR_CLASS( aptr );
rr_len = DNS_RR_LEN( aptr );
aptr += RRFIXEDSZ;
if ( rr_class == C_IN && rr_type == T_NS )
{
/* Decode the RR data and add it to the nameservers list */
status = ares_expand_name( aptr, abuf, alen, &rr_data, &len );
if ( status != ARES_SUCCESS )
{
break;
}
nameservers[nameservers_num] = malloc(strlen(rr_data)+1);
if (nameservers[nameservers_num]==NULL)
{
free(rr_name);
free(rr_data);
status=ARES_ENOMEM;
break;
}
strcpy(nameservers[nameservers_num],rr_data);
free(rr_data);
nameservers_num++;
}
free( rr_name );
aptr += rr_len;
if ( aptr > abuf + alen )
{
status = ARES_EBADRESP;
break;
}
}
if ( status == ARES_SUCCESS && nameservers_num == 0 )
{
status = ARES_ENODATA;
}
if ( status == ARES_SUCCESS )
{
/* We got our answer. Allocate memory to build the host entry. */
nameservers[nameservers_num] = NULL;
hostent = malloc( sizeof( struct hostent ) );
if ( hostent )
{
hostent->h_addr_list = malloc( 1 * sizeof( char * ) );
if ( hostent->h_addr_list )
{
/* Fill in the hostent and return successfully. */
hostent->h_name = hostname;
hostent->h_aliases = nameservers;
hostent->h_addrtype = AF_INET;
hostent->h_length = sizeof( struct in_addr );
hostent->h_addr_list[0] = NULL;
*host = hostent;
return ARES_SUCCESS;
}
free( hostent );
}
status = ARES_ENOMEM;
}
for ( i = 0; i < nameservers_num; i++ )
free( nameservers[i] );
free( nameservers );
free( hostname );
return status;
}

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
@@ -23,6 +24,9 @@
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdlib.h>

View File

@@ -1,3 +1,6 @@
#ifndef __ARES_PRIVATE_H
#define __ARES_PRIVATE_H
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
@@ -33,6 +36,10 @@
#define writev(s,v,c) writev_s(s,v,c)
#endif
#ifdef NETWARE
#include <time.h>
#endif
#define DEFAULT_TIMEOUT 5
#define DEFAULT_TRIES 4
#ifndef INADDR_NONE
@@ -41,7 +48,7 @@
#if defined(WIN32) && !defined(WATT32)
#define IsNT ((int)GetVersion()>0)
#define IS_NT() ((int)GetVersion() > 0)
#define WIN_NS_9X "System\\CurrentControlSet\\Services\\VxD\\MSTCP"
#define WIN_NS_NT_KEY "System\\CurrentControlSet\\Services\\Tcpip\\Parameters"
#define NAMESERVER "NameServer"
@@ -58,6 +65,10 @@
#define PATH_RESOLV_CONF "sys:/etc/resolv.cfg"
#define PATH_HOSTS "sys:/etc/hosts"
#elif defined(__riscos__)
#define PATH_HOSTS "InetDBase:Hosts"
#else
#define PATH_RESOLV_CONF "/etc/resolv.conf"
@@ -69,6 +80,8 @@
#endif
#include "ares_ipv6.h"
struct send_request {
/* Remaining data to send */
const unsigned char *data;
@@ -124,9 +137,23 @@ struct query {
};
/* An IP address pattern; matches an IP address X if X & mask == addr */
#define PATTERN_MASK 0x1
#define PATTERN_CIDR 0x2
union ares_addr {
struct in_addr addr4;
struct in6_addr addr6;
};
struct apattern {
struct in_addr addr;
struct in_addr mask;
union ares_addr addr;
union
{
union ares_addr addr;
unsigned short bits;
} mask;
int family;
unsigned short type;
};
struct ares_channeldata {
@@ -152,13 +179,22 @@ struct ares_channeldata {
/* Active queries */
struct query *queries;
ares_sock_state_cb sock_state_cb;
void *sock_state_cb_data;
};
void ares__send_query(ares_channel channel, struct query *query, time_t now);
void ares__close_sockets(struct server_state *server);
int ares__get_hostent(FILE *fp, struct hostent **host);
void ares__close_sockets(ares_channel channel, struct server_state *server);
int ares__get_hostent(FILE *fp, int family, struct hostent **host);
int ares__read_line(FILE *fp, char **buf, int *bufsize);
#define SOCK_STATE_CALLBACK(c, s, r, w) \
do { \
if ((c)->sock_state_cb) \
(c)->sock_state_cb((c)->sock_state_cb_data, (s), (r), (w)); \
} while (0)
#ifdef CURLDEBUG
/* This is low-level hard-hacking memory leak tracking and similar. Using the
libcurl lowlevel code from within library is ugly and only works when
@@ -166,3 +202,6 @@ int ares__read_line(FILE *fp, char **buf, int *bufsize);
this anyway for convenience. */
#include "../lib/memdebug.h"
#endif
#endif /* __ARES_PRIVATE_H */

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
@@ -27,9 +28,19 @@
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif /* WIN32 && !WATT32 */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
#ifdef NETWARE
#include <sys/filio.h>
#endif
#include <string.h>
@@ -42,12 +53,8 @@
#include "ares_dns.h"
#include "ares_private.h"
#if (defined(WIN32) || defined(WATT32)) && !defined(MSDOS)
#define GET_ERRNO() WSAGetLastError()
#else
#define GET_ERRNO() errno
#endif
static int try_again(int errnum);
static void write_tcp_data(ares_channel channel, fd_set *write_fds,
time_t now);
static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now);
@@ -79,6 +86,31 @@ void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
process_timeouts(channel, now);
}
/* Return 1 if the specified error number describes a readiness error, or 0
* otherwise. This is mostly for HP-UX, which could return EAGAIN or
* EWOULDBLOCK. See this man page
*
* http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html?manpage=/usr/share/man/man2.Z/send.2
*/
static int try_again(int errnum)
{
#if !defined EWOULDBLOCK && !defined EAGAIN
#error "Neither EWOULDBLOCK nor EAGAIN defined"
#endif
switch (errnum)
{
#ifdef EWOULDBLOCK
case EWOULDBLOCK:
return 1;
#endif
#if defined EAGAIN && EAGAIN != EWOULDBLOCK
case EAGAIN:
return 1;
#endif
}
return 0;
}
/* If any TCP sockets select true for writing, write out queued data
* we have for them.
*/
@@ -89,7 +121,7 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
struct iovec *vec;
int i;
ssize_t scount;
int wcount;
ssize_t wcount;
size_t n;
for (i = 0; i < channel->nservers; i++)
@@ -117,11 +149,12 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
vec[n].iov_len = sendreq->len;
n++;
}
wcount = writev(server->tcp_socket, vec, n);
wcount = (ssize_t)writev(server->tcp_socket, vec, (int)n);
free(vec);
if (wcount < 0)
{
handle_error(channel, i, now);
if (!try_again(SOCKERRNO))
handle_error(channel, i, now);
continue;
}
@@ -134,7 +167,10 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
wcount -= sendreq->len;
server->qhead = sendreq->next;
if (server->qhead == NULL)
server->qtail = NULL;
{
SOCK_STATE_CALLBACK(channel, server->tcp_socket, 1, 0);
server->qtail = NULL;
}
free(sendreq);
}
else
@@ -150,11 +186,11 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
/* Can't allocate iovecs; just send the first request. */
sendreq = server->qhead;
scount = send(server->tcp_socket, sendreq->data, sendreq->len, 0);
scount = swrite(server->tcp_socket, sendreq->data, sendreq->len);
if (scount < 0)
{
handle_error(channel, i, now);
if (!try_again(SOCKERRNO))
handle_error(channel, i, now);
continue;
}
@@ -163,7 +199,10 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
{
server->qhead = sendreq->next;
if (server->qhead == NULL)
server->qtail = NULL;
{
SOCK_STATE_CALLBACK(channel, server->tcp_socket, 1, 0);
server->qtail = NULL;
}
free(sendreq);
}
else
@@ -182,7 +221,8 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now)
{
struct server_state *server;
int i, count;
int i;
ssize_t count;
for (i = 0; i < channel->nservers; i++)
{
@@ -197,16 +237,17 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now)
/* We haven't yet read a length word, so read that (or
* what's left to read of it).
*/
count = recv(server->tcp_socket,
server->tcp_lenbuf + server->tcp_buffer_pos,
2 - server->tcp_buffer_pos, 0);
count = sread(server->tcp_socket,
server->tcp_lenbuf + server->tcp_lenbuf_pos,
2 - server->tcp_lenbuf_pos);
if (count <= 0)
{
handle_error(channel, i, now);
if (!(count == -1 && try_again(SOCKERRNO)))
handle_error(channel, i, now);
continue;
}
server->tcp_lenbuf_pos += count;
server->tcp_lenbuf_pos += (int)count;
if (server->tcp_lenbuf_pos == 2)
{
/* We finished reading the length word. Decode the
@@ -223,16 +264,17 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now)
else
{
/* Read data into the allocated buffer. */
count = recv(server->tcp_socket,
server->tcp_buffer + server->tcp_buffer_pos,
server->tcp_length - server->tcp_buffer_pos, 0);
count = sread(server->tcp_socket,
server->tcp_buffer + server->tcp_buffer_pos,
server->tcp_length - server->tcp_buffer_pos);
if (count <= 0)
{
handle_error(channel, i, now);
if (!(count == -1 && try_again(SOCKERRNO)))
handle_error(channel, i, now);
continue;
}
server->tcp_buffer_pos += count;
server->tcp_buffer_pos += (int)count;
if (server->tcp_buffer_pos == server->tcp_length)
{
/* We finished reading this answer; process it and
@@ -244,6 +286,7 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now)
free(server->tcp_buffer);
server->tcp_buffer = NULL;
server->tcp_lenbuf_pos = 0;
server->tcp_buffer_pos = 0;
}
}
}
@@ -254,7 +297,8 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
time_t now)
{
struct server_state *server;
int i, count;
int i;
ssize_t count;
unsigned char buf[PACKETSZ + 1];
for (i = 0; i < channel->nservers; i++)
@@ -266,11 +310,13 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
!FD_ISSET(server->udp_socket, read_fds))
continue;
count = recv(server->udp_socket, buf, sizeof(buf), 0);
if (count <= 0)
count = sread(server->udp_socket, buf, sizeof(buf));
if (count == -1 && try_again(SOCKERRNO))
continue;
else if (count <= 0)
handle_error(channel, i, now);
process_answer(channel, buf, count, i, 0, now);
process_answer(channel, buf, (int)count, i, 0, now);
}
}
@@ -364,7 +410,7 @@ static void handle_error(ares_channel channel, int whichserver, time_t now)
struct query *query, *next;
/* Reset communications with this server. */
ares__close_sockets(&channel->servers[whichserver]);
ares__close_sockets(channel, &channel->servers[whichserver]);
/* Tell all queries talking to this server to move on and not try
* this server again.
@@ -436,7 +482,10 @@ void ares__send_query(ares_channel channel, struct query *query, time_t now)
if (server->qtail)
server->qtail->next = sendreq;
else
server->qhead = sendreq;
{
SOCK_STATE_CALLBACK(channel, server->tcp_socket, 1, 1);
server->qhead = sendreq;
}
server->qtail = sendreq;
query->timeout = 0;
}
@@ -451,8 +500,9 @@ void ares__send_query(ares_channel channel, struct query *query, time_t now)
return;
}
}
if (send(server->udp_socket, query->qbuf, query->qlen, 0) == -1)
if (swrite(server->udp_socket, query->qbuf, query->qlen) == -1)
{
/* FIXME: Handle EAGAIN here since it likely can happen. */
query->skip_server[query->server] = 1;
next_server(channel, query, now);
return;
@@ -463,10 +513,81 @@ void ares__send_query(ares_channel channel, struct query *query, time_t now)
}
}
/*
* nonblock() set the given socket to either blocking or non-blocking mode
* based on the 'nonblock' boolean argument. This function is highly portable.
*/
static int nonblock(ares_socket_t sockfd, /* operate on this */
int nonblock /* TRUE or FALSE */)
{
#undef SETBLOCK
#define SETBLOCK 0
#ifdef HAVE_O_NONBLOCK
/* most recent unix versions */
int flags;
flags = fcntl(sockfd, F_GETFL, 0);
if (FALSE != nonblock)
return fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
else
return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK));
#undef SETBLOCK
#define SETBLOCK 1
#endif
#if defined(HAVE_FIONBIO) && (SETBLOCK == 0)
/* older unix versions */
int flags;
flags = nonblock;
return ioctl(sockfd, FIONBIO, &flags);
#undef SETBLOCK
#define SETBLOCK 2
#endif
#if defined(HAVE_IOCTLSOCKET) && (SETBLOCK == 0)
#ifdef WATT32
char flags;
#else
/* Windows? */
unsigned long flags;
#endif
flags = nonblock;
return ioctlsocket(sockfd, FIONBIO, &flags);
#undef SETBLOCK
#define SETBLOCK 3
#endif
#if defined(HAVE_IOCTLSOCKET_CASE) && (SETBLOCK == 0)
/* presumably for Amiga */
return IoctlSocket(sockfd, FIONBIO, (long)nonblock);
#undef SETBLOCK
#define SETBLOCK 4
#endif
#if defined(HAVE_SO_NONBLOCK) && (SETBLOCK == 0)
/* BeOS */
long b = nonblock ? 1 : 0;
return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
#undef SETBLOCK
#define SETBLOCK 5
#endif
#ifdef HAVE_DISABLED_NONBLOCKING
return 0; /* returns success */
#undef SETBLOCK
#define SETBLOCK 6
#endif
#if (SETBLOCK == 0)
#error "no non-blocking method was found/used/set"
#endif
}
static int open_tcp_socket(ares_channel channel, struct server_state *server)
{
ares_socket_t s;
int flags;
struct sockaddr_in sockin;
/* Acquire a socket. */
@@ -475,33 +596,15 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
return -1;
/* Set the socket non-blocking. */
#if defined(WIN32) || defined(WATT32)
flags = 1;
ioctlsocket(s, FIONBIO, &flags);
#else
flags = fcntl(s, F_GETFL, 0);
if (flags == -1)
{
closesocket(s);
return -1;
}
flags |= O_NONBLOCK;
if (fcntl(s, F_SETFL, flags) == -1)
{
closesocket(s);
return -1;
}
#endif
nonblock(s, TRUE);
/* Connect to the server. */
memset(&sockin, 0, sizeof(sockin));
sockin.sin_family = AF_INET;
sockin.sin_addr = server->addr;
sockin.sin_port = channel->tcp_port;
sockin.sin_port = (unsigned short)(channel->tcp_port & 0xffff);
if (connect(s, (struct sockaddr *) &sockin, sizeof(sockin)) == -1) {
int err = GET_ERRNO();
int err = SOCKERRNO;
if (err != EINPROGRESS && err != EWOULDBLOCK) {
closesocket(s);
@@ -509,6 +612,7 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
}
}
SOCK_STATE_CALLBACK(channel, s, 1, 0);
server->tcp_buffer_pos = 0;
server->tcp_socket = s;
return 0;
@@ -524,17 +628,22 @@ static int open_udp_socket(ares_channel channel, struct server_state *server)
if (s == ARES_SOCKET_BAD)
return -1;
/* Set the socket non-blocking. */
nonblock(s, TRUE);
/* Connect to the server. */
memset(&sockin, 0, sizeof(sockin));
sockin.sin_family = AF_INET;
sockin.sin_addr = server->addr;
sockin.sin_port = channel->udp_port;
sockin.sin_port = (unsigned short)(channel->udp_port & 0xffff);
if (connect(s, (struct sockaddr *) &sockin, sizeof(sockin)) == -1)
{
closesocket(s);
return -1;
}
SOCK_STATE_CALLBACK(channel, s, 1, 0);
server->udp_socket = s;
return 0;
}
@@ -645,7 +754,7 @@ static struct query *end_query (ares_channel channel, struct query *query, int s
if (!channel->queries && !(channel->flags & ARES_FLAG_STAYOPEN))
{
for (i = 0; i < channel->nservers; i++)
ares__close_sockets(&channel->servers[i]);
ares__close_sockets(channel, &channel->servers[i]);
}
return (next);
}

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,13 +16,15 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdlib.h>

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -18,6 +20,7 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
@@ -214,6 +217,7 @@ static int single_domain(ares_channel channel, const char *name, char **s)
char *line = NULL;
int linesize, status;
const char *p, *q;
int error;
/* If the name contains a trailing dot, then the single query is the name
* sans the trailing dot.
@@ -237,15 +241,15 @@ static int single_domain(ares_channel channel, const char *name, char **s)
== ARES_SUCCESS)
{
if (strncasecmp(line, name, len) != 0 ||
!isspace((unsigned char)line[len]))
!ISSPACE(line[len]))
continue;
p = line + len;
while (isspace((unsigned char)*p))
while (ISSPACE(*p))
p++;
if (*p)
{
q = p + 1;
while (*q && !isspace((unsigned char)*q))
while (*q && !ISSPACE(*q))
q++;
*s = malloc(q - p + 1);
if (*s)
@@ -263,6 +267,23 @@ static int single_domain(ares_channel channel, const char *name, char **s)
if (status != ARES_SUCCESS)
return status;
}
else
{
error = ERRNO;
switch(error)
{
case ENOENT:
case ESRCH:
break;
default:
DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
error, strerror(error)));
DEBUGF(fprintf(stderr, "Error opening file: %s\n",
hostaliases));
*s = NULL;
return ARES_EFILE;
}
}
}
}

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,13 +16,15 @@
*/
#include "setup.h"
#include <sys/types.h>
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#include <netinet/in.h>
#include <arpa/nameser.h>
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
#include <arpa/nameser_compat.h>
#endif
#endif
#include <stdlib.h>
@@ -68,14 +72,14 @@ void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
}
/* Compute the query ID. Start with no timeout. */
query->qid = DNS_HEADER_QID(qbuf);
query->qid = (unsigned short)DNS_HEADER_QID(qbuf);
query->timeout = 0;
/* Form the TCP query buffer by prepending qlen (as two
* network-order bytes) to qbuf.
*/
query->tcpbuf[0] = (qlen >> 8) & 0xff;
query->tcpbuf[1] = qlen & 0xff;
query->tcpbuf[0] = (unsigned char)((qlen >> 8) & 0xff);
query->tcpbuf[1] = (unsigned char)(qlen & 0xff);
memcpy(query->tcpbuf + 2, qbuf, qlen);
query->tcplen = qlen + 2;

View File

@@ -30,7 +30,8 @@ function gets the description of the ares library error code
.IR code ,
returning the result as a NUL-terminated C string.
.SH NOTES
This function is not compatible with ares.
This function is not compatible with ares, it takes a different set of
arguments.
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -38,9 +40,12 @@ const char *ares_strerror(int code)
"Error reading file",
"Out of memory",
"Channel is being destroyed",
"Misformatted string"
"Misformatted string",
"Illegal flags specified",
"Given hostname is not numeric",
"Illegal hints flags specified"
};
assert(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext)));
DEBUGASSERT(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext)));
return errtext[code];
}

View File

@@ -1,3 +1,5 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
*
* Permission to use, copy, modify, and distribute this
@@ -14,7 +16,6 @@
*/
#include "setup.h"
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>

View File

@@ -4,14 +4,22 @@
#define ARES__VERSION_H
#define ARES_VERSION_MAJOR 1
#define ARES_VERSION_MINOR 2
#define ARES_VERSION_PATCH 0
#define ARES_VERSION_MINOR 3
#define ARES_VERSION_PATCH 3
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
(ARES_VERSION_MINOR<<8)|\
(ARES_VERSION_PATCH))
#define ARES_VERSION_STR "1.2.0"
#define ARES_VERSION_STR "1.3.3-CVS"
#ifdef __cplusplus
extern "C" {
#endif
const char *ares_version(int *version);
#ifdef __cplusplus
}
#endif
#endif

60
ares/bitncmp.c Normal file
View File

@@ -0,0 +1,60 @@
/* $Id$ */
/*
* Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1996,1999 by Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef HAVE_BITNCMP
#include "setup.h"
#include "bitncmp.h"
/*
* int
* bitncmp(l, r, n)
* compare bit masks l and r, for n bits.
* return:
* -1, 1, or 0 in the libc tradition.
* note:
* network byte order assumed. this means 192.5.5.240/28 has
* 0x11110000 in its fourth octet.
* author:
* Paul Vixie (ISC), June 1996
*/
int
ares_bitncmp(const void *l, const void *r, int n) {
unsigned int lb, rb;
int x, b;
b = n / 8;
x = memcmp(l, r, b);
if (x)
return (x);
lb = ((const unsigned char *)l)[b];
rb = ((const unsigned char *)r)[b];
for (b = n % 8; b > 0; b--) {
if ((lb & 0x80) != (rb & 0x80)) {
if (lb & 0x80)
return (1);
return (-1);
}
lb <<= 1;
rb <<= 1;
}
return (0);
}
#endif

26
ares/bitncmp.h Normal file
View File

@@ -0,0 +1,26 @@
#ifndef __ARES_BITNCMP_H
#define __ARES_BITNCMP_H
/* $Id$ */
/*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#ifndef HAVE_BITNCMP
int ares_bitncmp(const void *l, const void *r, int n);
#else
#define ares_bitncmp(x,y,z) bitncmp(x,y,z)
#endif
#endif /* __ARES_BITNCMP_H */

View File

@@ -1,7 +1,7 @@
#!/bin/sh
libtoolize --copy --automake --force
aclocal
autoheader
autoconf
automake --add-missing
${LIBTOOLIZE:-libtoolize} --copy --automake --force
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS
${AUTOHEADER:-autoheader}
${AUTOCONF:-autoconf}
${AUTOMAKE:-automake} --add-missing

187
ares/config-win32.h Normal file
View File

@@ -0,0 +1,187 @@
#ifndef __ARES_CONFIG_WIN32_H
#define __ARES_CONFIG_WIN32_H
/* $Id$ */
/* Copyright (C) 2004 - 2006 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. M.I.T. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
/* ================================================================ */
/* ares/config-win32.h - Hand crafted config file for Windows */
/* ================================================================ */
/* ---------------------------------------------------------------- */
/* HEADER FILES */
/* ---------------------------------------------------------------- */
/* Define if you have the <getopt.h> header file. */
#if defined(__MINGW32__)
#define HAVE_GETOPT_H 1
#endif
/* Define if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1
/* Define if you have the <sys/time.h> header file */
/* #define HAVE_SYS_TIME_H 1 */
/* Define if you have the <time.h> header file. */
#define HAVE_TIME_H 1
/* Define if you have the <process.h> header file. */
#define HAVE_PROCESS_H 1
/* Define if you have the <unistd.h> header file. */
#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \
defined(__POCC__)
#define HAVE_UNISTD_H 1
#endif
/* Define if you have the <windows.h> header file. */
#define HAVE_WINDOWS_H 1
/* Define if you have the <winsock.h> header file. */
#define HAVE_WINSOCK_H 1
/* Define if you have the <winsock2.h> header file. */
#define HAVE_WINSOCK2_H 1
/* Define if you have the <ws2tcpip.h> header file. */
#define HAVE_WS2TCPIP_H 1
/* ---------------------------------------------------------------- */
/* OTHER HEADER INFO */
/* ---------------------------------------------------------------- */
/* Define if sig_atomic_t is an available typedef. */
#define HAVE_SIG_ATOMIC_T 1
/* Define if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define if you can safely include both <sys/time.h> and <time.h>. */
/* #define TIME_WITH_SYS_TIME 1 */
/* ---------------------------------------------------------------- */
/* FUNCTIONS */
/* ---------------------------------------------------------------- */
/* Define if you have the ioctlsocket function. */
#define HAVE_IOCTLSOCKET 1
/* Define if you have the recv function. */
#define HAVE_RECV 1
/* Define to the type of arg 1 for recv. */
#define RECV_TYPE_ARG1 SOCKET
/* Define to the type of arg 2 for recv. */
#define RECV_TYPE_ARG2 char *
/* Define to the type of arg 3 for recv. */
#define RECV_TYPE_ARG3 int
/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
/* Define if you have the send function. */
#define HAVE_SEND 1
/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 SOCKET
/* Define to the type qualifier of arg 2 for send. */
#define SEND_QUAL_ARG2 const
/* Define to the type of arg 2 for send. */
#define SEND_TYPE_ARG2 char *
/* Define to the type of arg 3 for send. */
#define SEND_TYPE_ARG3 int
/* Define to the type of arg 4 for send. */
#define SEND_TYPE_ARG4 int
/* Define to the function return type for send. */
#define SEND_TYPE_RETV int
/* Specifics for the Watt-32 tcp/ip stack */
#ifdef WATT32
#define SOCKET int
#define NS_INADDRSZ 4
#define HAVE_ARPA_NAMESER_H 1
#undef HAVE_WINSOCK_H
#undef HAVE_WINSOCK2_H
#undef HAVE_WS2TCPIP_H
#endif
/* ---------------------------------------------------------------- */
/* TYPEDEF REPLACEMENTS */
/* ---------------------------------------------------------------- */
/* Define this if in_addr_t is not an available 'typedefed' type */
#define in_addr_t unsigned long
/* Define as the return type of signal handlers (int or void). */
#define RETSIGTYPE void
/* Define ssize_t if it is not an available 'typedefed' type */
#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__)
#elif defined(_WIN64)
#define ssize_t __int64
#else
#define ssize_t int
#endif
/* Define to 'int' if socklen_t is not an available 'typedefed' type */
#ifndef HAVE_WS2TCPIP_H
#define socklen_t int
#endif
/* ---------------------------------------------------------------- */
/* STRUCT RELATED */
/* ---------------------------------------------------------------- */
/* Define this if you have struct addrinfo */
#define HAVE_STRUCT_ADDRINFO 1
/* Define this if you have struct sockaddr_storage */
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
/* Define this if you have struct timeval */
#define HAVE_STRUCT_TIMEVAL 1
/* ---------------------------------------------------------------- */
/* IPV6 COMPATIBILITY */
/* ---------------------------------------------------------------- */
/* Define this if you have address family AF_INET6 */
#define HAVE_AF_INET6 1
/* Define this if you have protocol family PF_INET6 */
#define HAVE_PF_INET6 1
/* Define this if you have struct in6_addr */
#define HAVE_STRUCT_IN6_ADDR 1
/* Define this if you have struct sockaddr_in6 */
#define HAVE_STRUCT_SOCKADDR_IN6 1
/* Define this if you have sockaddr_in6 with scopeid */
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
#endif /* __ARES_CONFIG_WIN32_H */

View File

@@ -1,9 +1,21 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT(ares_init.c)
AC_CONFIG_SRCDIR([ares_ipv6.h])
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
AM_INIT_AUTOMAKE(c-ares, CVS)
dnl
dnl Detect the canonical host and target build environment
dnl
AC_CANONICAL_HOST
dnl Get system canonical name
AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
AC_AIX
AC_PROG_CC
AC_PROG_INSTALL
@@ -13,12 +25,8 @@ solaris*)
;;
esac
# check for ssize_t
AC_CHECK_TYPE(ssize_t, ,
AC_DEFINE(ssize_t, int, [the signed version of size_t]))
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(socket, socket)
dnl support building of Windows DLLs
AC_LIBTOOL_WIN32_DLL
dnl ************************************************************
dnl Option to switch on debug options. This makes an assumption that
@@ -38,12 +46,22 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
dnl when doing the debug stuff, use static library only
AC_DISABLE_SHARED
dnl Checks for standard header files, to make memdebug.h inclusions bettter
AC_HEADER_STDC
dnl the entire --enable-debug is a hack that lives and runs on top of
dnl libcurl stuff so this BUILDING_LIBCURL is not THAT much uglier
AC_DEFINE(BUILDING_LIBCURL, 1, [when building as static part of libcurl])
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I../include"
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include"
CFLAGS="$CFLAGS -g"
dnl check for how to do large files, needed to get the curl_off_t check
dnl done right
AC_SYS_LARGEFILE
AC_CHECK_SIZEOF(curl_off_t, ,[
#include <stdio.h>
#include "$srcdir/../include/curl/curl.h"
])
dnl set compiler "debug" options to become more picky, and remove
dnl optimize options from CFLAGS
CURL_CC_DEBUG_OPTS
@@ -53,14 +71,718 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
AC_MSG_RESULT(no)
)
dnl skip libtool C++ and Fortran compiler checks
m4_ifdef([AC_PROG_CXX], [m4_undefine([AC_PROG_CXX])])
m4_defun([AC_PROG_CXX],[])
m4_ifdef([AC_PROG_F77], [m4_undefine([AC_PROG_F77])])
m4_defun([AC_PROG_F77],[])
dnl skip libtool C++ and Fortran linker checks
m4_ifdef([AC_LIBTOOL_CXX], [m4_undefine([AC_LIBTOOL_CXX])])
m4_defun([AC_LIBTOOL_CXX],[])
m4_ifdef([AC_LIBTOOL_F77], [m4_undefine([AC_LIBTOOL_F77])])
m4_defun([AC_LIBTOOL_F77],[])
dnl force libtool to build static libraries with PIC on AMD64-linux
AC_MSG_CHECKING([if arch-OS host is AMD64-linux (to build static libraries with PIC)])
case $host in
x86_64*linux*)
AC_MSG_RESULT([yes])
with_pic=yes
;;
*)
AC_MSG_RESULT([no])
;;
esac
dnl libtool setup
AC_PROG_LIBTOOL
AC_MSG_CHECKING([if we need -no-undefined])
case $host in
*-*-cygwin | *-*-mingw* | *-*-pw32*)
need_no_undefined=yes
;;
*)
need_no_undefined=no
;;
esac
AC_MSG_RESULT($need_no_undefined)
AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
dnl **********************************************************************
dnl check if this is the Intel ICC compiler, and if so make it stricter
dnl (convert warning 147 into an error) so that it properly can detect the
dnl gethostbyname_r() version
dnl **********************************************************************
CURL_DETECT_ICC([CFLAGS="$CFLAGS -we 147"])
dnl **********************************************************************
dnl Checks for libraries.
dnl **********************************************************************
dnl gethostbyname without lib or in the nsl lib?
AC_CHECK_FUNC(gethostbyname,
[HAVE_GETHOSTBYNAME="1"
],
[ AC_CHECK_LIB(nsl, gethostbyname,
[HAVE_GETHOSTBYNAME="1"
LIBS="$LIBS -lnsl"
])
])
if test "$HAVE_GETHOSTBYNAME" != "1"
then
dnl gethostbyname in the socket lib?
AC_CHECK_LIB(socket, gethostbyname,
[HAVE_GETHOSTBYNAME="1"
LIBS="$LIBS -lsocket"
])
fi
dnl At least one system has been identified to require BOTH nsl and socket
dnl libs at the same time to link properly.
if test "$HAVE_GETHOSTBYNAME" != "1"
then
AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
my_ac_save_LIBS=$LIBS
LIBS="-lnsl -lsocket $LIBS"
AC_TRY_LINK( ,
[gethostbyname();],
[ dnl found it!
HAVE_GETHOSTBYNAME="1"
AC_MSG_RESULT([yes])],
[ dnl failed!
AC_MSG_RESULT([no])
dnl restore LIBS
LIBS=$my_ac_save_LIBS]
)
fi
if test "$HAVE_GETHOSTBYNAME" != "1"
then
dnl This is for Msys/Mingw
AC_MSG_CHECKING([for gethostbyname in ws2_32])
my_ac_save_LIBS=$LIBS
LIBS="-lws2_32 $LIBS"
AC_TRY_LINK([#include <winsock2.h>],
[gethostbyname("www.dummysite.com");],
[ dnl worked!
ws2="yes"
AC_MSG_RESULT([yes])
HAVE_GETHOSTBYNAME="1"],
[ dnl failed, restore LIBS
LIBS=$my_ac_save_LIBS
AC_MSG_RESULT(no)]
)
fi
if test "$HAVE_GETHOSTBYNAME" != "1"
then
dnl This is for eCos with a stubbed DNS implementation
AC_MSG_CHECKING([for gethostbyname for eCos])
AC_TRY_LINK([
#include <stdio.h>
#include <netdb.h>],
[gethostbyname("www.dummysite.com");],
[ dnl worked!
AC_MSG_RESULT([yes])
HAVE_GETHOSTBYNAME="1"],
AC_MSG_RESULT(no)
)
fi
if test "$HAVE_GETHOSTBYNAME" != "1"
then
dnl gethostbyname in the net lib - for BeOS
AC_CHECK_LIB(net, gethostbyname,
[HAVE_GETHOSTBYNAME="1"
LIBS="$LIBS -lnet"
])
fi
if test "$HAVE_GETHOSTBYNAME" = "1"; then
AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [If you have gethostbyname])
else
AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
fi
dnl resolve lib?
AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
AC_CHECK_LIB(resolve, strcasecmp,
[LIBS="-lresolve $LIBS"],
,
-lnsl)
fi
dnl socket lib?
AC_CHECK_FUNC(connect, , [ AC_CHECK_LIB(socket, connect) ])
dnl dl lib?
AC_CHECK_FUNC(dlclose, , [ AC_CHECK_LIB(dl, dlopen) ])
AC_MSG_CHECKING([whether to use libgcc])
AC_ARG_ENABLE(libgcc,
AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
[ case "$enableval" in
yes)
LIBS="$LIBS -lgcc"
AC_MSG_RESULT(yes)
;;
*) AC_MSG_RESULT(no)
;;
esac ],
AC_MSG_RESULT(no)
)
dnl Default is to try the thread-safe versions of a few functions
OPT_THREAD=on
dnl detect AIX 4.3 or later
AC_MSG_CHECKING([AIX 4.3 or later])
AC_PREPROC_IFELSE([
#if defined(_AIX) && defined(_AIX43)
printf("just fine");
#else
#error "this is not AIX 4.3 or later"
#endif
],
[ AC_MSG_RESULT([yes])
RECENTAIX=yes
OPT_THREAD=off ],
[ AC_MSG_RESULT([no]) ]
)
AC_ARG_ENABLE(thread,dnl
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
AC_HELP_STRING([--enable-thread],[look for thread-safe functions]),
[ case "$enableval" in
no)
OPT_THREAD=off
AC_MSG_WARN(c-ares will not get built using thread-safe functions)
;;
*)
;;
esac
]
)
if test X"$OPT_THREAD" = Xoff
then
AC_DEFINE(DISABLED_THREADSAFE, 1,
[Set to explicitly specify we don't want to use thread-safe functions])
fi
dnl for recent AIX versions, we skip all the thread-safe checks above since
dnl they claim a thread-safe libc using the standard API. But there are
dnl some functions still not thread-safe. Check for these!
dnl Let's hope this split URL remains working:
dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
dnl genprogc/thread_quick_ref.htm
if test "x$RECENTAIX" = "xyes"; then
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
dnl check if this is the IBM xlc compiler
dnl Details thanks to => http://predef.sourceforge.net/
AC_MSG_CHECKING([if this is the xlc compiler])
AC_EGREP_CPP([^__xlC__], [__xlC__],
dnl action if the text is found, this it has not been replaced by the
dnl cpp
XLC="no"
AC_MSG_RESULT([no]),
dnl the text was not found, it was replaced by the cpp
XLC="yes"
AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS -qthreaded"
dnl AIX xlc has to have strict aliasing turned off. If not,
dnl the optimizer assumes that pointers can only point to
dnl an object of the same type.
CFLAGS="$CFLAGS -qnoansialias"
)
fi
dnl **********************************************************************
dnl Back to "normal" configuring
dnl **********************************************************************
dnl Checks for header files.
AC_HEADER_STDC
dnl **********************************************************************
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
dnl and ws2tcpip.h take precedence over any other further checks which
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
dnl this specific header files. And do them before its results are used.
dnl **********************************************************************
CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_HEADER_WINSOCK
CURL_CHECK_HEADER_WINSOCK2
CURL_CHECK_HEADER_WS2TCPIP
CURL_CHECK_HEADER_MALLOC
dnl check for a few basic system headers we need
AC_CHECK_HEADERS(
sys/types.h \
sys/time.h \
sys/select.h \
sys/socket.h \
)
sys/ioctl.h \
netdb.h \
netinet/in.h \
net/if.h \
errno.h \
stdbool.h \
arpa/nameser.h \
arpa/nameser_compat.h \
arpa/inet.h,
dnl to do if not found
[],
dnl to do if found
[],
dnl default includes
[
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
dnl We do this default-include simply to make sure that the nameser_compat.h
dnl header *REALLY* can be include after the new nameser.h. It seems AIX 5.1
dnl (and others?) is not designed to allow this.
#ifdef HAVE_ARPA_NAMESER_H
#include <arpa/nameser.h>
#endif
dnl *Sigh* these are needed in order for net/if.h to get properly detected.
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
]
)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
CURL_CHECK_STRUCT_TIMEVAL
AC_CHECK_SIZEOF(size_t)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(time_t)
AC_CHECK_TYPE(long long,
[AC_DEFINE(HAVE_LONGLONG, 1, [if your compiler supports long long])]
longlong="yes"
)
if test "xyes" = "x$longlong"; then
AC_MSG_CHECKING([if numberLL works])
AC_COMPILE_IFELSE([long long val = 1000LL;],
[AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])]
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no)
)
fi
# check for ssize_t
AC_CHECK_TYPE(ssize_t, ,
AC_DEFINE(ssize_t, int, [the signed version of size_t]))
# check for bool type
AC_CHECK_TYPE([bool],[
AC_DEFINE(HAVE_BOOL_T, 1,
[Define to 1 if bool is an available type.])
], ,[
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_STDBOOL_H
#include <stdbool.h>
#endif
])
# Check for socklen_t or equivalent
CURL_CHECK_TYPE_SOCKLEN_T
TYPE_IN_ADDR_T
TYPE_SOCKADDR_STORAGE
TYPE_SIG_ATOMIC_T
AC_TYPE_SIGNAL
CURL_CHECK_FUNC_RECV
CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL
dnl check for AF_INET6
CARES_CHECK_CONSTANT(
[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif
], [PF_INET6],
AC_DEFINE_UNQUOTED(HAVE_PF_INET6,1,[Define to 1 if you have PF_INET6.])
)
dnl check for PF_INET6
CARES_CHECK_CONSTANT(
[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#endif
], [AF_INET6],
AC_DEFINE_UNQUOTED(HAVE_AF_INET6,1,[Define to 1 if you have AF_INET6.])
)
dnl check for the in6_addr structure
CARES_CHECK_STRUCT(
[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#ifdef HAVE_WS2TCPIP_H
#include <ws2tcpip.h>
#endif
#endif
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#endif
], [in6_addr],
AC_DEFINE_UNQUOTED(HAVE_STRUCT_IN6_ADDR,1,[Define to 1 if you have struct in6_addr.])
)
dnl check for the sockaddr_in6 structure
CARES_CHECK_STRUCT(
[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#ifdef HAVE_WS2TCPIP_H
#include <ws2tcpip.h>
#endif
#endif
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#endif
], [sockaddr_in6],
AC_DEFINE_UNQUOTED(HAVE_STRUCT_SOCKADDR_IN6,1,
[Define to 1 if you have struct sockaddr_in6.]) ac_have_sockaddr_in6=yes
)
AC_CHECK_MEMBER(struct sockaddr_in6.sin6_scope_id,
AC_DEFINE_UNQUOTED(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID,1,
[Define to 1 if your struct sockaddr_in6 has sin6_scope_id.])
, ,
[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#ifdef HAVE_WS2TCPIP_H
#include <ws2tcpip.h>
#endif
#endif
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#endif
])
dnl check for the addrinfo structure
AC_CHECK_MEMBER(struct addrinfo.ai_flags,
AC_DEFINE_UNQUOTED(HAVE_STRUCT_ADDRINFO,1,
[Define to 1 if you have struct addrinfo.]),,
[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#ifdef HAVE_WS2TCPIP_H
#include <ws2tcpip.h>
#endif
#endif
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#endif
]
)
AC_CHECK_FUNCS( bitncmp \
if_indextoname,
dnl if found
[],
dnl if not found, $ac_func is the name we check for
func="$ac_func"
AC_MSG_CHECKING([deeper for $func])
AC_TRY_LINK( [],
[ $func ();],
AC_MSG_RESULT(yes!)
eval "ac_cv_func_$func=yes"
def=`echo "HAVE_$func" | tr 'a-z' 'A-Z'`
AC_DEFINE_UNQUOTED($def, 1, [If you have $func]),
AC_MSG_RESULT(but still no)
)
)
dnl check for inet_pton
AC_CHECK_FUNCS(inet_pton)
dnl Some systems have it, but not IPv6
if test "$ac_cv_func_inet_pton" = "yes" ; then
AC_MSG_CHECKING(if inet_pton supports IPv6)
AC_TRY_RUN(
[
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
int main()
{
struct in6_addr addr6;
if (inet_pton(AF_INET6, "::1", &addr6) < 1)
exit(1);
else
exit(0);
}
], [
AC_MSG_RESULT(yes)
AC_DEFINE_UNQUOTED(HAVE_INET_PTON_IPV6,1,[Define to 1 if inet_pton supports IPv6.])
], AC_MSG_RESULT(no),AC_MSG_RESULT(no))
fi
dnl Check for inet_net_pton
AC_CHECK_FUNCS(inet_net_pton)
dnl Again, some systems have it, but not IPv6
if test "$ac_cv_func_inet_net_pton" = "yes" ; then
AC_MSG_CHECKING(if inet_net_pton supports IPv6)
AC_TRY_RUN(
[
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
int main()
{
struct in6_addr addr6;
if (inet_net_pton(AF_INET6, "::1", &addr6, sizeof(addr6)) < 1)
exit(1);
else
exit(0);
}
], [
AC_MSG_RESULT(yes)
AC_DEFINE_UNQUOTED(HAVE_INET_NET_PTON_IPV6,1,[Define to 1 if inet_net_pton supports IPv6.])
], AC_MSG_RESULT(no),AC_MSG_RESULT(no))
fi
dnl Check for inet_ntop
AC_CHECK_FUNCS(inet_ntop)
dnl Again, some systems have it, but not IPv6
if test "$ac_cv_func_inet_ntop" = "yes" ; then
AC_MSG_CHECKING(if inet_ntop supports IPv6)
AC_TRY_RUN(
[
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#include <errno.h>
int main()
{
struct in6_addr addr6;
char buf[128];
if (inet_ntop(AF_INET6, &addr6, buf, 128) == 0 && errno == EAFNOSUPPORT)
exit(1);
else
exit(0);
}
], [
AC_MSG_RESULT(yes)
AC_DEFINE_UNQUOTED(HAVE_INET_NTOP_IPV6,1,
[Define to 1 if inet_ntop supports IPv6.])
], AC_MSG_RESULT(no),AC_MSG_RESULT(no))
fi
AC_CHECK_SIZEOF(struct in6_addr, ,
[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#ifdef HAVE_WS2TCPIP_H
#include <ws2tcpip.h>
#endif
#endif
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#endif
]
)
AC_CHECK_SIZEOF(struct in_addr, ,
[
#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#ifdef HAVE_WS2TCPIP_H
#include <ws2tcpip.h>
#endif
#endif
#else
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#endif
]
)
dnl Check if the getnameinfo function is available
dnl and get the types of five of its arguments.
CURL_CHECK_FUNC_GETNAMEINFO
dnl God bless non-standardized functions! We need to see which getservbyport_r
dnl variant is available
CARES_CHECK_GETSERVBYPORT_R
CURL_CHECK_NONBLOCKING_SOCKET
AC_C_BIGENDIAN(
[AC_DEFINE(ARES_BIG_ENDIAN, 1,
[define this if ares is built for a big endian system])],
,
[AC_MSG_WARN([couldn't figure out endianess, assuming little endian!])]
)
AC_OUTPUT(Makefile)

447
ares/inet_net_pton.c Normal file
View File

@@ -0,0 +1,447 @@
/* $Id$ */
/*
* Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1996,1999 by Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "setup.h"
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_ARPA_NAMESER_H
#include <arpa/nameser.h>
#endif
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#endif
#include <ctype.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "ares_ipv6.h"
#include "inet_net_pton.h"
#if !defined(HAVE_INET_NET_PTON) || !defined(HAVE_INET_NET_PTON_IPV6) || \
!defined(HAVE_INET_PTON) || !defined(HAVE_INET_PTON_IPV6)
/*
* static int
* inet_net_pton_ipv4(src, dst, size)
* convert IPv4 network number from presentation to network format.
* accepts hex octets, hex strings, decimal octets, and /CIDR.
* "size" is in bytes and describes "dst".
* return:
* number of bits, either imputed classfully or specified with /CIDR,
* or -1 if some failure occurred (check errno). ENOENT means it was
* not an IPv4 network specification.
* note:
* network byte order assumed. this means 192.5.5.240/28 has
* 0b11110000 in its fourth octet.
* note:
* On Windows we store the error in the thread errno, not
* in the winsock error code. This is to avoid loosing the
* actual last winsock error. So use macro ERRNO to fetch the
* errno this funtion sets when returning (-1), not SOCKERRNO.
* author:
* Paul Vixie (ISC), June 1996
*/
static int
inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
{
static const char xdigits[] = "0123456789abcdef";
static const char digits[] = "0123456789";
int n, ch, tmp = 0, dirty, bits;
const unsigned char *odst = dst;
ch = *src++;
if (ch == '0' && (src[0] == 'x' || src[0] == 'X')
&& ISXDIGIT(src[1])) {
/* Hexadecimal: Eat nybble string. */
if (size <= 0U)
goto emsgsize;
dirty = 0;
src++; /* skip x or X. */
while ((ch = *src++) != '\0' && ISXDIGIT(ch)) {
if (ISUPPER(ch))
ch = tolower(ch);
n = (int)(strchr(xdigits, ch) - xdigits);
if (dirty == 0)
tmp = n;
else
tmp = (tmp << 4) | n;
if (++dirty == 2) {
if (size-- <= 0U)
goto emsgsize;
*dst++ = (unsigned char) tmp;
dirty = 0;
}
}
if (dirty) { /* Odd trailing nybble? */
if (size-- <= 0U)
goto emsgsize;
*dst++ = (unsigned char) (tmp << 4);
}
} else if (ISDIGIT(ch)) {
/* Decimal: eat dotted digit string. */
for (;;) {
tmp = 0;
do {
n = (int)(strchr(digits, ch) - digits);
tmp *= 10;
tmp += n;
if (tmp > 255)
goto enoent;
} while ((ch = *src++) != '\0' &&
ISDIGIT(ch));
if (size-- <= 0U)
goto emsgsize;
*dst++ = (unsigned char) tmp;
if (ch == '\0' || ch == '/')
break;
if (ch != '.')
goto enoent;
ch = *src++;
if (!ISDIGIT(ch))
goto enoent;
}
} else
goto enoent;
bits = -1;
if (ch == '/' &&
ISDIGIT(src[0]) && dst > odst) {
/* CIDR width specifier. Nothing can follow it. */
ch = *src++; /* Skip over the /. */
bits = 0;
do {
n = (int)(strchr(digits, ch) - digits);
bits *= 10;
bits += n;
} while ((ch = *src++) != '\0' && ISDIGIT(ch));
if (ch != '\0')
goto enoent;
if (bits > 32)
goto emsgsize;
}
/* Firey death and destruction unless we prefetched EOS. */
if (ch != '\0')
goto enoent;
/* If nothing was written to the destination, we found no address. */
if (dst == odst)
goto enoent;
/* If no CIDR spec was given, infer width from net class. */
if (bits == -1) {
if (*odst >= 240) /* Class E */
bits = 32;
else if (*odst >= 224) /* Class D */
bits = 8;
else if (*odst >= 192) /* Class C */
bits = 24;
else if (*odst >= 128) /* Class B */
bits = 16;
else /* Class A */
bits = 8;
/* If imputed mask is narrower than specified octets, widen. */
if (bits < ((dst - odst) * 8))
bits = (int)(dst - odst) * 8;
/*
* If there are no additional bits specified for a class D
* address adjust bits to 4.
*/
if (bits == 8 && *odst == 224)
bits = 4;
}
/* Extend network to cover the actual mask. */
while (bits > ((dst - odst) * 8)) {
if (size-- <= 0U)
goto emsgsize;
*dst++ = '\0';
}
return (bits);
enoent:
SET_ERRNO(ENOENT);
return (-1);
emsgsize:
SET_ERRNO(EMSGSIZE);
return (-1);
}
static int
getbits(const char *src, int *bitsp)
{
static const char digits[] = "0123456789";
int n;
int val;
char ch;
val = 0;
n = 0;
while ((ch = *src++) != '\0') {
const char *pch;
pch = strchr(digits, ch);
if (pch != NULL) {
if (n++ != 0 && val == 0) /* no leading zeros */
return (0);
val *= 10;
val += (pch - digits);
if (val > 128) /* range */
return (0);
continue;
}
return (0);
}
if (n == 0)
return (0);
*bitsp = val;
return (1);
}
static int
getv4(const char *src, unsigned char *dst, int *bitsp)
{
static const char digits[] = "0123456789";
unsigned char *odst = dst;
int n;
unsigned int val;
char ch;
val = 0;
n = 0;
while ((ch = *src++) != '\0') {
const char *pch;
pch = strchr(digits, ch);
if (pch != NULL) {
if (n++ != 0 && val == 0) /* no leading zeros */
return (0);
val *= 10;
val += (pch - digits);
if (val > 255) /* range */
return (0);
continue;
}
if (ch == '.' || ch == '/') {
if (dst - odst > 3) /* too many octets? */
return (0);
*dst++ = (unsigned char)val;
if (ch == '/')
return (getbits(src, bitsp));
val = 0;
n = 0;
continue;
}
return (0);
}
if (n == 0)
return (0);
if (dst - odst > 3) /* too many octets? */
return (0);
*dst++ = (unsigned char)val;
return (1);
}
static int
inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size)
{
static const char xdigits_l[] = "0123456789abcdef",
xdigits_u[] = "0123456789ABCDEF";
unsigned char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
const char *xdigits, *curtok;
int ch, saw_xdigit;
unsigned int val;
int digits;
int bits;
size_t bytes;
int words;
int ipv4;
memset((tp = tmp), '\0', NS_IN6ADDRSZ);
endp = tp + NS_IN6ADDRSZ;
colonp = NULL;
/* Leading :: requires some special handling. */
if (*src == ':')
if (*++src != ':')
goto enoent;
curtok = src;
saw_xdigit = 0;
val = 0;
digits = 0;
bits = -1;
ipv4 = 0;
while ((ch = *src++) != '\0') {
const char *pch;
if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
pch = strchr((xdigits = xdigits_u), ch);
if (pch != NULL) {
val <<= 4;
val |= (pch - xdigits);
if (++digits > 4)
goto enoent;
saw_xdigit = 1;
continue;
}
if (ch == ':') {
curtok = src;
if (!saw_xdigit) {
if (colonp)
goto enoent;
colonp = tp;
continue;
} else if (*src == '\0')
goto enoent;
if (tp + NS_INT16SZ > endp)
return (0);
*tp++ = (unsigned char)((val >> 8) & 0xff);
*tp++ = (unsigned char)(val & 0xff);
saw_xdigit = 0;
digits = 0;
val = 0;
continue;
}
if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
getv4(curtok, tp, &bits) > 0) {
tp += NS_INADDRSZ;
saw_xdigit = 0;
ipv4 = 1;
break; /* '\0' was seen by inet_pton4(). */
}
if (ch == '/' && getbits(src, &bits) > 0)
break;
goto enoent;
}
if (saw_xdigit) {
if (tp + NS_INT16SZ > endp)
goto enoent;
*tp++ = (unsigned char)((val >> 8) & 0xff);
*tp++ = (unsigned char)(val & 0xff);
}
if (bits == -1)
bits = 128;
words = (bits + 15) / 16;
if (words < 2)
words = 2;
if (ipv4)
words = 8;
endp = tmp + 2 * words;
if (colonp != NULL) {
/*
* Since some memmove()'s erroneously fail to handle
* overlapping regions, we'll do the shift by hand.
*/
const int n = (int)(tp - colonp);
int i;
if (tp == endp)
goto enoent;
for (i = 1; i <= n; i++) {
endp[- i] = colonp[n - i];
colonp[n - i] = 0;
}
tp = endp;
}
if (tp != endp)
goto enoent;
bytes = (bits + 7) / 8;
if (bytes > size)
goto emsgsize;
memcpy(dst, tmp, bytes);
return (bits);
enoent:
SET_ERRNO(ENOENT);
return (-1);
emsgsize:
SET_ERRNO(EMSGSIZE);
return (-1);
}
/*
* int
* inet_net_pton(af, src, dst, size)
* convert network number from presentation to network format.
* accepts hex octets, hex strings, decimal octets, and /CIDR.
* "size" is in bytes and describes "dst".
* return:
* number of bits, either imputed classfully or specified with /CIDR,
* or -1 if some failure occurred (check errno). ENOENT means it was
* not a valid network specification.
* note:
* On Windows we store the error in the thread errno, not
* in the winsock error code. This is to avoid loosing the
* actual last winsock error. So use macro ERRNO to fetch the
* errno this funtion sets when returning (-1), not SOCKERRNO.
* author:
* Paul Vixie (ISC), June 1996
*/
int
ares_inet_net_pton(int af, const char *src, void *dst, size_t size)
{
switch (af) {
case AF_INET:
return (inet_net_pton_ipv4(src, dst, size));
case AF_INET6:
return (inet_net_pton_ipv6(src, dst, size));
default:
SET_ERRNO(EAFNOSUPPORT);
return (-1);
}
}
#endif
#if !defined(HAVE_INET_PTON) || !defined(HAVE_INET_PTON_IPV6)
int ares_inet_pton(int af, const char *src, void *dst)
{
int size, result;
if (af == AF_INET)
size = sizeof(struct in_addr);
else if (af == AF_INET6)
size = sizeof(struct in6_addr);
else
{
SET_ERRNO(EAFNOSUPPORT);
return -1;
}
result = ares_inet_net_pton(af, src, dst, size);
if (result == -1 && ERRNO == ENOENT)
return 0;
return (result > -1 ? 1 : -1);
}
#endif

31
ares/inet_net_pton.h Normal file
View File

@@ -0,0 +1,31 @@
#ifndef __ARES_INET_NET_PTON_H
#define __ARES_INET_NET_PTON_H
/* $Id$ */
/*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#if defined(HAVE_INET_PTON) && defined(HAVE_INET_PTON_IPV6)
#define ares_inet_pton(x,y,z) inet_pton(x,y,z)
#else
int ares_inet_pton(int af, const char *src, void *dst);
#endif
#if defined(HAVE_INET_NET_PTON) && defined(HAVE_INET_NET_PTON_IPV6)
#define ares_inet_net_pton(w,x,y,z) inet_net_pton(w,x,y,z)
#else
int ares_inet_net_pton(int af, const char *src, void *dst, size_t size);
#endif
#endif /* __ARES_INET_NET_PTON_H */

231
ares/inet_ntop.c Normal file
View File

@@ -0,0 +1,231 @@
/* $Id$ */
/* Copyright (c) 1996 by Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
* ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
* CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*/
#include "setup.h"
#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
#else
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_ARPA_NAMESER_H
#include <arpa/nameser.h>
#endif
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#endif
#include <ctype.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "ares_ipv6.h"
#include "inet_ntop.h"
#if !defined(HAVE_INET_NTOP) || !defined(HAVE_INET_NTOP_IPV6)
#ifdef SPRINTF_CHAR
# define SPRINTF(x) strlen(sprintf/**/x)
#else
# define SPRINTF(x) ((size_t)sprintf x)
#endif
/*
* WARNING: Don't even consider trying to compile this on a system where
* sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
*/
static const char *inet_ntop4(const unsigned char *src, char *dst, size_t size);
static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size);
/* char *
* inet_ntop(af, src, dst, size)
* convert a network format address to presentation format.
* return:
* pointer to presentation format address (`dst'), or NULL (see errno).
* note:
* On Windows we store the error in the thread errno, not
* in the winsock error code. This is to avoid loosing the
* actual last winsock error. So use macro ERRNO to fetch the
* errno this funtion sets when returning NULL, not SOCKERRNO.
* author:
* Paul Vixie, 1996.
*/
const char *
ares_inet_ntop(int af, const void *src, char *dst, size_t size)
{
switch (af)
{
case AF_INET:
return (inet_ntop4(src, dst, size));
case AF_INET6:
return (inet_ntop6(src, dst, size));
default:
SET_ERRNO(EAFNOSUPPORT);
return (NULL);
}
/* NOTREACHED */
}
/* const char *
* inet_ntop4(src, dst, size)
* format an IPv4 address, more or less like inet_ntoa()
* return:
* `dst' (as a const)
* notes:
* (1) uses no statics
* (2) takes a unsigned char* not an in_addr as input
* author:
* Paul Vixie, 1996.
*/
static const char *
inet_ntop4(const unsigned char *src, char *dst, size_t size)
{
static const char fmt[] = "%u.%u.%u.%u";
char tmp[sizeof "255.255.255.255"];
if (SPRINTF((tmp, fmt, src[0], src[1], src[2], src[3])) > size)
{
SET_ERRNO(ENOSPC);
return (NULL);
}
strcpy(dst, tmp);
return (dst);
}
/* const char *
* inet_ntop6(src, dst, size)
* convert IPv6 binary address into presentation (printable) format
* author:
* Paul Vixie, 1996.
*/
static const char *
inet_ntop6(const unsigned char *src, char *dst, size_t size)
{
/*
* Note that int32_t and int16_t need only be "at least" large enough
* to contain a value of the specified size. On some systems, like
* Crays, there is no such thing as an integer variable with 16 bits.
* Keep this in mind if you think this function should have been coded
* to use pointer overlays. All the world's not a VAX.
*/
char tmp[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
char *tp;
struct {
long base;
long len;
} best, cur;
unsigned long words[NS_IN6ADDRSZ / NS_INT16SZ];
int i;
/*
* Preprocess:
* Copy the input (bytewise) array into a wordwise array.
* Find the longest run of 0x00's in src[] for :: shorthanding.
*/
memset(words, '\0', sizeof(words));
for (i = 0; i < NS_IN6ADDRSZ; i++)
words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3));
best.base = -1;
cur.base = -1;
best.len = 0;
cur.len = 0;
for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
{
if (words[i] == 0)
{
if (cur.base == -1)
cur.base = i, cur.len = 1;
else
cur.len++;
}
else
{
if (cur.base != -1)
{
if (best.base == -1 || cur.len > best.len)
best = cur;
cur.base = -1;
}
}
}
if (cur.base != -1)
{
if (best.base == -1 || cur.len > best.len)
best = cur;
}
if (best.base != -1 && best.len < 2)
best.base = -1;
/*
* Format the result.
*/
tp = tmp;
for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
{
/* Are we inside the best run of 0x00's? */
if (best.base != -1 && i >= best.base &&
i < (best.base + best.len))
{
if (i == best.base)
*tp++ = ':';
continue;
}
/* Are we following an initial run of 0x00s or any real hex? */
if (i != 0)
*tp++ = ':';
/* Is this address an encapsulated IPv4? */
if (i == 6 && best.base == 0 &&
(best.len == 6 || (best.len == 5 && words[5] == 0xffff)))
{
if (!inet_ntop4(src+12, tp, sizeof(tmp) - (tp - tmp)))
return (NULL);
tp += strlen(tp);
break;
}
tp += SPRINTF((tp, "%lx", words[i]));
}
/* Was it a trailing run of 0x00's? */
if (best.base != -1 && (best.base + best.len) == (NS_IN6ADDRSZ / NS_INT16SZ))
*tp++ = ':';
*tp++ = '\0';
/*
* Check for overflow, copy, and we're done.
*/
if ((size_t)(tp - tmp) > size)
{
SET_ERRNO(ENOSPC);
return (NULL);
}
strcpy(dst, tmp);
return (dst);
}
#endif

26
ares/inet_ntop.h Normal file
View File

@@ -0,0 +1,26 @@
#ifndef __ARES_INET_NTOP_H
#define __ARES_INET_NTOP_H
/* $Id$ */
/*
* Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#if defined(HAVE_INET_NTOP) && defined(HAVE_INET_NTOP_IPV6)
#define ares_inet_ntop(w,x,y,z) inet_ntop(w,x,y,z)
#else
const char *ares_inet_ntop(int af, const void *src, char *dst, size_t size);
#endif
#endif /* __ARES_INET_NTOP_H */

View File

@@ -12,6 +12,27 @@ if(!-f "ares.h") {
exit;
}
my ($major, $minor, $patch)=split(/\./, $version);
$major += 0;
$minor += 0;
$patch += 0;
open(VER, "<ares_version.h") ||
die "can't open ares_version.h";
open(NEWV, ">ares_version.h.dist");
while(<VER>) {
$_ =~ s/^\#define ARES_VERSION_MAJOR .*/\#define ARES_VERSION_MAJOR $major/;
$_ =~ s/^\#define ARES_VERSION_MINOR .*/\#define ARES_VERSION_MINOR $minor/;
$_ =~ s/^\#define ARES_VERSION_PATCH .*/\#define ARES_VERSION_PATCH $patch/;
$_ =~ s/^\#define ARES_VERSION_STR .*/\#define ARES_VERSION_STR \"$version\"/;
print NEWV $_;
}
close(VER);
close(NEWV);
print "ares_version.h.dist created\n";
if(!-f "configure") {
print "running buildconf\n";
`./buildconf`;

View File

@@ -1,3 +1,5 @@
/* $Id$ */
#ifndef ARES_NAMESER_H
#define ARES_NAMESER_H
@@ -5,7 +7,9 @@
port build */
#ifndef NETWARE
#ifndef __CYGWIN__
#include <windows.h>
#endif
#include <process.h> /* for the _getpid() proto */
#endif /* !NETWARE */
#include <sys/types.h>
@@ -14,9 +18,6 @@
#define MAXHOSTNAMELEN 256
#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
/* Structure for scatter/gather I/O. */
struct iovec
{
@@ -24,7 +25,9 @@ struct iovec
size_t iov_len; /* Length of data. */
};
#ifndef __WATCOMC__
#define getpid() _getpid()
#endif
int ares_writev (SOCKET s, const struct iovec *vector, size_t count);
#define writev(s,vect,count) ares_writev(s,vect,count)
@@ -37,7 +40,9 @@ int ares_gettimeofday(struct timeval *tv, struct timezone *tz);
#endif /* !NETWARE */
#define NS_CMPRSFLGS 0xc0
#define NS_IN6ADDRSZ 16
#define NS_INT16SZ 2
#define NS_INADDRSZ 4
/* Flag bits indicating name compression. */
#define INDIR_MASK NS_CMPRSFLGS

View File

@@ -1,7 +1,9 @@
#ifndef ARES_SETUP_H
#define ARES_SETUP_H
#ifndef __ARES_SETUP_H
#define __ARES_SETUP_H
/* Copyright (C) 2004 by Daniel Stenberg et al
/* $Id$ */
/* Copyright (C) 2004 - 2005 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
@@ -14,16 +16,99 @@
* without express or implied warranty.
*/
#if !defined(WIN32) && defined(__WIN32__)
/* Borland fix */
#define WIN32
#endif
#if !defined(WIN32) && defined(_WIN32)
/* VS2005 on x64 fix */
#define WIN32
#endif
/*
* Include configuration script results or hand-crafted
* configuration file for platforms which lack config tool.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#else
/* simple work-around for now, for systems without configure support */
#ifdef WIN32
#include "config-win32.h"
#endif
#endif /* HAVE_CONFIG_H */
/*
* Include header files for windows builds before redefining anything.
* Use this preproessor block only to include or exclude windows.h,
* winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs
* to any other further and independant block. Under Cygwin things work
* just as under linux (e.g. <sys/socket.h>) and the winsock headers should
* never be included when __CYGWIN__ is defined. configure script takes
* care of this, not defining HAVE_WINDOWS_H, HAVE_WINSOCK_H, HAVE_WINSOCK2_H,
* neither HAVE_WS2TCPIP_H when __CYGWIN__ is defined.
*/
#ifdef HAVE_WINDOWS_H
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
# endif
# include <windows.h>
# ifdef HAVE_WINSOCK2_H
# include <winsock2.h>
# ifdef HAVE_WS2TCPIP_H
# include <ws2tcpip.h>
# endif
# else
# ifdef HAVE_WINSOCK_H
# include <winsock.h>
# endif
# endif
#endif
/*
* Define USE_WINSOCK to 2 if we have and use WINSOCK2 API, else
* define USE_WINSOCK to 1 if we have and use WINSOCK API, else
* undefine USE_WINSOCK.
*/
#undef USE_WINSOCK
#ifdef HAVE_WINSOCK2_H
# define USE_WINSOCK 2
#else
# ifdef HAVE_WINSOCK_H
# define USE_WINSOCK 1
# endif
#endif
/*
* Work-arounds for systems without configure support
*/
#ifndef HAVE_CONFIG_H
#if defined(__DJGPP__) || (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \
defined(__POCC__)
#else
#define ssize_t int
#endif
/* Recent autoconf versions define these symbols in config.h. We don't want
them (since they collide with the libcurl ones when we build
--enable-debug) so we undef them again here. */
#ifndef HAVE_WS2TCPIP_H
#define socklen_t int
#endif
#endif /* HAVE_CONFIG_H */
/*
* Recent autoconf versions define these symbols in config.h. We don't
* want them (since they collide with the libcurl ones when we build
* --enable-debug) so we undef them again here.
*/
#undef PACKAGE_STRING
#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION
@@ -32,9 +117,11 @@
#undef VERSION
#undef PACKAGE
/* now typedef our socket type */
#if defined(WIN32) && !defined(WATT32)
#include <winsock.h>
/*
* Typedef our socket type
*/
#ifdef USE_WINSOCK
typedef SOCKET ares_socket_t;
#define ARES_SOCKET_BAD INVALID_SOCKET
#else
@@ -42,14 +129,16 @@ typedef int ares_socket_t;
#define ARES_SOCKET_BAD -1
#endif
/* Assume a few thing unless they're set by configure
/*
* Assume a few thing unless they're set by configure
*/
#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER)
#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__)
#define HAVE_SYS_TIME_H
#endif
#if !defined(HAVE_UNISTD_H) && !defined(_MSC_VER)
#define HAVE_UNISTD_H
#define HAVE_UNISTD_H 1
#endif
#if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS)
@@ -57,7 +146,7 @@ typedef int ares_socket_t;
#endif
#if (defined(WIN32) || defined(WATT32)) && \
!(defined(__MINGW32__) || defined(NETWARE))
!(defined(__MINGW32__) || defined(NETWARE) || defined(__DJGPP__))
/* protos for the functions we provide in windows_port.c */
int ares_strncasecmp(const char *s1, const char *s2, int n);
int ares_strcasecmp(const char *s1, const char *s2);
@@ -69,4 +158,21 @@ int ares_strcasecmp(const char *s1, const char *s2);
#define strcasecmp(a,b) ares_strcasecmp(a,b)
#endif
#endif /* ARES_SETUP_H */
/* IPv6 compatibility */
#if !defined(HAVE_AF_INET6)
#if defined(HAVE_PF_INET6)
#define AF_INET6 PF_INET6
#else
#define AF_INET6 AF_MAX+1
#endif
#endif
/*
* Include macros and defines that should only be processed once.
*/
#ifndef __SETUP_ONCE_H
#include "setup_once.h"
#endif
#endif /* __ARES_SETUP_H */

341
ares/setup_once.h Normal file
View File

@@ -0,0 +1,341 @@
#ifndef __SETUP_ONCE_H
#define __SETUP_ONCE_H
/* $Id$ */
/* Copyright (C) 2004 - 2007 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. M.I.T. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
/********************************************************************
* NOTICE *
* ======== *
* *
* Content of header files lib/setup_once.h and ares/setup_once.h *
* must be kept in sync. Modify the other one if you change this. *
* *
********************************************************************/
/*
* Inclusion of common header files.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <ctype.h>
#include <errno.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#ifdef TIME_WITH_SYS_TIME
#include <time.h>
#endif
#else
#ifdef HAVE_TIME_H
#include <time.h>
#endif
#endif
#ifdef WIN32
#include <io.h>
#include <fcntl.h>
#endif
#ifdef HAVE_STDBOOL_H
#include <stdbool.h>
#endif
/*
* Definition of timeval struct for platforms that don't have it.
*/
#ifndef HAVE_STRUCT_TIMEVAL
struct timeval {
long tv_sec;
long tv_usec;
};
#endif
/*
* If we have the MSG_NOSIGNAL define, make sure we use
* it as the fourth argument of function send()
*/
#ifdef HAVE_MSG_NOSIGNAL
#define SEND_4TH_ARG MSG_NOSIGNAL
#else
#define SEND_4TH_ARG 0
#endif
/*
* The definitions for the return type and arguments types
* of functions recv() and send() belong and come from the
* configuration file. Do not define them in any other place.
*
* HAVE_RECV is defined if you have a function named recv()
* which is used to read incoming data from sockets. If your
* function has another name then don't define HAVE_RECV.
*
* If HAVE_RECV is defined then RECV_TYPE_ARG1, RECV_TYPE_ARG2,
* RECV_TYPE_ARG3, RECV_TYPE_ARG4 and RECV_TYPE_RETV must also
* be defined.
*
* HAVE_SEND is defined if you have a function named send()
* which is used to write outgoing data on a connected socket.
* If yours has another name then don't define HAVE_SEND.
*
* If HAVE_SEND is defined then SEND_TYPE_ARG1, SEND_QUAL_ARG2,
* SEND_TYPE_ARG2, SEND_TYPE_ARG3, SEND_TYPE_ARG4 and
* SEND_TYPE_RETV must also be defined.
*/
#ifdef HAVE_RECV
#if !defined(RECV_TYPE_ARG1) || \
!defined(RECV_TYPE_ARG2) || \
!defined(RECV_TYPE_ARG3) || \
!defined(RECV_TYPE_ARG4) || \
!defined(RECV_TYPE_RETV)
/* */
Error Missing_definition_of_return_and_arguments_types_of_recv
/* */
#else
#define sread(x,y,z) (ssize_t)recv((RECV_TYPE_ARG1)(x), \
(RECV_TYPE_ARG2)(y), \
(RECV_TYPE_ARG3)(z), \
(RECV_TYPE_ARG4)(0))
#endif
#else /* HAVE_RECV */
#ifndef sread
/* */
Error Missing_definition_of_macro_sread
/* */
#endif
#endif /* HAVE_RECV */
#ifdef HAVE_SEND
#if !defined(SEND_TYPE_ARG1) || \
!defined(SEND_QUAL_ARG2) || \
!defined(SEND_TYPE_ARG2) || \
!defined(SEND_TYPE_ARG3) || \
!defined(SEND_TYPE_ARG4) || \
!defined(SEND_TYPE_RETV)
/* */
Error Missing_definition_of_return_and_arguments_types_of_send
/* */
#else
#define swrite(x,y,z) (ssize_t)send((SEND_TYPE_ARG1)(x), \
(SEND_TYPE_ARG2)(y), \
(SEND_TYPE_ARG3)(z), \
(SEND_TYPE_ARG4)(SEND_4TH_ARG))
#endif
#else /* HAVE_SEND */
#ifndef swrite
/* */
Error Missing_definition_of_macro_swrite
/* */
#endif
#endif /* HAVE_SEND */
/*
* Uppercase macro versions of ANSI/ISO is*() functions/macros which
* avoid negative number inputs with argument byte codes > 127.
*/
#define ISSPACE(x) (isspace((int) ((unsigned char)x)))
#define ISDIGIT(x) (isdigit((int) ((unsigned char)x)))
#define ISALNUM(x) (isalnum((int) ((unsigned char)x)))
#define ISXDIGIT(x) (isxdigit((int) ((unsigned char)x)))
#define ISGRAPH(x) (isgraph((int) ((unsigned char)x)))
#define ISALPHA(x) (isalpha((int) ((unsigned char)x)))
#define ISPRINT(x) (isprint((int) ((unsigned char)x)))
#define ISUPPER(x) (isupper((int) ((unsigned char)x)))
#define ISLOWER(x) (islower((int) ((unsigned char)x)))
#define ISBLANK(x) (int)((((unsigned char)x) == ' ') || \
(((unsigned char)x) == '\t'))
/*
* Typedef to 'unsigned char' if bool is not an available 'typedefed' type.
*/
#ifndef HAVE_BOOL_T
typedef unsigned char bool;
#define HAVE_BOOL_T
#endif
/*
* Default definition of uppercase TRUE and FALSE.
*/
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
/*
* Typedef to 'int' if sig_atomic_t is not an available 'typedefed' type.
*/
#ifndef HAVE_SIG_ATOMIC_T
typedef int sig_atomic_t;
#define HAVE_SIG_ATOMIC_T
#endif
/*
* Convenience SIG_ATOMIC_T definition
*/
#ifdef HAVE_SIG_ATOMIC_T_VOLATILE
#define SIG_ATOMIC_T static sig_atomic_t
#else
#define SIG_ATOMIC_T static volatile sig_atomic_t
#endif
/*
* Default return type for signal handlers.
*/
#ifndef RETSIGTYPE
#define RETSIGTYPE void
#endif
/*
* Macro used to include code only in debug builds.
*/
#ifdef CURLDEBUG
#define DEBUGF(x) x
#else
#define DEBUGF(x) do { } while (0)
#endif
/*
* Macro used to include assertion code only in debug builds.
*/
#if defined(CURLDEBUG) && defined(HAVE_ASSERT_H)
#define DEBUGASSERT(x) assert(x)
#else
#define DEBUGASSERT(x) do { } while (0)
#endif
/*
* Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno
* (or equivalent) on this platform to hide platform details to code using it.
*/
#ifdef USE_WINSOCK
#define SOCKERRNO ((int)WSAGetLastError())
#define SET_SOCKERRNO(x) (WSASetLastError((int)(x)))
#else
#define SOCKERRNO (errno)
#define SET_SOCKERRNO(x) (errno = (x))
#endif
/*
* Macro ERRNO / SET_ERRNO() returns / sets the NOT *socket-related* errno
* (or equivalent) on this platform to hide platform details to code using it.
*/
#ifdef WIN32
#define ERRNO ((int)GetLastError())
#define SET_ERRNO(x) (SetLastError((DWORD)(x)))
#else
#define ERRNO (errno)
#define SET_ERRNO(x) (errno = (x))
#endif
/*
* Portable error number symbolic names defined to Winsock error codes.
*/
#ifdef USE_WINSOCK
#undef EBADF /* override definition in errno.h */
#define EBADF WSAEBADF
#undef EINTR /* override definition in errno.h */
#define EINTR WSAEINTR
#undef EINVAL /* override definition in errno.h */
#define EINVAL WSAEINVAL
#define EWOULDBLOCK WSAEWOULDBLOCK
#define EINPROGRESS WSAEINPROGRESS
#define EALREADY WSAEALREADY
#define ENOTSOCK WSAENOTSOCK
#define EDESTADDRREQ WSAEDESTADDRREQ
#define EMSGSIZE WSAEMSGSIZE
#define EPROTOTYPE WSAEPROTOTYPE
#define ENOPROTOOPT WSAENOPROTOOPT
#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
#define EOPNOTSUPP WSAEOPNOTSUPP
#define EPFNOSUPPORT WSAEPFNOSUPPORT
#define EAFNOSUPPORT WSAEAFNOSUPPORT
#define EADDRINUSE WSAEADDRINUSE
#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
#define ENETDOWN WSAENETDOWN
#define ENETUNREACH WSAENETUNREACH
#define ENETRESET WSAENETRESET
#define ECONNABORTED WSAECONNABORTED
#define ECONNRESET WSAECONNRESET
#define ENOBUFS WSAENOBUFS
#define EISCONN WSAEISCONN
#define ENOTCONN WSAENOTCONN
#define ESHUTDOWN WSAESHUTDOWN
#define ETOOMANYREFS WSAETOOMANYREFS
#define ETIMEDOUT WSAETIMEDOUT
#define ECONNREFUSED WSAECONNREFUSED
#define ELOOP WSAELOOP
#ifndef ENAMETOOLONG /* possible previous definition in errno.h */
#define ENAMETOOLONG WSAENAMETOOLONG
#endif
#define EHOSTDOWN WSAEHOSTDOWN
#define EHOSTUNREACH WSAEHOSTUNREACH
#ifndef ENOTEMPTY /* possible previous definition in errno.h */
#define ENOTEMPTY WSAENOTEMPTY
#endif
#define EPROCLIM WSAEPROCLIM
#define EUSERS WSAEUSERS
#define EDQUOT WSAEDQUOT
#define ESTALE WSAESTALE
#define EREMOTE WSAEREMOTE
#endif
#endif /* __SETUP_ONCE_H */

View File

@@ -1,213 +0,0 @@
# Microsoft Developer Studio Generated NMAKE File, Based on adig.dsp
!IF "$(CFG)" == ""
CFG=adig - Win32 Debug
!MESSAGE No configuration specified. Defaulting to adig - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "adig - Win32 Release" && "$(CFG)" != "adig - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "adig.mak" CFG="adig - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "adig - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "adig - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "adig - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\adig.exe"
!ELSE
ALL : "areslib - Win32 Release" "$(OUTDIR)\adig.exe"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"areslib - Win32 ReleaseCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\adig.obj"
-@erase "$(INTDIR)\getopt.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\adig.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\adig.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\adig.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=wsock32.lib areslib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\adig.pdb" /machine:I386 /out:"$(OUTDIR)\adig.exe" /libpath:"..\areslib\Release"
LINK32_OBJS= \
"$(INTDIR)\adig.obj" \
"$(INTDIR)\getopt.obj" \
"..\areslib\Release\areslib.lib"
"$(OUTDIR)\adig.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "adig - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\adig.exe"
!ELSE
ALL : "areslib - Win32 Debug" "$(OUTDIR)\adig.exe"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"areslib - Win32 DebugCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\adig.obj"
-@erase "$(INTDIR)\getopt.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\adig.exe"
-@erase "$(OUTDIR)\adig.ilk"
-@erase "$(OUTDIR)\adig.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\adig.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\adig.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=wsock32.lib areslib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\adig.pdb" /debug /machine:I386 /out:"$(OUTDIR)\adig.exe" /pdbtype:sept /libpath:"..\areslib\Debug"
LINK32_OBJS= \
"$(INTDIR)\adig.obj" \
"$(INTDIR)\getopt.obj" \
"..\areslib\Debug\areslib.lib"
"$(OUTDIR)\adig.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("adig.dep")
!INCLUDE "adig.dep"
!ELSE
!MESSAGE Warning: cannot find "adig.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "adig - Win32 Release" || "$(CFG)" == "adig - Win32 Debug"
SOURCE=..\..\adig.c
"$(INTDIR)\adig.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\getopt.c
"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!IF "$(CFG)" == "adig - Win32 Release"
"areslib - Win32 Release" :
cd "\ARES-1.1.1\vc\areslib"
$(MAKE) /$(MAKEFLAGS) /F ".\areslib.mak" CFG="areslib - Win32 Release"
cd "..\adig"
"areslib - Win32 ReleaseCLEAN" :
cd "\ARES-1.1.1\vc\areslib"
$(MAKE) /$(MAKEFLAGS) /F ".\areslib.mak" CFG="areslib - Win32 Release" RECURSE=1 CLEAN
cd "..\adig"
!ELSEIF "$(CFG)" == "adig - Win32 Debug"
"areslib - Win32 Debug" :
cd "\ARES-1.1.1\vc\areslib"
$(MAKE) /$(MAKEFLAGS) /F ".\areslib.mak" CFG="areslib - Win32 Debug"
cd "..\adig"
"areslib - Win32 DebugCLEAN" :
cd "\ARES-1.1.1\vc\areslib"
$(MAKE) /$(MAKEFLAGS) /F ".\areslib.mak" CFG="areslib - Win32 Debug" RECURSE=1 CLEAN
cd "..\adig"
!ENDIF
!ENDIF

View File

@@ -1,77 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: areslib - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\liren\LOCALS~1\Temp\RSP615A.tmp" with contents
[
/nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"Release/areslib.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
"Z:\ARES-1.1.1\ares_gethostbyname.c"
"Z:\ARES-1.1.1\ares_init.c"
]
Creating command line "cl.exe @C:\DOCUME~1\liren\LOCALS~1\Temp\RSP615A.tmp"
Creating temporary file "C:\DOCUME~1\liren\LOCALS~1\Temp\RSP615B.tmp" with contents
[
/nologo /out:"Release\areslib.lib"
".\Release\ares__close_sockets.obj"
".\Release\ares__get_hostent.obj"
".\Release\ares__read_line.obj"
".\Release\ares_destroy.obj"
".\Release\ares_expand_name.obj"
".\Release\ares_fds.obj"
".\Release\ares_free_errmem.obj"
".\Release\ares_free_hostent.obj"
".\Release\ares_free_string.obj"
".\Release\ares_gethostbyaddr.obj"
".\Release\ares_gethostbyname.obj"
".\Release\ares_init.obj"
".\Release\ares_mkquery.obj"
".\Release\ares_parse_a_reply.obj"
".\Release\ares_parse_ptr_reply.obj"
".\Release\ares_process.obj"
".\Release\ares_query.obj"
".\Release\ares_search.obj"
".\Release\ares_send.obj"
".\Release\ares_strerror.obj"
".\Release\ares_timeout.obj"
".\Release\windows_port.obj"
]
Creating command line "link.exe -lib @C:\DOCUME~1\liren\LOCALS~1\Temp\RSP615B.tmp"
<h3>Output Window</h3>
Compiling...
ares_gethostbyname.c
Z:\ARES-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
ares_init.c
Z:\ARES-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
Z:\ARES-1.1.1\ares_init.c(141) : warning C4013: '_getpid' undefined; assuming extern returning int
Z:\ARES-1.1.1\ares_init.c(236) : warning C4101: 'p' : unreferenced local variable
Z:\ARES-1.1.1\ares_init.c(237) : warning C4101: 'linesize' : unreferenced local variable
Z:\ARES-1.1.1\ares_init.c(235) : warning C4101: 'fp' : unreferenced local variable
Creating library...
<h3>
--------------------Configuration: adig - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\liren\LOCALS~1\Temp\RSP615C.tmp" with contents
[
wsock32.lib areslib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"Release/adig.pdb" /machine:I386 /out:"Release/adig.exe" /libpath:"..\areslib\Release"
".\Release\adig.obj"
".\Release\getopt.obj"
"\ARES-1.1.1\vc\areslib\Release\areslib.lib"
]
Creating command line "link.exe @C:\DOCUME~1\liren\LOCALS~1\Temp\RSP615C.tmp"
<h3>Output Window</h3>
Linking...
<h3>Results</h3>
adig.exe - 0 error(s), 6 warning(s)
</pre>
</body>
</html>

View File

@@ -1,223 +0,0 @@
# Microsoft Developer Studio Generated NMAKE File, Based on ahost.dsp
!IF "$(CFG)" == ""
CFG=ahost - Win32 Debug
!MESSAGE No configuration specified. Defaulting to ahost - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "ahost - Win32 Release" && "$(CFG)" != "ahost - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "ahost.mak" CFG="ahost - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "ahost - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "ahost - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "ahost - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\ahost.exe"
!ELSE
ALL : "areslib - Win32 Release" "$(OUTDIR)\ahost.exe"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"areslib - Win32 ReleaseCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\ahost.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\ahost.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\ahost.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ahost.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=wsock32.lib areslib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ahost.pdb" /machine:I386 /out:"$(OUTDIR)\ahost.exe" /libpath:"..\areslib\Release"
LINK32_OBJS= \
"$(INTDIR)\ahost.obj" \
"..\areslib\Release\areslib.lib"
"$(OUTDIR)\ahost.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "ahost - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\ahost.exe" "$(OUTDIR)\ahost.bsc"
!ELSE
ALL : "areslib - Win32 Debug" "$(OUTDIR)\ahost.exe" "$(OUTDIR)\ahost.bsc"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"areslib - Win32 DebugCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\ahost.obj"
-@erase "$(INTDIR)\ahost.sbr"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\ahost.bsc"
-@erase "$(OUTDIR)\ahost.exe"
-@erase "$(OUTDIR)\ahost.ilk"
-@erase "$(OUTDIR)\ahost.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ahost.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ahost.bsc"
BSC32_SBRS= \
"$(INTDIR)\ahost.sbr"
"$(OUTDIR)\ahost.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
$(BSC32) @<<
$(BSC32_FLAGS) $(BSC32_SBRS)
<<
LINK32=link.exe
LINK32_FLAGS=wsock32.lib areslib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ahost.pdb" /debug /machine:I386 /out:"$(OUTDIR)\ahost.exe" /pdbtype:sept /libpath:"..\areslib\Debug"
LINK32_OBJS= \
"$(INTDIR)\ahost.obj" \
"..\areslib\Debug\areslib.lib"
"$(OUTDIR)\ahost.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("ahost.dep")
!INCLUDE "ahost.dep"
!ELSE
!MESSAGE Warning: cannot find "ahost.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "ahost - Win32 Release" || "$(CFG)" == "ahost - Win32 Debug"
SOURCE=..\..\ahost.c
!IF "$(CFG)" == "ahost - Win32 Release"
"$(INTDIR)\ahost.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "ahost - Win32 Debug"
"$(INTDIR)\ahost.obj" "$(INTDIR)\ahost.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
!IF "$(CFG)" == "ahost - Win32 Release"
"areslib - Win32 Release" :
cd "\ARES-1.1.1\vc\areslib"
$(MAKE) /$(MAKEFLAGS) /F ".\areslib.mak" CFG="areslib - Win32 Release"
cd "..\ahost"
"areslib - Win32 ReleaseCLEAN" :
cd "\ARES-1.1.1\vc\areslib"
$(MAKE) /$(MAKEFLAGS) /F ".\areslib.mak" CFG="areslib - Win32 Release" RECURSE=1 CLEAN
cd "..\ahost"
!ELSEIF "$(CFG)" == "ahost - Win32 Debug"
"areslib - Win32 Debug" :
cd "\ARES-1.1.1\vc\areslib"
$(MAKE) /$(MAKEFLAGS) /F ".\areslib.mak" CFG="areslib - Win32 Debug"
cd "..\ahost"
"areslib - Win32 DebugCLEAN" :
cd "\ARES-1.1.1\vc\areslib"
$(MAKE) /$(MAKEFLAGS) /F ".\areslib.mak" CFG="areslib - Win32 Debug" RECURSE=1 CLEAN
cd "..\ahost"
!ENDIF
!ENDIF

View File

@@ -1,16 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: ahost - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
<h3>Results</h3>
ahost.exe - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

View File

@@ -63,8 +63,8 @@ LIB32=link.exe -lib
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
@@ -97,6 +97,10 @@ SOURCE=..\..\ares__read_line.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_cancel.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_destroy.c
# End Source File
# Begin Source File
@@ -125,6 +129,10 @@ SOURCE=..\..\ares_gethostbyname.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_getsock.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_init.c
# End Source File
# Begin Source File
@@ -137,6 +145,10 @@ SOURCE=..\..\ares_parse_a_reply.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_parse_aaaa_reply.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_parse_ptr_reply.c
# End Source File
# Begin Source File
@@ -165,6 +177,22 @@ SOURCE=..\..\ares_timeout.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_version.c
# End Source File
# Begin Source File
SOURCE=..\..\bitncmp.c
# End Source File
# Begin Source File
SOURCE=..\..\inet_net_pton.c
# End Source File
# Begin Source File
SOURCE=..\..\inet_ntop.c
# End Source File
# Begin Source File
SOURCE=..\..\windows_port.c
# End Source File
# End Group
@@ -181,10 +209,30 @@ SOURCE=..\..\ares_dns.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_ipv6.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_private.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_version.h
# End Source File
# Begin Source File
SOURCE=..\..\bitncmp.h
# End Source File
# Begin Source File
SOURCE=..\..\inet_net_pton.h
# End Source File
# Begin Source File
SOURCE=..\..\inet_ntop.h
# End Source File
# Begin Source File
SOURCE=..\..\nameser.h
# End Source File
# End Group

View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "areslib"=.\areslib.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -1,351 +0,0 @@
# Microsoft Developer Studio Generated NMAKE File, Based on areslib.dsp
!IF "$(CFG)" == ""
CFG=areslib - Win32 Debug
!MESSAGE No configuration specified. Defaulting to areslib - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "areslib - Win32 Release" && "$(CFG)" != "areslib - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "areslib.mak" CFG="areslib - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "areslib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "areslib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "areslib - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\areslib.lib"
CLEAN :
-@erase "$(INTDIR)\ares__close_sockets.obj"
-@erase "$(INTDIR)\ares__get_hostent.obj"
-@erase "$(INTDIR)\ares__read_line.obj"
-@erase "$(INTDIR)\ares_destroy.obj"
-@erase "$(INTDIR)\ares_expand_name.obj"
-@erase "$(INTDIR)\ares_fds.obj"
-@erase "$(INTDIR)\ares_free_hostent.obj"
-@erase "$(INTDIR)\ares_free_string.obj"
-@erase "$(INTDIR)\ares_gethostbyaddr.obj"
-@erase "$(INTDIR)\ares_gethostbyname.obj"
-@erase "$(INTDIR)\ares_init.obj"
-@erase "$(INTDIR)\ares_mkquery.obj"
-@erase "$(INTDIR)\ares_parse_a_reply.obj"
-@erase "$(INTDIR)\ares_parse_ptr_reply.obj"
-@erase "$(INTDIR)\ares_process.obj"
-@erase "$(INTDIR)\ares_query.obj"
-@erase "$(INTDIR)\ares_search.obj"
-@erase "$(INTDIR)\ares_send.obj"
-@erase "$(INTDIR)\ares_strerror.obj"
-@erase "$(INTDIR)\ares_timeout.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\windows_port.obj"
-@erase "$(OUTDIR)\areslib.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\areslib.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\areslib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\areslib.lib"
LIB32_OBJS= \
"$(INTDIR)\ares__close_sockets.obj" \
"$(INTDIR)\ares__get_hostent.obj" \
"$(INTDIR)\ares__read_line.obj" \
"$(INTDIR)\ares_destroy.obj" \
"$(INTDIR)\ares_expand_name.obj" \
"$(INTDIR)\ares_fds.obj" \
"$(INTDIR)\ares_free_hostent.obj" \
"$(INTDIR)\ares_free_string.obj" \
"$(INTDIR)\ares_gethostbyaddr.obj" \
"$(INTDIR)\ares_gethostbyname.obj" \
"$(INTDIR)\ares_init.obj" \
"$(INTDIR)\ares_mkquery.obj" \
"$(INTDIR)\ares_parse_a_reply.obj" \
"$(INTDIR)\ares_parse_ptr_reply.obj" \
"$(INTDIR)\ares_process.obj" \
"$(INTDIR)\ares_query.obj" \
"$(INTDIR)\ares_search.obj" \
"$(INTDIR)\ares_send.obj" \
"$(INTDIR)\ares_strerror.obj" \
"$(INTDIR)\ares_timeout.obj" \
"$(INTDIR)\windows_port.obj"
"$(OUTDIR)\areslib.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ELSEIF "$(CFG)" == "areslib - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\areslib.lib"
CLEAN :
-@erase "$(INTDIR)\ares__close_sockets.obj"
-@erase "$(INTDIR)\ares__get_hostent.obj"
-@erase "$(INTDIR)\ares__read_line.obj"
-@erase "$(INTDIR)\ares_destroy.obj"
-@erase "$(INTDIR)\ares_expand_name.obj"
-@erase "$(INTDIR)\ares_fds.obj"
-@erase "$(INTDIR)\ares_free_hostent.obj"
-@erase "$(INTDIR)\ares_free_string.obj"
-@erase "$(INTDIR)\ares_gethostbyaddr.obj"
-@erase "$(INTDIR)\ares_gethostbyname.obj"
-@erase "$(INTDIR)\ares_init.obj"
-@erase "$(INTDIR)\ares_mkquery.obj"
-@erase "$(INTDIR)\ares_parse_a_reply.obj"
-@erase "$(INTDIR)\ares_parse_ptr_reply.obj"
-@erase "$(INTDIR)\ares_process.obj"
-@erase "$(INTDIR)\ares_query.obj"
-@erase "$(INTDIR)\ares_search.obj"
-@erase "$(INTDIR)\ares_send.obj"
-@erase "$(INTDIR)\ares_strerror.obj"
-@erase "$(INTDIR)\ares_timeout.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(INTDIR)\windows_port.obj"
-@erase "$(OUTDIR)\areslib.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\areslib.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\areslib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\areslib.lib"
LIB32_OBJS= \
"$(INTDIR)\ares__close_sockets.obj" \
"$(INTDIR)\ares__get_hostent.obj" \
"$(INTDIR)\ares__read_line.obj" \
"$(INTDIR)\ares_destroy.obj" \
"$(INTDIR)\ares_expand_name.obj" \
"$(INTDIR)\ares_fds.obj" \
"$(INTDIR)\ares_free_hostent.obj" \
"$(INTDIR)\ares_free_string.obj" \
"$(INTDIR)\ares_gethostbyaddr.obj" \
"$(INTDIR)\ares_gethostbyname.obj" \
"$(INTDIR)\ares_init.obj" \
"$(INTDIR)\ares_mkquery.obj" \
"$(INTDIR)\ares_parse_a_reply.obj" \
"$(INTDIR)\ares_parse_ptr_reply.obj" \
"$(INTDIR)\ares_process.obj" \
"$(INTDIR)\ares_query.obj" \
"$(INTDIR)\ares_search.obj" \
"$(INTDIR)\ares_send.obj" \
"$(INTDIR)\ares_strerror.obj" \
"$(INTDIR)\ares_timeout.obj" \
"$(INTDIR)\windows_port.obj"
"$(OUTDIR)\areslib.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("areslib.dep")
!INCLUDE "areslib.dep"
!ELSE
!MESSAGE Warning: cannot find "areslib.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "areslib - Win32 Release" || "$(CFG)" == "areslib - Win32 Debug"
SOURCE=..\..\ares__close_sockets.c
"$(INTDIR)\ares__close_sockets.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares__get_hostent.c
"$(INTDIR)\ares__get_hostent.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares__read_line.c
"$(INTDIR)\ares__read_line.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_destroy.c
"$(INTDIR)\ares_destroy.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_expand_name.c
"$(INTDIR)\ares_expand_name.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_fds.c
"$(INTDIR)\ares_fds.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_free_hostent.c
"$(INTDIR)\ares_free_hostent.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_free_string.c
"$(INTDIR)\ares_free_string.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_gethostbyaddr.c
"$(INTDIR)\ares_gethostbyaddr.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_gethostbyname.c
"$(INTDIR)\ares_gethostbyname.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_init.c
"$(INTDIR)\ares_init.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_mkquery.c
"$(INTDIR)\ares_mkquery.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_parse_a_reply.c
"$(INTDIR)\ares_parse_a_reply.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_parse_ptr_reply.c
"$(INTDIR)\ares_parse_ptr_reply.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_process.c
"$(INTDIR)\ares_process.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_query.c
"$(INTDIR)\ares_query.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_search.c
"$(INTDIR)\ares_search.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_send.c
"$(INTDIR)\ares_send.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_strerror.c
"$(INTDIR)\ares_strerror.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\ares_timeout.c
"$(INTDIR)\ares_timeout.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\windows_port.c
"$(INTDIR)\windows_port.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF

View File

@@ -1,125 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: areslib - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\liren\LOCALS~1\Temp\RSP603D.tmp" with contents
[
/nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"Release/areslib.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
"Z:\ares-1.1.1\ares__close_sockets.c"
"Z:\ares-1.1.1\ares__get_hostent.c"
"Z:\ares-1.1.1\ares__read_line.c"
"Z:\ares-1.1.1\ares_destroy.c"
"Z:\ares-1.1.1\ares_expand_name.c"
"Z:\ares-1.1.1\ares_fds.c"
"Z:\ares-1.1.1\ares_free_errmem.c"
"Z:\ares-1.1.1\ares_free_hostent.c"
"Z:\ares-1.1.1\ares_free_string.c"
"Z:\ares-1.1.1\ares_gethostbyaddr.c"
"Z:\ares-1.1.1\ares_gethostbyname.c"
"Z:\ares-1.1.1\ares_init.c"
"Z:\ares-1.1.1\ares_mkquery.c"
"Z:\ares-1.1.1\ares_parse_a_reply.c"
"Z:\ares-1.1.1\ares_parse_ptr_reply.c"
"Z:\ares-1.1.1\ares_process.c"
"Z:\ares-1.1.1\ares_query.c"
"Z:\ares-1.1.1\ares_search.c"
"Z:\ares-1.1.1\ares_send.c"
"Z:\ares-1.1.1\ares_strerror.c"
"Z:\ares-1.1.1\ares_timeout.c"
"Z:\ares-1.1.1\windows_port.c"
]
Creating command line "cl.exe @C:\DOCUME~1\liren\LOCALS~1\Temp\RSP603D.tmp"
Creating temporary file "C:\DOCUME~1\liren\LOCALS~1\Temp\RSP603E.tmp" with contents
[
/nologo /out:"Release\areslib.lib"
".\Release\ares__close_sockets.obj"
".\Release\ares__get_hostent.obj"
".\Release\ares__read_line.obj"
".\Release\ares_destroy.obj"
".\Release\ares_expand_name.obj"
".\Release\ares_fds.obj"
".\Release\ares_free_errmem.obj"
".\Release\ares_free_hostent.obj"
".\Release\ares_free_string.obj"
".\Release\ares_gethostbyaddr.obj"
".\Release\ares_gethostbyname.obj"
".\Release\ares_init.obj"
".\Release\ares_mkquery.obj"
".\Release\ares_parse_a_reply.obj"
".\Release\ares_parse_ptr_reply.obj"
".\Release\ares_process.obj"
".\Release\ares_query.obj"
".\Release\ares_search.obj"
".\Release\ares_send.obj"
".\Release\ares_strerror.obj"
".\Release\ares_timeout.obj"
".\Release\windows_port.obj"
]
Creating command line "link.exe -lib @C:\DOCUME~1\liren\LOCALS~1\Temp\RSP603E.tmp"
<h3>Output Window</h3>
Compiling...
ares__close_sockets.c
Z:\ares-1.1.1\ares__close_sockets.c(46) : warning C4013: 'close' undefined; assuming extern returning int
ares__get_hostent.c
ares__read_line.c
ares_destroy.c
ares_expand_name.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
ares_fds.c
ares_free_errmem.c
ares_free_hostent.c
ares_free_string.c
ares_gethostbyaddr.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
ares_gethostbyname.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
ares_init.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
Z:\ares-1.1.1\ares_init.c(141) : warning C4013: '_getpid' undefined; assuming extern returning int
Z:\ares-1.1.1\ares_init.c(236) : warning C4101: 'p' : unreferenced local variable
Z:\ares-1.1.1\ares_init.c(237) : warning C4101: 'linesize' : unreferenced local variable
Z:\ares-1.1.1\ares_init.c(235) : warning C4101: 'fp' : unreferenced local variable
ares_mkquery.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
ares_parse_a_reply.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
Z:\ares-1.1.1\ares_parse_a_reply.c(90) : warning C4018: '<' : signed/unsigned mismatch
ares_parse_ptr_reply.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
Z:\ares-1.1.1\ares_parse_ptr_reply.c(71) : warning C4018: '<' : signed/unsigned mismatch
ares_process.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
ares_query.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
ares_search.c
Z:\ares-1.1.1\ares_search.c(229) : warning C4013: 'strncasecmp' undefined; assuming extern returning int
ares_send.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
ares_strerror.c
ares_timeout.c
windows_port.c
Z:\ares-1.1.1\nameser.h(153) : warning C4005: 'NOERROR' : macro redefinition
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\winerror.h(8022) : see previous definition of 'NOERROR'
Creating library...
<h3>Results</h3>
areslib.lib - 0 error(s), 19 warning(s)
</pre>
</body>
</html>

View File

@@ -1,5 +1,7 @@
#include "setup.h"
/* $Id$ */
/* only do the following on windows
*/
#if (defined(WIN32) || defined(WATT32)) && !defined(MSDOS)
@@ -18,6 +20,20 @@
#include "ares.h"
#include "ares_private.h"
#ifdef __WATCOMC__
/*
* Watcom needs a DllMain() in order to initialise the clib startup code.
*/
BOOL
WINAPI DllMain (HINSTANCE hnd, DWORD reason, LPVOID reserved)
{
(void) hnd;
(void) reason;
(void) reserved;
return (TRUE);
}
#endif
#ifndef __MINGW32__
int
ares_strncasecmp(const char *a, const char *b, int n)
@@ -25,8 +41,8 @@ ares_strncasecmp(const char *a, const char *b, int n)
int i;
for (i = 0; i < n; i++) {
int c1 = isupper(a[i]) ? tolower(a[i]) : a[i];
int c2 = isupper(b[i]) ? tolower(b[i]) : b[i];
int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i];
int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i];
if (c1 != c2) return c1-c2;
}
return 0;
@@ -39,28 +55,34 @@ ares_strcasecmp(const char *a, const char *b)
}
#endif
/*
* Number of micro-seconds between the beginning of the Windows epoch
* (Jan. 1, 1601) and the Unix epoch (Jan. 1, 1970).
*/
#if defined(_MSC_VER) || defined(__WATCOMC__)
#define EPOCH_FILETIME 11644473600000000Ui64
#else
#define EPOCH_FILETIME 11644473600000000ULL
#endif
int
ares_gettimeofday(struct timeval *tv, struct timezone *tz)
{
FILETIME ft;
LARGE_INTEGER li;
__int64 t;
static int tzflag;
if (tv)
{
GetSystemTimeAsFileTime(&ft);
li.LowPart = ft.dwLowDateTime;
li.HighPart = ft.dwHighDateTime;
t = li.QuadPart; /* In 100-nanosecond intervals */
#if 0
t -= EPOCHFILETIME; /* Offset to the Epoch time */
#endif
t /= 10; /* In microseconds */
t = li.QuadPart / 10; /* In micro-second intervals */
t -= EPOCH_FILETIME; /* Offset to the Epoch time */
tv->tv_sec = (long)(t / 1000000);
tv->tv_usec = (long)(t % 1000000);
}
(void) tz;
return 0;
}
@@ -83,7 +105,7 @@ ares_writev (ares_socket_t s, const struct iovec *vector, size_t count)
buffer = bp = (char*) alloca (bytes);
if (!buffer)
{
errno = ENOMEM;
SET_ERRNO(ENOMEM);
return (-1);
}
@@ -94,6 +116,6 @@ ares_writev (ares_socket_t s, const struct iovec *vector, size_t count)
memcpy (bp, vector[i].iov_base, vector[i].iov_len);
bp += vector[i].iov_len;
}
return send (s, (const void*)buffer, bytes, 0);
return (int)swrite(s, buffer, bytes);
}
#endif /* WIN32 builds only */

View File

@@ -1,4 +1,26 @@
#!/bin/sh
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at http://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# $Id$
###########################################################################
die(){
echo "$@"
@@ -13,7 +35,8 @@ findtool(){
IFS=":"
for path in $PATH
do
if test -r "$path/$file"; then
# echo "checks for $file in $path" >&2
if test -f "$path/$file"; then
echo "$path/$file"
return
fi
@@ -24,7 +47,7 @@ findtool(){
# autoconf 2.57 or newer
#
need_autoconf="2.57"
ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|head -1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|head -n 1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
if test -z "$ac_version"; then
echo "buildconf: autoconf not found."
echo " You need autoconf version $need_autoconf or newer installed."
@@ -45,7 +68,7 @@ echo "buildconf: autoconf version $ac_version (ok)"
#--------------------------------------------------------------------------
# autoheader 2.50 or newer
#
ah_version=`${AUTOHEADER:-autoheader} --version 2>/dev/null|head -1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
ah_version=`${AUTOHEADER:-autoheader} --version 2>/dev/null|head -n 1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
if test -z "$ah_version"; then
echo "buildconf: autoheader not found."
echo " You need autoheader version 2.50 or newer installed."
@@ -67,7 +90,7 @@ echo "buildconf: autoheader version $ah_version (ok)"
# automake 1.7 or newer
#
need_automake="1.7"
am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|head -n 1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
if test -z "$am_version"; then
echo "buildconf: automake not found."
echo " You need automake version $need_automake or newer installed."
@@ -85,6 +108,13 @@ fi
echo "buildconf: automake version $am_version (ok)"
ac=`findtool ${ACLOCAL:-aclocal}`
if test -z "$ac"; then
echo "buildconf: aclocal not found. Weird automake installation!"
exit 1
else
echo "buildconf: aclocal found"
fi
#--------------------------------------------------------------------------
# libtool check
@@ -99,13 +129,18 @@ LIBTOOL_WANTED_VERSION=1.4.2
# glibtool, with 'libtool' being something completely different.
libtool=`findtool glibtool 2>/dev/null`
if test ! -x "$libtool"; then
libtool=`findtool libtool`
libtool=`findtool ${LIBTOOL:-libtool}`
fi
# set the LIBTOOLIZE here so that glibtoolize is used if glibtool was found
LIBTOOLIZE="${libtool}ize"
if test -z "$LIBTOOLIZE"; then
# set the LIBTOOLIZE here so that glibtoolize is used if glibtool was found
# $libtool is already the full path
libtoolize="${libtool}ize"
else
libtoolize=`findtool $LIBTOOLIZE`
fi
lt_pversion=`$libtool --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//g' -e 's/[- ].*//'`
lt_pversion=`$libtool --version 2>/dev/null|head -n 2|sed -e 's/^[^0-9]*//g' -e 's/[- ].*//'`
if test -z "$lt_pversion"; then
echo "buildconf: libtool not found."
echo " You need libtool version $LIBTOOL_WANTED_VERSION or newer installed"
@@ -142,10 +177,17 @@ fi
echo "buildconf: libtool version $lt_version (ok)"
if test -f "$libtoolize"; then
echo "buildconf: libtoolize found"
else
echo "buildconf: libtoolize not found. Weird libtool installation!"
exit 1
fi
#--------------------------------------------------------------------------
# m4 check
#
m4=`${M4:-m4} --version 2>/dev/null|head -1`;
m4=`${M4:-m4} --version 2>/dev/null|head -n 1`;
m4_version=`echo $m4 | sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
if { echo $m4 | grep "GNU" >/dev/null 2>&1; } then
@@ -155,33 +197,42 @@ else
exit 1
fi
#--------------------------------------------------------------------------
# perl check
#
PERL=`findtool ${PERL:-perl}`
# ------------------------------------------------------------
# run the correct scripts now
echo "buildconf: running libtoolize"
${LIBTOOLIZE:-libtoolize} --copy --automake --force || die "The libtool command failed"
$libtoolize --copy --automake --force || die "The libtoolize command failed"
echo "buildconf: running aclocal"
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS || die "The aclocal command line failed"
echo "buildconf: running aclocal hack to convert all mv to mv -f"
perl -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4
if test -n "$PERL"; then
echo "buildconf: running aclocal hack to convert all mv to mv -f"
$PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4
else
echo "buildconf: perl not found"
exit 1
fi
echo "buildconf: running autoheader"
${AUTOHEADER:-autoheader} || die "The autoheader command failed"
echo "buildconf: cp lib/config.h.in src/config.h.in"
cp lib/config.h.in src/config.h.in
echo "buildconf: running autoconf"
${AUTOCONF:-autoconf} || die "The autoconf command failed"
if test -d ares; then
cd ares
echo "buildconf: running aclocal in the ares directory"
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS || die "The ares aclocal command failed"
echo "buildconf: running autoconf in the ares directory"
${AUTOCONF:-autoconf} || die "The ares autoconf command failed"
echo "buildconf: running in ares"
./buildconf
cd ..
fi
echo "buildconf: running automake"
${AUTOMAKE:-automake} -a || die "The automake command failed"
${AUTOMAKE:-automake} -a -c || die "The automake command failed"
echo "buildconf: OK"
exit 0

View File

@@ -5,7 +5,6 @@ REM $Date$
REM create ca-bundle.h
echo /* This file is generated automatically */ >lib\ca-bundle.h
echo #define CURL_CA_BUNDLE getenv("CURL_CA_BUNDLE") >>lib\ca-bundle.h
REM create hugehelp.c
copy src\hugehelp.c.cvs src\hugehelp.c

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,30 @@
#! /bin/sh
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 2001 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at http://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# $Id$
###########################################################################
#
# The idea to this kind of setup info script was stolen from numerous
# other packages, such as neon, libxml and gnome.
#
# $Id$
#
prefix=@prefix@
exec_prefix=@exec_prefix@
includedir=@includedir@
@@ -19,7 +39,9 @@ Available values for OPTION include:
--ca ca bundle install path
--cc compiler
--cflags pre-processor and compiler flags
--feature newline separated list of enabled features
--checkfor [version] check for (lib)curl of the specified version
--features newline separated list of enabled features
--protocols newline separated list of enabled protocols
--help display this help and exit
--libs library linking information
--prefix curl install prefix
@@ -45,19 +67,22 @@ while test $# -gt 0; do
case "$1" in
--ca)
echo @CURL_CA_BUNDLE@
echo "@CURL_CA_BUNDLE@"
;;
--cc)
echo @CC@
echo "@CC@"
;;
--prefix)
echo $prefix
echo "$prefix"
;;
--feature)
if test "@OPENSSL_ENABLED@" = "1"; then
--feature|--features)
if test "@USE_SSLEAY@" = "1"; then
echo "SSL"
NTLM=1 # OpenSSL implies NTLM
elif test -n "@USE_GNUTLS@"; then
echo "SSL"
fi
if test "@KRB4_ENABLED@" = "1"; then
@@ -69,37 +94,75 @@ while test $# -gt 0; do
if test "@HAVE_LIBZ@" = "1"; then
echo "libz"
fi
if test "@CURL_DISABLE_HTTP@" = "1"; then
echo "HTTP-disabled"
fi
if test "@CURL_DISABLE_FTP@" = "1"; then
echo "FTP-disabled"
fi
if test "@CURL_DISABLE_GOPHER@" = "1"; then
echo "GOPHER-disabled"
fi
if test "@CURL_DISABLE_FILE@" = "1"; then
echo "FILE-disabled"
fi
if test "@CURL_DISABLE_TELNET@" = "1"; then
echo "TELNET-disabled"
fi
if test "@CURL_DISABLE_LDAP@" = "1"; then
echo "LDAP-disabled"
fi
if test "@CURL_DISABLE_DICT@" = "1"; then
echo "DICT-disabled"
fi
if test "@HAVE_ARES@" = "1"; then
echo "AsynchDNS"
fi
if test "@IDN_ENABLED@" = "1"; then
echo "IDN"
fi
if test "@USE_WINDOWS_SSPI@" = "1"; then
echo "SSPI"
NTLM=1
fi
if test "$NTLM" = "1"; then
echo "NTLM"
fi
;;
--protocols)
if test "@CURL_DISABLE_HTTP@" != "1"; then
echo "HTTP"
if test "@USE_SSLEAY@" = "1"; then
echo "HTTPS"
fi
fi
if test "@CURL_DISABLE_FTP@" != "1"; then
echo "FTP"
if test "@USE_SSLEAY@" = "1"; then
echo "FTPS"
fi
fi
if test "@CURL_DISABLE_FILE@" != "1"; then
echo "FILE"
fi
if test "@CURL_DISABLE_TELNET@" != "1"; then
echo "TELNET"
fi
if test "@CURL_DISABLE_LDAP@" != "1"; then
echo "LDAP"
fi
if test "@CURL_DISABLE_DICT@" != "1"; then
echo "DICT"
fi
if test "@CURL_DISABLE_TFTP@" != "1"; then
echo "TFTP"
fi
;;
--version)
echo libcurl @VERSION@
exit 0
;;
--checkfor)
checkfor=$2
cmajor=`echo $checkfor | cut -d. -f1`
cminor=`echo $checkfor | cut -d. -f2`
# when extracting the patch part we strip off everything after a
# dash as that's used for things like version 1.2.3-CVS
cpatch=`echo $checkfor | cut -d. -f3 | cut -d- -f1`
checknum=`echo "$cmajor*256*256 + $cminor*256 + ${cpatch:-0}" | bc`
numuppercase=`echo @VERSIONNUM@ | tr 'a-f' 'A-F'`
nownum=`echo "obase=10; ibase=16; $numuppercase" | bc`
if test "$nownum" -ge "$checknum"; then
# silent success
exit 0
else
echo "requested version $checkfor is newer than existing @VERSION@"
exit 1
fi
;;
--vernum)
echo @VERSIONNUM@
exit 0
@@ -118,13 +181,21 @@ while test $# -gt 0; do
;;
--libs)
echo -L@libdir@ -lcurl @LDFLAGS@ @LIBS@
;;
if test "X@libdir@" != "X/usr/lib"; then
CURLLIBDIR="-L@libdir@ "
else
CURLLIBDIR=""
fi
if test "X@REQUIRE_LIB_DEPS@" = "Xyes"; then
echo ${CURLLIBDIR}-lcurl @LDFLAGS@ @LIBCURL_LIBS@ @LIBS@
else
echo ${CURLLIBDIR}-lcurl @LDFLAGS@ @LIBS@
fi
;;
*)
echo "unknown option: $1"
usage
exit 1
usage 1
;;
esac
shift

View File

@@ -25,10 +25,14 @@ Basic
ScriptBasic bindings to libcurl. Writtten by Peter Verhas
http://scriptbasic.com/
C
libcurl is a C library in itself!
http://curl.haxx.se/libcurl/
C++
Written by Jean-Philippe Barrette-LaPierre
http://www.sourceforge.net/projects/curlpp
http://rrette.com/curlpp.html
Ch
@@ -42,8 +46,8 @@ Cocoa
D
Written by Charles Sanders and James Wavro
http://www.atari-soldiers.com/libcurl.html
Written by Kenneth Bogert
http://curl.haxx.se/libcurl/d/
Dylan
@@ -68,13 +72,28 @@ glib/GTK+
Java
Written by Daniel Stenberg
Maintained by Vic Hanson
http://curl.haxx.se/libcurl/java/
Lisp
Written by Liam Healy
http://common-lisp.net/project/cl-curl/
Lua
Written by Steve Dekorte
http://curl.haxx.se/libcurl/lua/
LuaCURL Written by Alexander Marinov
http://luacurl.luaforge.net/
Mono
Written by Jeffrey Phillips
http://forge.novell.com/modules/xfmod/project/?libcurl-mono
.NET
libcurl-net Written by Jeffrey Phillips
http://sourceforge.net/projects/libcurl-net/
Object-Pascal
@@ -108,9 +127,14 @@ PostgreSQL
Python
Written by Kjetil Jacobsen
PycURL is written by Kjetil Jacobsen
http://pycurl.sourceforge.net/
R
RCurl is written by Duncan Temple Lang
http://www.omegahat.org/RCurl/
Rexx
Written Mark Hessling
@@ -118,24 +142,49 @@ Rexx
Ruby
Written by Hirotaka Matsuyuki
http://www.d1.dion.ne.jp/~matuyuki/ruby.html
Written by Ross Bamford
http://curb.rubyforge.org/
Scheme
Bigloo binding written by Kirill Lisovsky
http://curl.haxx.se/libcurl/scheme/
S-Lang
S-Lang binding written by John E Davis
http://www.jedsoft.org/slang/modules/curl.html
Smalltalk
Smalltalk binding written by Danil Osipchuk
http://www.squeaksource.com/CurlPlugin/
SPL
SPL binding written by Clifford Wolf
http://www.clifford.at/spl/
Tcl
Written by Andr<64>s Garc<72>a
Tclcurl is written by Andr<64>s Garc<72>a
http://personal1.iddeo.es/andresgarci/tclcurl/english/docs.html
Q
Visual Basic
libcurl-vb is written by Jeffrey Phillips
http://sourceforge.net/projects/libcurl-vb/
Q
The libcurl module is part of the default install
http://q-lang.sourceforge.net/
wxWidgets
Written by Casey O'Donnell
http://homepage.mac.com/codonnell/wxcurldav/
http://wxcode.sourceforge.net/components/wxcurl/
XBLite
Written by David Szafranski
http://perso.wanadoo.fr/xblite/libraries.html

View File

@@ -4,11 +4,11 @@
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
To Think About When Contributing Source Code
When Contributing Source Code
This document is intended to offer some simple guidelines that can be useful
to keep in mind when you decide to contribute to the project. This concerns
new features as well as corrections to existing flaws or bugs.
This document is intended to offer guidelines that can be useful to keep in
mind when you decide to contribute to the project. This concerns new features
as well as corrections to existing flaws or bugs.
Join the Community
@@ -17,22 +17,38 @@ Join the Community
you start sending patches! We prefer patches and discussions being held on
the mailing list(s), not sent to individuals.
The License Issue
We also hang out on IRC in #curl on irc.freenode.net
License
When contributing with code, you agree to put your changes and new code under
the same license curl and libcurl is already using unless stated otherwise.
the same license curl and libcurl is already using unless stated and agreed
otherwise.
If you add a larger piece of code, you can opt to make that file or set of
files to use a different license as long as they don't enforce any changes to
the rest of the package and they make sense. Such "separate parts" can not be
GPL (as we don't want the GPL virus to attack users of libcurl) but they must
use "GPL compatible" licenses.
GPL licensed (as we don't want copyleft to affect users of libcurl) but they
must use "GPL compatible" licenses (as we want to allow users to use libcurl
properly in GPL licensed environments).
When changing existing source code, you do not alter the copyright of the
original file(s). The copyright will still be owned by the original
creator(s) or those who have been assigned copyright by the original
author(s).
By submitting a patch to the curl project, you are assumed to have the right
to the code and to be allowed by your employer or whatever to hand over that
patch/code to us. We will credit you for your changes as far as possible, to
give credit but also to keep a trace back to who made what changes. Please
always provide us with your full real name when contributing!
What To Read
Source code, the man pages, the INTERNALS document, the TODO, the most recent
CHANGES. Just lurking on the libcurl mailing list is gonna give you a lot of
insights on what's going on right now. Asking there is a good idea too.
Source code, the man pages, the INTERNALS document, TODO, KNOWN_BUGS, the
most recent CHANGES. Just lurking on the libcurl mailing list is gonna give
you a lot of insights on what's going on right now. Asking there is a good
idea too.
Naming
@@ -157,3 +173,21 @@ How To Make a Patch
http://gnuwin32.sourceforge.net/packages/patch.htm
http://gnuwin32.sourceforge.net/packages/diffutils.htm
How to get your patches into the libcurl sources
1. Submit your patch to the curl-library mailing list
2. Make the patch against as recent sources as possible.
3. Make sure your patch adheres to the source indent and coding style of
already existing source code. Failing to do so just adds more work for me.
4. Respond to replies on the list about the patch and answer questions and/or
fix nits/flaws. This is very important. I will take lack of replies as a
sign that you're not very anxious to get your patch accepted and I tend to
simply drop such patches from my TODO list.
5. If you've followed the above mentioned paragraphs and your patch still
hasn't been incorporated after some weeks, consider resubmitting them to
the list.

176
docs/DISTRO-DILEMMA Normal file
View File

@@ -0,0 +1,176 @@
Date: February 11, 2007
Author: Daniel Stenberg <daniel@haxx.se>
URL: http://curl.haxx.se/legal/distro-dilemma.html
Condition
This document is written to describe the situation as it is right now.
libcurl 7.16.1 is currently the latest version available. Things may of
course change in the future.
This document reflects my view and understanding of these things. Please tell
me where and how you think I'm wrong, and I'll try to correct my mistakes.
Background
The Free Software Foundation has deemed the Original BSD license[1] to be
"incompatible"[2] with GPL[3]. I'd rather say it is the other way around, but
the point is the same: if you distribute a binary version of a GPL program,
it MUST NOT be linked with any Original BSD-licensed parts or libraries.
Doing so will violate the GPL license. For a long time, very many GPL
licensed programs have avoided this license mess by adding an exception[8] to
their license. And many others have just closed their eyes for this problem.
libcurl is MIT-style[4] licensed - how on earth did this dilemma fall onto
our plates?
libcurl is only a little library. libcurl can be built to use OpenSSL for its
SSL/TLS capabilities. OpenSSL is basically Original BSD licensed[5].
If libcurl built to use OpenSSL is used by a GPL-licensed application and you
decide to distribute a binary version of it (Linux distros - for example -
tend to), you have a clash. GPL vs Original BSD.
This dilemma is not libcurl-specific nor is it specific to any particular
Linux distro. (This article mentions and refers to Debian several times, but
only because Debian seems to be the only Linux distro to have faced this
issue yet since no other distro is shipping libcurl built with two SSL
libraries.)
Part of the Operating System
This would not be a problem if the used lib would be considered part of the
underlying operating system, as then the GPL license has an exception
clause[6] that allows applications to use such libs without having to be
allowed to distribute it or its sources. Possibly some distros will claim
that OpenSSL is part of their operating system.
Debian does however not take this stance and has officially(?) claimed that
OpenSSL is not a required part of the Debian operating system
Some people claim that this paragraph cannot be exploited this way by a Linux
distro, but I am not a lawyer and that is a discussion left outside of this
document.
GnuTLS
Since May 2005 libcurl can get built to use GnuTLS instead of OpenSSL. GnuTLS
is an LGPL[7] licensed library that offers a matching set of features as
OpenSSL does. Now, you can build and distribute an TLS/SSL capable libcurl
without including any Original BSD licensed code.
I believe Debian is the first (only?) distro that provides libcurl/GnutTLS
packages.
yassl
libcurl can get also get built to use yassl for the TLS/SSL layer. yassl is a
GPL[3] licensed library.
GnuTLS vs OpenSSL vs yassl
While these three libraries offer similar features, they are not equal.
libcurl does not (yet) offer a standardized stable ABI if you decide to
switch from using libcurl-openssl to libcurl-gnutls or vice versa. The GnuTLS
and yassl support is very recent in libcurl and it has not been tested nor
used very extensively, while the OpenSSL equivalent code has been used and
thus matured since 1999.
GnuTLS
- LGPL licensened
- supports SRP
- lacks SSLv2 support
- lacks MD2 support (used by at least some CA certs)
- lacks the crypto functions libcurl uses for NTLM
OpenSSL
- Original BSD licensened
- lacks SRP
- supports SSLv2
- older and more widely used
- provides crypto functions libcurl uses for NTLM
- libcurl can do non-blocking connects with it in 7.15.4 and later
yassl
- GPL licensed
- much untested and unproven in the real work by (lib)curl users so we don't
know a lot about restrictions or benefits from using this
The Better License, Original BSD, GPL or LGPL?
It isn't obvious or without debate to any objective interested party that
either of these licenses are the "better" or even the "preferred" one in a
generic situation.
Instead, I think we should accept the fact that the SSL/TLS libraries and
their different licenses will fit different applications and their authors
differently depending on the applications' licenses and their general usage
pattern (considering how GPL and LGPL libraries for example can be burdensome
for embedded systems usage).
In Debian land, there seems to be a common opinion that LGPL is "maximally
compatible" with apps while Original BSD is not. Like this:
http://lists.debian.org/debian-devel/2005/09/msg01417.html
More SSL Libraries
In libcurl, there's no stopping us here. There are more Open Source/Free
SSL/TLS libraries out there and we would very much like to support them as
well, to offer application authors an even wider scope of choice.
Application Angle of this Problem
libcurl is built to use one SSL/TLS library. It uses a single fixed name (by
default) on the built/created lib file, and applications are built/linked to
use that single lib. Replacing one libcurl instance with another one that
uses the other SSL/TLS library might break one or more applications (due to
ABI differences and/or different feature set). You want your application to
use the libcurl it was built for.
Project cURL Angle of this Problem
We distribute libcurl and everyone may build libcurl with either library at
their choice. This problem is not directly a problem of ours. It merely
affects users - GPL application authors only - of our lib as it comes
included and delivered on some distros.
libcurl has different ABI when built with different SSL/TLS libraries due to
these reasons:
1. No one has worked on fixing this. The mutex/lock callbacks should be set
with a generic libcurl function that should use the proper underlying
functions.
2. The CURLOPT_SSL_CTX_FUNCTION option is not possible to "emulate" on GnuTLS
but simply requires OpenSSL.
3. There might be some other subtle differences just because nobody has yet
tried to make a fixed ABI like this.
Distro Angle of this Problem
To my knowledge there is only one distro that ships libcurl built with either
OpenSSL or GnuTLS.
Debian Linux is now (since mid September 2005) providing two different
libcurl packages, one for libcurl built with OpenSSL and one built with
GnuTLS. They use different .so names and can this both be installed in a
single system simultaneously. This has been said to be a transitional system
not desired to keep in the long run.
Footnotes
[1] = http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6
[2] = http://www.fsf.org/licensing/essays/bsd.html
[3] = http://www.fsf.org/licensing/licenses/gpl.html
[4] = http://curl.haxx.se/docs/copyright.html
[5] = http://www.openssl.org/source/license.html
[6] = http://www.fsf.org/licensing/licenses/gpl.html end of section 3
[7] = http://www.fsf.org/licensing/licenses/lgpl.html
[8] = http://en.wikipedia.org/wiki/OpenSSL_exception
Feedback/Updates provided by
Eric Cooper

312
docs/FAQ
View File

@@ -1,4 +1,4 @@
Updated: August 18, 2004 (http://curl.haxx.se/docs/faq.html)
Updated: February 11, 2007 (http://curl.haxx.se/docs/faq.html)
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
@@ -16,6 +16,8 @@ FAQ
1.6 What do you get for making curl?
1.7 What about CURL from curl.com?
1.8 I have a problem who do I mail?
1.9 Where do I buy commercial support for curl?
1.10 How many are using curl?
2. Install Related Problems
2.1 configure doesn't find OpenSSL even when it is installed
@@ -42,6 +44,8 @@ FAQ
3.14 Does curl support javascript or pac (automated proxy config)?
3.15 Can I do recursive fetches with curl?
3.16 What certificates do I need when I use SSL?
3.17 How do I list the root dir of an FTP server?
3.18 Can I use curl to send a POST/PUT and not wait for a response?
4. Running Problems
4.1 Problems connecting to SSL servers.
@@ -62,6 +66,8 @@ FAQ
4.10 My HTTP request using HEAD, PUT or DELETE doesn't work!
4.11 Why does my HTTP range requests return the full document?
4.12 Why do I get "certificate verify failed" ?
4.13 Why is curl -R on Windows one hour off?
4.14 Redirects work in browser but not with curl!
5. libcurl Issues
5.1 Is libcurl thread-safe?
@@ -73,6 +79,9 @@ FAQ
5.7 Link errors when building libcurl on Windows!
5.8 libcurl.so.3: open failed: No such file or directory
5.9 How does libcurl resolve host names?
5.10 How do I prevent libcurl from writing the response to stdout?
5.11 How do I make libcurl not receive the whole HTTP response?
5.12 Can I make libcurl fake or hide my real IP address?
6. License Issues
6.1 I have a GPL program, can I use the libcurl library?
@@ -81,6 +90,7 @@ FAQ
6.4 I have a program that uses LGPL libraries, can I use libcurl?
6.5 Can I modify curl/libcurl for my program and keep the changes secret?
6.6 Can you please change the curl/libcurl license to XXXX?
6.7 What are my obligations when using libcurl in my commerical apps?
7. PHP/CURL Issues
7.1 What is PHP/CURL?
@@ -96,7 +106,7 @@ FAQ
cURL is the name of the project. The name is a play on 'Client for URLs',
originally with URL spelled in uppercase to make it obvious it deals with
URLs. The fact it can also be pronounced 'see URL' also helped, it works as
an abbrivation for "Client URL Request Library" or why not the recursive
an abbreviation for "Client URL Request Library" or why not the recursive
version: "Curl URL Request Library".
The cURL project produces two products:
@@ -104,10 +114,10 @@ FAQ
libcurl
A free and easy-to-use client-side URL transfer library, supporting FTP,
FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. libcurl supports
HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, kerberos, HTTP
form based upload, proxies, cookies, user+password authentication, file
transfer resume, http proxy tunneling and more!
FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE and LDAP. libcurl
supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, kerberos,
HTTP form based upload, proxies, cookies, user+password authentication,
file transfer resume, http proxy tunneling and more!
libcurl is highly portable, it builds and works identically on numerous
platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX,
@@ -122,16 +132,16 @@ FAQ
A command line tool for getting or sending files using URL syntax.
Since curl uses libcurl, it supports a range of common Internet protocols,
currently including HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and
FILE.
currently including HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, DICT,
TELNET and FILE.
We pronounce curl and cURL with an initial k sound: [kurl].
NOTE: there are numerous sub-projects and related projects that also use the
word curl in the project names in various combinations, but you should take
There are numerous sub-projects and related projects that also use the word
curl in the project names in various combinations, but you should take
notice that this FAQ is directed at the command-line tool named curl (and
libcurl the library), and may therefore not be valid for other curl-related
projects.
projects. (There is however a small section for the PHP/CURL in this FAQ.)
1.2 What is libcurl?
@@ -141,9 +151,13 @@ FAQ
You can use libcurl for free in your application, be it open source,
commercial or closed-source.
libcurl is most probably the most portable, most powerful and most often
used C-based multi-platform file transfer library on this planet - be it
open source or commercial.
1.3 What is curl not?
Curl is *not* a wget clone. That is a common misconception. Never, during
Curl is not a wget clone. That is a common misconception. Never, during
curl's development, have we intended curl to replace wget or compete on its
market. Curl is targeted at single-shot file transfers.
@@ -158,9 +172,10 @@ FAQ
Curl is not a PHP tool, even though it works perfectly well when used from
or with PHP (when using the PHP/CURL module).
Curl is not a single-OS program. Curl exists, compiles, builds and runs
under a wide range of operating systems, including all modern Unixes (and a
bunch of older ones too), Windows, Amiga, BeOS, OS/2, OS X, QNX etc.
Curl is not a program for a single operating system. Curl exists, compiles,
builds and runs under a wide range of operating systems, including all
modern Unixes (and a bunch of older ones too), Windows, Amiga, BeOS, OS/2,
OS X, QNX etc.
1.4 When will you make curl do XXXX ?
@@ -192,15 +207,14 @@ FAQ
1.5 Who makes curl?
curl and libcurl are not made by any single individual. Sure, Daniel
Stenberg writes the major parts, but other persons' submissions are
curl and libcurl are not made by any single individual. Daniel Stenberg is
project leader and main developer, but other persons' submissions are
important and crucial. Anyone can contribute and post their changes and
improvements and have them inserted in the main sources (of course on the
condition that developers agree on that the fixes are good).
The list of contributors in the docs/THANKS file is only a small part of all
the people that every day provide us with bug reports, suggestions, ideas
and source code.
The full list of the more than 530 contributors is found in the docs/THANKS
file.
curl is developed by a community, with Daniel at the wheel.
@@ -215,12 +229,8 @@ FAQ
have sponsored certain parts of the development in the past and I hope some
will continue to do so in the future.
If you want to support our project with a donation or similar, one way of
doing that would be to buy "gift certificates" at useful online shopping
sites, such as amazon.com or thinkgeek.com. Another way would be to sponsor
us through a banner-program or even better: by helping us coding,
documenting, testing etc. You're welcome to send us a buck using paypal, as
described here: http://curl.haxx.se/donation.html
If you want to support our project, consider a donation or a banner-program
or even better: by helping us coding, documenting, testing etc.
1.7 What about CURL from curl.com?
@@ -251,6 +261,61 @@ FAQ
users thanks to the web based archives of the mailing lists), thus saving us
from having to repeat ourselves even more. Thanks for respecting this.
If you have found or simply suspect a security problem in curl or libcurl,
mail curl-security at haxx.se (closed list of receivers, mails are not
disclosed) and tell. Then we can produce a fix in a timely manner before the
flaw is announced to the world, thus lessen the impact the problem will have
on existing users.
1.9 Where do I buy commercial support for curl?
curl is fully open source. It means you can hire any skilled engineer to fix
your curl-related problems.
We list available alternatives on the curl web site:
http://curl.haxx.se/support.html
1.10 How many are using curl?
It is impossible to tell.
We don't know how many users that knowingly have installed and use curl.
We don't know how many users that use curl without knowing that they are in
fact using it.
We don't know how many users that downloaded or installed curl and then
never use it.
Some facts to use as input to the math:
curl packages are downloaded from the curl.haxx.se and mirrors almost one
million times per year. curl is installed by default with most Linux
distributions. curl is installed by default with Mac OS X. curl and libcurl
as used by numerous applications that include libcurl binaries in their
distribution packages (like Adobe Acrobat Reader and Google Earth).
More than 60 known named companies use curl in commercial environments and
products. More than 100 known named open source projects depend on
(lib)curl.
In a poll on the curl web site mid-2005, more than 50% of the 300+ answers
estimated a user base of one million users or more.
In March 2005, the "Linux Counter project" estimated a total Linux user base
of some 29 millions, while Netcraft detected some 4 million "active" Linux
based web servers. A guess is that a fair amount of these Linux
installations have curl installed.
All this taken together, there is no doubt that there are millions of
(lib)curl users.
http://curl.haxx.se/docs/companies.html
http://curl.haxx.se/docs/programs.html
http://curl.haxx.se/libcurl/using/apps.html
http://counter.li.org/estimates.php
http://news.netcraft.com/archives/2005/03/14/fedora_makes_rapid_progress.html
2. Install Related Problems
@@ -278,8 +343,6 @@ FAQ
./configure places the -L/usr/local/ssl/lib early enough in the command
line to make things work
Solution submitted by: Bob Allison <allisonb@users.sourceforge.net>
2.1.2 only the libssl lib is missing
If all include files and the libcrypto lib is present, with only the
@@ -295,10 +358,10 @@ FAQ
2.2 Does curl work/build with other SSL libraries?
Curl has been written to use OpenSSL, although there should not be much
problems using a different library. If anyone does "port" curl to use a
different SSL library, we are of course very interested in getting the
patch!
Curl has been written to use OpenSSL, GnuTLS, yassl or NSS, although there
should not be many problems using a different library. If anyone does "port"
curl to use a different SSL library, we are of course very interested in
getting the patch!
2.3 Where can I find a copy of LIBEAY32.DLL?
@@ -391,6 +454,8 @@ FAQ
curl -L http://redirector.com
Not all redirects are HTTP ones, see 4.14
3.9 How do I use curl in my favorite programming language?
There exist many language interfaces/bindings for curl that integrates it
@@ -402,10 +467,12 @@ FAQ
install and use them, in the libcurl section of the curl web site:
http://curl.haxx.se/libcurl/
In February 2003, there are interfaces available for the following
languages: Basic, C, C++, Cocoa, Dylan, Euphoria, Java, Lua, Object-Pascal,
Pascal, Perl, PHP, PostgreSQL, Python, Rexx, Ruby, Scheme and Tcl. By the
time you read this, additional ones may have appeared!
In February 2007, there are interfaces available for the following
languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Dylan, Euphoria, Ferite,
Gambas, glib/GTK+, Java, Lisp, Lua, Mono, .NET, Object-Pascal, O'Caml,
Pascal, Perl, PHP, PostgreSQL, Python, R, Rexx, Ruby, Scheme, S-Lang,
Smalltalk, SPL, Tcl, Visual Basic, Q, wxwidgets and XBLite. By the time you
read this, additional ones may have appeared!
3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
@@ -502,23 +569,43 @@ FAQ
If the server doesn't require this, you don't need a client certificate.
- Server certificate. The server you communicate with has a server
certificate. You can and should verify this certficate to make sure that
certificate. You can and should verify this certificate to make sure that
you are truly talking to the real server and not a server impersonating
it. The server certificate verifaction process is made by using a
Certificate Authority certificate ("CA cert") that was used to sign the
server certificate. Server certificate verification is enabled by default
in curl and libcurl and is often the reason for problems as explained in
FAQ entry 4.12 and the SSLCERTS document
it.
- Certificate Authority certificate ("CA cert"). You often have several CA
certs in a CA cert bundle that can be used to verify a server certificate
that was signed by one of the authorities in the bundle. curl comes with a
default CA cert bundle. You can override the default.
The server certificate verification process is made by using a Certificate
Authority certificate ("CA cert") that was used to sign the server
certificate. Server certificate verification is enabled by default in curl
and libcurl and is often the reason for problems as explained in FAQ entry
4.12 and the SSLCERTS document
(http://curl.haxx.se/docs/sslcerts.html). Server certificates that are
"self-signed" or otherwise signed by a CA that you do not have a CA cert
for, cannot be verified. If the verification during a connect fails, you
are refused access. You then need to explicitly disable the verification
to connect to the server.
- Certificate Authority certificate ("CA cert"). You often have several CA
certs in a CA cert bundle that can be used to verify a server certificate
that was signed by one of the authorities in the bundle. curl comes with a
default CA cert bundle. You can override the default.
3.17 How do I list the root dir of an FTP server?
There are two ways. The way defined in the RFC is to use an encoded slash
in the first path part. List the "/tmp" dir like this:
curl ftp://ftp.sunet.se/%2ftmp/
or the not-quite-kosher-but-more-readable way, by simply starting the path
section of the URL with a slash:
curl ftp://ftp.sunet.se//tmp/
3.18 Can I use curl to send a POST/PUT and not wait for a response?
No.
But you could easily write your own program using libcurl to do such stunts.
4. Running Problems
@@ -623,7 +710,10 @@ FAQ
4.6 Can you tell me what error code 142 means?
All error codes that are larger than the highest documented error code means
All curl error codes are described at the end of the man page, in the
section called "EXIT CODES".
Error codes that are larger than the highest documented error code means
that curl has exited due to a crash. This is a serious error, and we
appreciate a detailed bug report from you that describes how we could go
ahead and repeat this!
@@ -710,6 +800,28 @@ FAQ
Details are also in the SSLCERTS file in the release archives, found online
here: http://curl.haxx.se/docs/sslcerts.html
4.13 Why is curl -R on Windows one hour off?
During daylight savings time, when -R is used, curl will set a time that
appears one hour off. This happens due to a flaw in how Windows stores and
uses file modification times and it is not easily worked around. For details
on this problem, read this: http://www.codeproject.com/datetime/dstbugs.asp
4.14 Redirects work in browser but not with curl!
curl supports HTTP redirects fine (see item 3.8). Browsers generally support
at least two other ways to perform directs that curl does not:
- Meta tags. You can write a HTML tag that will cause the browser to
redirect to another given URL after a certain time.
- Javascript. You can write a javascript program embeded in a HTML page
that redirects the browser to another given URL.
There is no way to make curl follow these redirects. You must either
manually figure out what the page is set to do, or you write a script that
parses the results and fetches the new URL.
5. libcurl Issues
@@ -717,12 +829,22 @@ FAQ
Yes.
We have written the libcurl code specificly adjusted for multi-threaded
We have written the libcurl code specifically adjusted for multi-threaded
programs. libcurl will use thread-safe functions instead of non-safe ones if
your system has such.
We would appreciate some kind of report or README file from those who have
used libcurl in a threaded environment.
If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
need to provide one or two locking functions:
http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
If you use a GnuTLS-powered libcurl in a multi-threaded environment, you
need to provide locking function(s) for libgcrypt (which is used by GnuTLS
for the crypto functions).
http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
No special locking is needed with a NSS-powered libcurl. NSS is thread-safe.
5.2 How can I receive all data into a large memory chunk?
@@ -734,8 +856,8 @@ FAQ
One solution to this problem could be to have a pointer to a struct that you
pass to the callback function. You set the pointer using the
curl_easy_setopt(CURLOPT_FILE) function. Then that pointer will be passed to
the callback instead of a FILE * to a file:
CURLOPT_WRITEDATA option. Then that pointer will be passed to the callback
instead of a FILE * to a file:
/* imaginary struct */
struct MemoryStruct {
@@ -781,8 +903,6 @@ FAQ
Similarly, if you use CURLOPT_READDATA you must also specify
CURLOPT_READFUNCTION.
(Provided by Joel DeYoung and Bob Schader)
5.6 What about Keep-Alive or persistent connections?
curl and libcurl have excellent support for persistent connections when
@@ -801,7 +921,21 @@ FAQ
options to the command line compiler. /MD (linking against MSVCRT dll) seems
to be the most commonly used option.
(Provided by Andrew Francis)
When building an application that uses the static libcurl library, you must
add -DCURL_STATICLIB to your CFLAGS. Otherwise the linker will look for
dynamic import symbols. If you get linker error like "unknown symbol
__imp__curl_easy_init ..." you have linked against the wrong (static)
library. If you want to use the libcurl.dll and import lib, you don't need
any extra CFLAGS, but use one of the import libraries below. These are the
libraries produced by the various lib/Makefile.* files:
Target: static lib. import lib for libcurl*.dll.
-----------------------------------------------------------
MingW: libcurl.a libcurldll.a
MSVC (release): libcurl.lib libcurl_imp.lib
MSVC (debug): libcurld.lib libcurld_imp.lib
Borland: libcurl.lib libcurl_imp.lib
5.8 libcurl.so.3: open failed: No such file or directory
@@ -826,7 +960,10 @@ FAQ
5.9 How does libcurl resolve host names?
libcurl includes a number of different name resolve functions:
libcurl supports a large a number of different name resolve functions. One
of them is picked at build-time and will be used unconditionally. Thus, if
you want to change name resolver function you must rebuild libcurl and tell
it to use a different function.
- The non-ipv6 resolver that can use one out of four host name resolve calls
(depending on what your system supports):
@@ -839,12 +976,43 @@ FAQ
- The ipv6-resolver that uses getaddrinfo()
- The c-ares based name resolver that uses the c-ares library for resolves.
Using this offers asynchronous name resolves but it currently has no IPv6
support.
- The Windows threaded resolver. It use:
A - gethostbyname() on plain ipv4 windows hosts
B - getaddrinfo() on ipv6-enabled windows hosts
Also note that libcurl never resolves or reverse-lookups addresses given as
pure numbers, such as 127.0.0.1 or ::1.
5.10 How do I prevent libcurl from writing the response to stdout?
libcurl provides a default built-in write function that writes received data
to stdout. Set the CURLOPT_WRITEFUNCTION to receive the data, or possibly
set CURLOPT_WRITEDATA to a different FILE * handle.
5.11 How do I make libcurl not receive the whole HTTP response?
You make the write callback (or progress callback) return an error and
libcurl will then abort the transfer.
5.12 Can I make libcurl fake or hide my real IP address?
No. libcurl operates on a higher level than so. Besides, faking IP address
would imply sending IP packages with a made-up source address, and then you
normally get a problem with intercepting the packages sent back as they
would then not be routed to you!
If you use a proxy to access remote sites, the sites will not see your local
IP address but instead the address of the proxy.
Also note that on many networks NATs or other IP-munging techniques are used
that makes you see and use a different IP address locally than what the
remote server will see you coming from.
6. License Issues
Curl and libcurl are released under a MIT/X derivate license. The license is
@@ -852,6 +1020,9 @@ FAQ
is just a brief summary for the cases we get the most questions. (Parts of
this section was much enhanced by Bjorn Reese.)
We are not lawyers and this is not legal advice. You should probably consult
one if you want true and accurate legal insights without our prejudice.
6.1 I have a GPL program, can I use the libcurl library?
Yes!
@@ -896,13 +1067,38 @@ FAQ
libraries that use it. It should be possible for everyone to use libcurl or
curl in their projects, no matter what license they already have in use.
6.7 What are my obligations when using libcurl in my commerical apps?
Next to none. All you need to adhere to is the MIT-style license (stated in
the COPYING file) which basically says you have to include the copyright
notice in "all copies" and that you may not use the copyright holder's name
when promoting your software.
You do not have to release any of your source code.
You do not have to reveal or make public any changes to the libcurl source
code.
You do not have to reveal or make public that you are using libcurl within
your app.
As can be seen here: http://curl.haxx.se/docs/companies.html and
elsewhere, more and more companies are dicovering the power
of libcurl and take advantage of it even in commercial environments.
7. PHP/CURL Issues
7.1 What is PHP/CURL?
The module for PHP that makes it possible for PHP programs to access curl-
functions from within PHP. We often call it PHP/CURL to differentiate from
curl the command line tool and libcurl the library.
functions from within PHP.
In the cURL project we call this module PHP/CURL to differentiate it from
curl the command line tool and libcurl the library. The PHP team however
does not refer to it like this (for unknown reasons). They call it plain
CURL (often using all caps) which causes much confusion to users which in
turn gives us a higher question load.
7.2 Who write PHP/CURL?

View File

@@ -62,11 +62,11 @@ HTTP
HTTPS (*1)
- (all the HTTP features)
- using certificates
- using client certificates
- verify server certificate
- via http-proxy
- select desired encryption
- force usage of a specific SSL version (SSLv2, SSLv3 or TLSv1)
- force usage of a specific SSL version (SSLv2(*7), SSLv3 or TLSv1)
FTP
- download
@@ -87,14 +87,16 @@ FTP
- via http-proxy
- all operations can be tunneled through a http-proxy
- customizable to retrieve file modification date
- third party transfers
- no dir depth limit
FTPS (*1)
- explicit ftps:// support that use SSL on both connections
- implicit "AUTH TSL" and "AUTH SSL" usage to "upgrade" plain ftp://
- implicit ftps:// support that use SSL on both connections
- explicit "AUTH TSL" and "AUTH SSL" usage to "upgrade" plain ftp://
connection to use SSL for both or one of the connections
TFTP
- download / upload
TELNET
- connection negotiation
- custom telnet options
@@ -106,10 +108,6 @@ LDAP (*2)
DICT
- extended DICT URL support
GOPHER
- GET
- via http-proxy
FILE
- URL support
- "uploads"
@@ -118,9 +116,10 @@ FILE
FOOTNOTES
=========
*1 = requires OpenSSL
*1 = requires OpenSSL, GnuTLS or NSS
*2 = requires OpenLDAP
*3 = requires a GSSAPI-compliant library, such as Heimdal or similar.
*4 = requires FBopenssl
*5 = requires a krb4 library, such as the MIT one or similar.
*6 = requires c-ares
*7 = requires OpenSSL or NSS, as GnuTLS only supports SSLv3 and TLSv1

View File

@@ -114,6 +114,8 @@ distributions and otherwise retrieved as part of other software.
September 2002, with the release of curl 7.10 it is released under the MIT
license only.
January 2003. Started working on the distributed curl tests. The autobuilds.
February 2003, the curl site averages at 20000 visits weekly. At any given
moment, there's an average of 3 people browsing the curl.haxx.se site.
@@ -139,3 +141,13 @@ August 2004:
Number of public functions in libcurl: 36
Amount of public web site mirrors: 12
Number of known libcurl bindings: 26
April 2005:
GnuTLS can now optionally be used for the secure layer when curl is built.
September 2005:
TFTP support was added.
More than 100,000 unique visitors of the curl web site. 25 mirrors.

View File

@@ -16,7 +16,6 @@ Installing Binary Packages
UNIX
====
A normal unix installation is made in three or four steps (after you've
unpacked the source archive):
@@ -52,12 +51,12 @@ UNIX
path for your compiler/linker, you don't need to do anything special. If
you have OpenSSL installed in /usr/local/ssl, you can run configure like:
./configure --with-ssl
./configure --with-ssl
If you have OpenSSL installed somewhere else (for example, /opt/OpenSSL,)
you can run configure like this:
./configure --with-ssl=/opt/OpenSSL
./configure --with-ssl=/opt/OpenSSL
If you insist on forcing a build without SSL support, even though you may
have OpenSSL installed in your system, you can run configure like this:
@@ -79,8 +78,18 @@ UNIX
env CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \
./configure
If your SSL library was compiled with rsaref (usually for use in the United
States), you may also need to set:
If you have shared SSL libs installed in a directory where your run-time
linker doesn't find them (which usually causes configure failures), you can
provide the -R option to ld on some operating systems to set a hard-coded
path to the run-time linker:
LDFLAGS=-R/usr/local/ssl/lib ./configure --with-ssl
Another option to the previous trick, is to set LD_LIBRARY_PATH or edit the
/etc/ld.so.conf file.
If your SSL library was compiled with rsaref (this was common in the past
when used in the United States), you may also need to set:
LIBS=-lRSAglue -lrsaref
(as suggested by Doug Kaufman)
@@ -92,7 +101,7 @@ UNIX
CC=cc ./configure
or
env Cc=cc ./configure
env CC=cc ./configure
To force a static library compile, disable the shared library creation
by running configure like:
@@ -119,173 +128,205 @@ UNIX
If you're a curl developer and use gcc, you might want to enable more
debug options with the --enable-debug option.
curl can be built to use a whole range of libraries to provide various
useful services, and configure will try to auto-detect a decent
default. But if you want to alter it, you can select how to deal with
each individual library.
To build with GnuTLS support instead of OpenSSL for SSL/TLS, note that
you need to use both --without-ssl and --with-gnutls.
To build with yassl support instead of OpenSSL or GunTLS, you must build
yassl with its OpenSSL emulation enabled and point to that directory root
with configure --with-ssl.
To build with NSS support instead of OpenSSL for SSL/TLS, note that
you need to use both --without-ssl and --with-nss.
Win32
=====
Without SSL:
Building Windows DLLs and C run-time (CRT) linkage issues
---------------------------------------------------------
MingW32 (GCC-2.95) style
------------------------
Run the 'mingw32.bat' file to get the proper environment variables
set, then run 'make mingw32' in the root dir.
As a general rule, building a DLL with static CRT linkage is highly
discouraged, and intermixing CRTs in the same app is something to
avoid at any cost.
If you have any problems linking libraries or finding header files, be
sure to verify that the provided "Makefile.m32" files use the proper
paths, and adjust as necessary.
Reading and comprehension of Microsoft Knowledge Base articles
KB94248 and KB140584 is a must for any Windows developer. Especially
important is full understanding if you are not going to follow the
advice given above.
Cygwin style
------------
Almost identical to the unix installation. Run the configure script in
the curl root with 'sh configure'. Make sure you have the sh
executable in /bin/ or you'll see the configure fail towards the end.
KB94248 - How To Use the C Run-Time
http://support.microsoft.com/kb/94248/en-us
Run 'make'
KB140584 - How to link with the correct C Run-Time (CRT) library
http://support.microsoft.com/kb/140584/en-us
Microsoft command line style
----------------------------
Run the 'vcvars32.bat' file to get the proper environment variables
set, then run 'nmake vc' in the root dir.
If your app is misbehaving in some strange way, or it is suffering
from memory corruption, before asking for further help, please try
first to rebuild every single library your app uses as well as your
app using the debug multithreaded dynamic C runtime.
The vcvars32.bat file is part of the Microsoft development
environment.
MingW32
-------
IDE-style
-------------------------
If you use VC++, Borland or similar compilers. Include all lib source
files in a static lib "project" (all .c and .h files that is).
(you should name it libcurl or similar)
Run the 'mingw32.bat' file to get the proper environment variables set,
then run 'make mingw32' in the root dir. Use 'make mingw32-ssl' to build
curl SSL enabled.
Make the sources in the src/ drawer be a "win32 console application"
project. Name it curl.
If you have any problems linking libraries or finding header files, be sure
to verify that the provided "Makefile.m32" files use the proper paths, and
adjust as necessary. It is also possible to override these paths with
environment variables, for example:
For VC++ 6, there's an included Makefile.vc6 that should be possible
to use out-of-the-box.
set ZLIB_PATH=c:\zlib-1.2.3
set OPENSSL_PATH=c:\openssl-0.9.8d
set LIBSSH2_PATH=c:\libssh2-0.15
ATTENTION: if you want to build with libssh2 support you have to use latest
sources fetched from CVS - the current 0.14 release will NOT work!
Use 'make mingw32-ssh2-ssl' to build curl with SSH2 and SSL enabled.
Cygwin
------
Almost identical to the unix installation. Run the configure script in the
curl root with 'sh configure'. Make sure you have the sh executable in
/bin/ or you'll see the configure fail towards the end.
Run 'make'
Dev-Cpp
-------
See the separate INSTALL.devcpp file for details.
MSVC from command line
----------------------
Run the 'vcvars32.bat' file to get a proper environment. The
vcvars32.bat file is part of the Microsoft development environment and
you may find it in 'C:\Program Files\Microsoft Visual Studio\vc98\bin'
provided that you installed Visual C/C++ 6 in the default directory.
Then run 'nmake vc' in curl's root directory.
If you want to compile with zlib support, you will need to build
zlib (http://www.gzip.org/zlib/) as well. Please read the zlib
documentation on how to compile zlib. Define the ZLIB_PATH environment
variable to the location of zlib.h and zlib.lib, for example:
set ZLIB_PATH=c:\zlib-1.2.3
Then run 'nmake vc-zlib' in curl's root directory.
If you want to compile with SSL support you need the OpenSSL package.
Please read the OpenSSL documentation on how to compile and install
the OpenSSL libraries. The build process of OpenSSL generates the
libeay32.dll and ssleay32.dll files in the out32dll subdirectory in
the OpenSSL home directory. OpenSSL static libraries (libeay32.lib,
ssleay32.lib, RSAglue.lib) are created in the out32 subdirectory.
Before running nmake define the OPENSSL_PATH environment variable with
the root/base directory of OpenSSL, for example:
set OPENSSL_PATH=c:\openssl-0.9.8d
Then run 'nmake vc-ssl' or 'nmake vc-ssl-dll' in curl's root
directory. 'nmake vc-ssl' will create a libcurl static and dynamic
libraries in the lib subdirectory, as well as a statically linked
version of curl.exe in the src subdirectory. This statically linked
version is a standalone executable not requiring any DLL at
runtime. This make method requires that you have the static OpenSSL
libraries available in OpenSSL's out32 subdirectory.
'nmake vc-ssl-dll' creates the libcurl dynamic library and
links curl.exe against libcurl and OpenSSL dynamically.
This executable requires libcurl.dll and the OpenSSL DLLs
at runtime.
Run 'nmake vc-ssl-zlib' to build with both ssl and zlib support.
Borland C++ compiler
---------------------
compile openssl
Make sure you include the paths to curl/include and openssl/inc32 in
your bcc32.cnf file
eg : -I"c:\Bcc55\include;c:\path_curl\include;c:\path_openssl\inc32"
Check to make sure that all of the sources listed in lib/Makefile.b32
are present in the /path_to_curl/lib directory. (Check the src
directory for missing ones.)
Make sure the environment variable "BCCDIR" is set to the install
location for the compiler eg : c:\Borland\BCC55
command line:
make -f /path_to_curl/lib/Makefile-ssl.b32
compile simplessl.c with appropriate links
c:\curl\docs\examples\> bcc32 -L c:\path_to_curl\lib\libcurl.lib
-L c:\borland\bcc55\lib\psdk\ws2_32.lib
-L c:\openssl\out32\libeay32.lib
-L c:\openssl\out32\ssleay32.lib
simplessl.c
With SSL:
MSVC IDE
--------
MingW32 (GCC-2.95) style
------------------------
Run the 'mingw32.bat' file to get the proper environment variables
set, then run 'make mingw32-ssl' in the root dir.
If you use VC++, Borland or similar compilers. Include all lib source
files in a static lib "project" (all .c and .h files that is).
(you should name it libcurl or similar)
If you have any problems linking libraries or finding header files, be
sure to look at the provided "Makefile.m32" files for the proper
paths, and adjust as necessary.
Make the sources in the src/ drawer be a "win32 console application"
project. Name it curl.
Cygwin style
------------
Haven't done, nor got any reports on how to do. It should although be
identical to the unix setup for the same purpose. See above.
Microsoft command line style
----------------------------
Run the 'vcvars32.bat' file to get a proper environment. The
vcvars32.bat file is part of the Microsoft development environment and
you may find it in 'C:\Program Files\Microsoft Visual Studio\vc98\bin'
provided that you installed Visual C/C++ 6 in the default directory.
Then run 'nmake vc' in curl's root directory.
If you want to compile with zlib support, you will need to build
zlib (http://www.gzip.org/zlib/) as well. Please read the zlib
documentation on how to compile zlib. Define the ZLIB_PATH environment
variable to the location of zlib.h and zlib.lib, for example:
set ZLIB_PATH=c:\zlib-1.2.1
Then run 'nmake vc-zlib' in curl's root directory.
If you want to compile with SSL support you need the OpenSSL package.
Please read the OpenSSL documentation on how to compile and install
the OpenSSL libraries. The build process of OpenSSL generates the
libeay32.dll and ssleay32.dll files in the out32dll subdirectory in
the OpenSSL home directory. OpenSSL static libraries (libeay32.lib,
ssleay32.lib, RSAglue.lib) are created in the out32 subdirectory.
Before running nmake define the OPENSSL_PATH environment variable with
the root/base directory of OpenSSL, for example:
set OPENSSL_PATH=c:\openssl-0.9.7d
Then run 'nmake vc-ssl' or 'nmake vc-ssl-dll' in curl's root
directory. 'nmake vc-ssl' will create a libcurl static and dynamic
libraries in the lib subdirectory, as well as a statically linked
version of curl.exe in the src subdirectory. This statically linked
version is a standalone executable not requiring any DLL at
runtime. This make method requires that you have the static OpenSSL
libraries available in OpenSSL's out32 subdirectory.
'nmake vc-ssl-dll' creates the libcurl dynamic library and
links curl.exe against libcurl and OpenSSL dynamically.
This executable requires libcurl.dll and the OpenSSL DLLs
at runtime.
Run 'nmake vc-ssl-zlib' to build with both ssl and zlib support.
Microsoft / Borland style
-------------------------
If you have OpenSSL, and want curl to take advantage of it, edit your
project properties to use the SSL include path, link with the SSL libs
and define the USE_SSLEAY symbol.
Using Borland C++ compiler version 5.5.1 (available as free download
from Borland's site)
---------------------------------------------------------------------
compile openssl
Make sure you include the paths to curl/include and openssl/inc32 in
your bcc32.cnf file
For VC++ 6, there's an included Makefile.vc6 that should be possible
to use out-of-the-box.
eg : -I"c:\Bcc55\include;c:\path_curl\include;c:\path_openssl\inc32"
Disabling Specific Protocols in Win32 builds
--------------------------------------------
Check to make sure that all of the sources listed in lib/Makefile.b32
are present in the /path_to_curl/lib directory. (Check the src
directory for missing ones.)
The configure utility, unfortunately, is not available for the Windows
environment, therefore, you cannot use the various disable-protocol
options of the configure utility on this platform.
Make sure the environment variable "BCCDIR" is set to the install
location for the compiler eg : c:\Borland\BCC55
However, you can use the following defines to disable specific
protocols:
command line:
make -f /path_to_curl/lib/Makefile-ssl.b32
HTTP_ONLY disables all protocols except HTTP
CURL_DISABLE_FTP disables FTP
CURL_DISABLE_LDAP disables LDAP
CURL_DISABLE_TELNET disables TELNET
CURL_DISABLE_DICT disables DICT
CURL_DISABLE_FILE disables FILE
compile simplessl.c with appropriate links
If you want to set any of these defines you have the following
possibilities:
c:\curl\docs\examples\> bcc32 -L c:\path_to_curl\lib\libcurl.lib
-L c:\borland\bcc55\lib\psdk\ws2_32.lib
-L c:\openssl\out32\libeay32.lib
-L c:\openssl\out32\ssleay32.lib
simplessl.c
- Modify lib/setup.h
- Modify lib/Makefile.vc6
- Add defines to Project/Settings/C/C++/General/Preprocessor Definitions
in the curllib.dsw/curllib.dsp Visual C++ 6 IDE project.
Disabling Specific Protocols:
The configure utility, unfortunately, is not available for the Windows
environment, therefore, you cannot use the various disable-protocol
options of the configure utility on this platform.
Important static libcurl usage note
-----------------------------------
However, you can use the following defines to disable specific
protocols:
When building an application that uses the static libcurl library, you must
add '-DCURL_STATICLIB' to your CFLAGS. Otherwise the linker will look for
dynamic import symbols.
HTTP_ONLY disables all protocols except HTTP
CURL_DISABLE_FTP disables FTP
CURL_DISABLE_LDAP disables LDAP
CURL_DISABLE_TELNET disables TELNET
CURL_DISABLE_DICT disables DICT
CURL_DISABLE_FILE disables FILE
CURL_DISABLE_GOPHER disables GOPHER
If you want to set any of these defines you have the following
possibilities:
- Modify lib/setup.h
- Modify lib/Makefile.vc6
- Add defines to Project/Settings/C/C++/General/Preprocessor Definitions
in the curllib.dsw/curllib.dsp Visual C++ 6 IDE project.
IBM OS/2
========
Building under OS/2 is not much different from building under unix.
You need:
@@ -313,6 +354,7 @@ IBM OS/2
If you're getting huge binaries, probably your makefiles have the -g in
CFLAGS.
VMS
===
(The VMS section is in whole contributed by the friendly Nico Baggus)
@@ -353,9 +395,9 @@ VMS
+----+------------+-------------+---+
With the Ctrl-bits an application can tell if part or the whole message has
allready been printed from the program, DCL doesn't need to print it again.
already been printed from the program, DCL doesn't need to print it again.
Facility - basicaly the program ID. A code assigned to the program
Facility - basically the program ID. A code assigned to the program
the name can be fetched from external or internal message libraries
Errorcode - the errodes assigned by the application
Sev. - severity: Even = error, off = non error
@@ -383,11 +425,12 @@ VMS
13-jul-2001
N. Baggus
QNX
===
(This section was graciously brought to us by David Bentham)
As QNX is targetted for resource constrained environments, the QNX headers
As QNX is targeted for resource constrained environments, the QNX headers
set conservative limits. This includes the FD_SETSIZE macro, set by default
to 32. Socket descriptors returned within the CURL library may exceed this,
resulting in memory faults/SIGSEGV crashes when passed into select(..)
@@ -397,44 +440,6 @@ QNX
libcurl, by overriding CFLAGS during configure, example
# configure CFLAGS='-DFD_SETSIZE=64 -g -O2'
CROSS COMPILE
=============
(This section was graciously brought to us by Jim Duey, 23-oct-2001)
Download and unpack the cURL package. Version should be 7.9.1 or later.
'cd' to the new directory. (ie. curl-7.9.1-pre4)
Set environment variables to point to the cross-compile toolchain and call
configure with any options you need. Be sure and specify the '--host' and
'--build' parameters at configuration time. The following script is an
example of cross-compiling for the IBM 405GP PowerPC processor using the
toolchain from MonteVista for Hardhat Linux.
(begin script)
#! /bin/sh
export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin
export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include"
export AR=ppc_405-ar
export AS=ppc_405-as
export LD=ppc_405-ld
export RANLIB=ppc_405-ranlib
export CC=ppc_405-gcc
export NM=ppc_405-nm
configure --target=powerpc-hardhat-linux \
--host=powerpc-hardhat-linux \
--build=i586-pc-linux-gnu \
--prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \
--exec-prefix=/usr/local
(end script)
The '--prefix' parameter specifies where cURL will be installed. If
'configure' completes successfully, do 'make' and 'make install' as usual.
RISC OS
=======
@@ -472,37 +477,215 @@ AmigaOS
NetWare
=======
To compile curl.nlm / libcurl.nlm you need:
- either any gcc / nlmconv, or CodeWarrior 7 PDK 4 or later.
- gnu make and awk running on the platform you compile on;
native Win32 versions can be downloaded from:
http://www.gknw.com/development/prgtools/
- recent Novell LibC SDK availabable from:
http://www.gknw.net/development/prgtools/
- recent Novell LibC SDK available from:
http://developer.novell.com/ndk/libc.htm
- optional zlib sources (at the moment only dynamic linking with zlib.imp);
sources with NetWare Makefile can be optained from:
http://www.gknw.com/mirror/zlib/
sources with NetWare Makefile can be obtained from:
http://www.gknw.net/mirror/zlib/
- optional OpenSSL sources (version 0.9.8 or later which builds with BSD);
Set a search path to your compiler, linker and tools; if you want to have
zlib support then set the environment var ZLIB_PATH pointing to your zlib
sources, on Linux make sure the var OSTYPE contains the string 'linux';
and finally type 'make netware' from the top source directory...
Set a search path to your compiler, linker and tools; on Linux make
sure that the var OSTYPE contains the string 'linux'; and then type
'make netware' from the top source directory; other tagets available
are 'netware-ssl', 'netware-ssl-zlib', 'netware-zlib' and 'netware-ares';
if you need other combinations you can control the build with the
environment variables WITH_SSL, WITH_ZLIB, WITH_ARES and ENABLE_IPV6.
I found on some Linux systems (RH9) that OS detection didnt work although
a 'set | grep OSTYPE' shows the var present and set; I simply overwrote it
with 'OSTYPE=linux-rh9-gnu' and the detection in the Makefile worked...;
other options are currently not supported, although partly prepared.
The Ares lib builds arlready fine, and both test tools work fine at least
when build with CodeWarrior...; dont know yet why they fail when build with
gcc though; if you want to compile with Ares support then set an env var
WITH_ARES=1; I've not tested yet including libcares into curl.
with 'OSTYPE=linux-rh9-gnu' and the detection in the Makefile worked...
Any help in testing appreciated!
Buils automatically created 4 times a day from current CVS are here:
http://www.gknw.com/mirror/curl/autobuilds/
the status of these buids can be viewed at the autobuild table:
Builds automatically created 8 times a day from current CVS are here:
http://www.gknw.net/mirror/curl/autobuilds/
the status of these builds can be viewed at the autobuild table:
http://curl.haxx.se/auto/
eCos
====
curl does not use the eCos build system, so you must first build eCos
separately, then link curl to the resulting eCos library. Here's a sample
configure line to do so on an x86 Linux box targeting x86:
GCCLIB=`gcc -print-libgcc-file-name` && \
CFLAGS="-D__ECOS=1 -nostdinc -I$ECOS_INSTALL/include \
-I`dirname $GCCLIB`/include" \
LDFLAGS="-nostdlib -Wl,--gc-sections -Wl,-static \
-L$ECOS_INSTALL/lib -Ttarget.ld -ltarget" \
./configure --host=i386 --disable-shared \
--without-ssl --without-zlib --disable-manual --disable-ldap
In most cases, eCos users will be using libcurl from within a custom
embedded application. Using the standard 'curl' executable from
within eCos means facing the limitation of the standard eCos C
startup code which does not allow passing arguments in main(). To
run 'curl' from eCos and have it do something useful, you will need
to either modify the eCos startup code to pass in some arguments, or
modify the curl application itself to retrieve its arguments from
some location set by the bootloader or hard-code them.
Something like the following patch could be used to hard-code some
arguments. The MTAB_ENTRY line mounts a RAM disk as the root filesystem
(without mounting some kind of filesystem, eCos errors out all file
operations which curl does not take to well). The next section synthesizes
some command-line arguments for curl to use, in this case to direct curl
to read further arguments from a file. It then creates that file on the
RAM disk and places within it a URL to download: a file: URL that
just happens to point to the configuration file itself. The results
of running curl in this way is the contents of the configuration file
printed to the console.
--- src/main.c 19 Jul 2006 19:09:56 -0000 1.363
+++ src/main.c 24 Jul 2006 21:37:23 -0000
@@ -4286,11 +4286,31 @@
}
+#ifdef __ECOS
+#include <cyg/fileio/fileio.h>
+MTAB_ENTRY( testfs_mte1,
+ "/",
+ "ramfs",
+ "",
+ 0);
+#endif
int main(int argc, char *argv[])
{
int res;
struct Configurable config;
+#ifdef __ECOS
+ char *args[] = {"ecos-curl", "-K", "curlconf.txt"};
+ FILE *f;
+ argc = sizeof(args)/sizeof(args[0]);
+ argv = args;
+
+ f = fopen("curlconf.txt", "w");
+ if (f) {
+ fprintf(f, "--url file:curlconf.txt");
+ fclose(f);
+ }
+#endif
memset(&config, 0, sizeof(struct Configurable));
config.errors = stderr; /* default errors to stderr */
Minix
=====
curl can be compiled on Minix 3 using gcc (ACK has a few problems due
to mismatched headers and libraries as of ver. 3.1.2). The gcc and bash
packages must be installed first. The default heap size allocated to
bash is inadequate for running configure and will result in out of memory
errors. Increase it with the command:
chmem =2048000 /usr/local/bin/bash
Make sure gcc and bash are in the PATH then configure curl with a
command like this:
./configure GREP=/usr/bin/grep AR=/usr/gnu/bin/gar --disable-ldap
Then simply run 'make'.
CROSS COMPILE
=============
(This section was graciously brought to us by Jim Duey, with additions by
Dan Fandrich)
Download and unpack the cURL package. Version should be 7.9.1 or later.
'cd' to the new directory. (e.g. cd curl-7.12.3)
Set environment variables to point to the cross-compile toolchain and call
configure with any options you need. Be sure and specify the '--host' and
'--build' parameters at configuration time. The following script is an
example of cross-compiling for the IBM 405GP PowerPC processor using the
toolchain from MonteVista for Hardhat Linux.
(begin script)
#! /bin/sh
export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin
export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include"
export AR=ppc_405-ar
export AS=ppc_405-as
export LD=ppc_405-ld
export RANLIB=ppc_405-ranlib
export CC=ppc_405-gcc
export NM=ppc_405-nm
./configure --target=powerpc-hardhat-linux \
--host=powerpc-hardhat-linux \
--build=i586-pc-linux-gnu \
--prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \
--exec-prefix=/usr/local
(end script)
You may also need to provide a parameter like '--with-random=/dev/urandom'
to configure as it cannot detect the presence of a random number
generating device for a target system. The '--prefix' parameter
specifies where cURL will be installed. If 'configure' completes
successfully, do 'make' and 'make install' as usual.
In some cases, you may be able to simplify the above commands to as
little as:
./configure --host=ARCH-OS
REDUCING SIZE
=============
There are a number of configure options that can be used to reduce the
size of libcurl for embedded applications where binary size is an
important factor. First, be sure to set the CFLAGS variable when
configuring with any relevant compiler optimization flags to reduce the
size of the binary. For gcc, this would mean at minimum the -Os option
and probably the -march=X option as well, e.g.:
./configure CFLAGS='-Os' ...
Be sure to specify as many --disable- and --without- flags on the configure
command-line as you can to disable all the libcurl features that you
know your application is not going to need. Besides specifying the
--disable-PROTOCOL flags for all the types of URLs your application
will not use, here are some other flags that can reduce the size of the
library:
--disable-ares (disables support for the ARES DNS library)
--disable-cookies (disables support for HTTP cookies)
--disable-crypto-auth (disables HTTP cryptographic authentication)
--disable-ipv6 (disables support for IPv6)
--disable-verbose (eliminates debugging strings and error code strings)
--enable-hidden-symbols (eliminates unneeded symbols in the shared library)
--without-libidn (disables support for the libidn DNS library)
--without-ssl (disables support for SSL/TLS)
--without-zlib (disables support for on-the-fly decompression)
The GNU linker has a number of options to reduce the size of the libcurl
dynamic libraries on some platforms even further. Specify them by giving
the options -Wl,-Bsymbolic and -Wl,-s on the gcc command-line.
Be sure also to strip debugging symbols from your binaries after
compiling using 'strip' (or the appropriate variant if cross-compiling).
If space is really tight, you may be able to remove some unneeded
sections of the shared library using the -R option to objcopy (e.g. the
.comment section).
Using these techniques it is possible to create an HTTP-only shared
libcurl library for i386 Linux platforms that is less than 90 KB in
size (as of version 7.15.4).
You may find that statically linking libcurl to your application will
result in a lower total size.
PORTS
=====
This is a probably incomplete list of known hardware and operating systems
@@ -523,31 +706,36 @@ PORTS
- MIPS IRIX 6.2, 6.5
- MIPS Linux
- Pocket PC/Win CE 3.0
- Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1
- Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1, 5.2
- PowerPC Darwin 1.0
- PowerPC Linux
- PowerPC Mac OS 9
- PowerPC Mac OS X
- SuperH4 Linux 2.6.X
- SINIX-Z v5
- Sparc Linux
- Sparc Solaris 2.4, 2.5, 2.5.1, 2.6, 7, 8
- Sparc Solaris 2.4, 2.5, 2.5.1, 2.6, 7, 8, 9, 10
- Sparc SunOS 4.1.X
- StrongARM (and other ARM) RISC OS 3.1, 4.02
- StrongARM Linux 2.4
- StrongARM/ARM7/ARM9 Linux 2.4, 2.6
- StrongARM NetBSD 1.4.1
- Ultrix 4.3a
- UNICOS 9.0
- i386 BeOS
- i386 DOS
- i386 eCos 1.3.1
- i386 Esix 4.1
- i386 FreeBSD
- i386 HURD
- i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4
- i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4, 2.6
- i386 MINIX 3.1.2
- i386 NetBSD
- i386 Novell NetWare
- i386 OS/2
- i386 OpenBSD
- i386 SCO unix
- i386 Solaris 2.7
- i386 Windows 95, 98, ME, NT, 2000
- i386 Windows 95, 98, ME, NT, 2000, XP, 2003
- i386 QNX 6
- i486 ncr-sysv4.3.03 (NCR MP-RAS)
- ia64 Linux 2.3.99
@@ -565,3 +753,6 @@ OpenSSL http://www.openssl.org
MingW http://www.mingw.org
OpenLDAP http://www.openldap.org
Zlib http://www.gzip.org/zlib/
libssh2 http://www.libssh2.org

302
docs/INSTALL.devcpp Normal file
View File

@@ -0,0 +1,302 @@
DevCpp-Mingw Install & Compilation Sept 2005
==================================
Reference Emails available at curl@haxx.se:
Libcurl Install and Use Issues
Awaiting an Answer for Win 32 Install
res = curl_easy_perform(curl); Error
Makefile Issues
Having previously done a thorough review of what was available that met my
requirements under GPL, I settled for Libcurl as the software of choice for
many reasons not the least of which was the support.
Background
----------
This quest started when I innocently tried to incorporate the libcurl library
into my simple source code. I figured that a few easy steps would accomplish
this without major headaches. I had no idea that I would be facing an almost
insurmountable challenge.
The main problem lies in two areas. First the bulk of support for libcurl
exists for a Unix/linux command line environments. This is of little help when
it comes to Windows O/S.
Secondly the help that does exist for the Windows O/S focused around mingw
thru a command line argument environment.
You may ask "Why is this a problem?"
I'm using a Windows O/S with DevCpp. For those of you who are unfamiliar with
DevCpp, it is a window shell GUI that replaces the command line environment
for gcc. A definite improvement that I am unwilling to give up. However using
DevCpp presented its own set of issues. Inadvertently I also made some
careless errors such as compiling the 7.14 version of Makefile with an older
version of source code. Thanks to Dan Fandrich for picking this up.
I did eventually with the help of Daniel, Phillipe and others manage to
implement successfully (the only mingw available version)
curl-7.13.0-win32-ssl-devel-mingw32 into the DevCpp environment. Only the
dynamic libcurl.dll libcurldll.a libraries worked. The static library which I
was interested in did not. Furthermore when I tried to implement one of the
examples included with the curl package (get info.c) it caused the executable
to crash. Tracing the bug I found it in the code and function res =
curl_easy_perform(curl);.
At this point I had to make a choice as to whether invest my limited
time-energy resource to fixing the bug or to compile the new version
available. After searching the archives I found a very similar or the same bug
reported from version 7.12x on. Daniel did inform me that he thought that this
bug had been fixed with the latest version. So I proceeded to compile the
latest SSL version where I faced other challenges.
In order to make this process unremarkable for others using the same
environment I decided to document the process so that others will find it
routine. It would be a shame if newbies could not implement this excellent
package for their use.
I would like to thank the many others in this forum and in the DevCpp forum
for their help. Without your help I may either have given up or it would have
taken me many times longer to achieve success.
The Cookbook Approach
---------------------
This discussion will be confined to a SSL static library compilation and
installation. Limited mention and comments will be inserted where appropriate
to help with non-SSL, dynamic libraries and executables.
Using Makefile from DevCpp to compile Libcurl libraries
Preamble
--------
Using the latest version release - curl-7.14.0.tar.gz. Curl source code is
platform independent. This simply means that the source code can be compiled
for any Operating System (Linux/Unix Windows etc. and variations of thereof).
The first thing to note is that inside curl-7.14.0 you will find two folders
lib and src. Both contain Makefile.m32 (required for win mingw library or exe
compilation) files which are different. The main difference between these two
folders and the makefiles is that the src folder contents are used to compile
an executable file(curl.exe) while the lib folder contents are used to compile
a static (libcurl.a) and dynamic (libcurl.dll & libcurldll.a) file that can be
used to compile libcurl with your own source code so that one can use and
access all libcurl functions.
Before we start please make sure that DevCpp is installed properly. In
particular make sure you have no spaces in the name of any of the directories
and subdirectories where DevCpp is installed. Failure to comply with the
install instructions may produce erratic behaviour in DevCpp. For further info
check the following sites
http://aditsu.freeunixhost.com/dev-cpp-faq.html
http://sourceforge.net/forum/message.php?msg_id=3252213
As I have mentioned before I will confine this to the SSL Library compilations
but the process is very similar for compilation of the executable - curl.exe;
just substitute the src folder makefile in its stead.
First use a text processor Notepad, or your own favourite text processor. To
engage your favourite text processor, select Makefile.m32 click once with your
mouse on file icon; icon turns blue, press the shift key and right-click on
mouse, menu appears select "Open with", select your favourite text processor.
Next read the contents of Makefile.m32. It includes instructions on its use.
Method I - DOS Command Line
---------------------------
Note - The only reason I have included this method is that Method II which is
the preferred method for compiling does not allow for the setting of option
switches (e.g. SSL = 1 or SSL =0). At least that's what they tell me at the
Dev-Cpp forum.
1 - Make a copy of (D:\Dev-Cpp\bin) bin folder and name it "bin Original"
place it in the Dev-Cpp installed directory (D:\Dev-Cpp\ for this example)
2 - Copy the entire contents of the LIB folder of curl-7.14.0.tar.gz or zip
version into the bin folder above (D:\Dev-Cpp\bin). The reason being is that
the make.exe file resides in this folder. Make.exe will use - Makefile.m32,
Makefile.inc, and the source code included in the lib folder to compile the
source code. There is a PATH issue with make.exe that remains unresolved at
least for me. Unless the entire source code to be compiled is placed entirely
within the directory of make.exe an error message will be generated - "file
xxxx.yyy not available".
3- Go to Dev-Cpp\bin and double click on make .exe. You will see a DOS window
quickly pop up and close very quickly. Not to worry! Please do not skip this
step.
4- Click on the start button\Programs\MS-DOS Prompt.Once the DOS Window is up
Type the disk drive letter (e.g. E: ) engage the enter button. The path should
automatically take you to the directory of the make.exe file.
5- To compile the source code simply type at the DOS prompt make -f
Makefile.m32 as per instructions contained in the Makefile.m32 file (use any
text processor to read instructions). I don't believe that this makefile
allows for the option of non SSL. Ignore any warnings.
6- Collect and make copies of libcurl.a, libcurl.dll, libcurldll.a and any *.o
compilations you might need in another directory outside of the bin directory
as you will need this files shortly to set up libcurl for use with
Dev-cpp. For most apps *.o is not required. Later on we will show what to do
with these files.
7- You are finished but before closing we need to do cleanup - erase the bin
folder and rename the "bin Original" folder created in step 1 to bin.
Note to compile a curl executable the process is probably similar but instead
of using the LIB folder contents use the SRC folder contents and Makefiles in
curl-7.14.0.tar.gz. File directories relative placements must be respected for
compiling to take place successfully. This may not be possible with the PATH
problem that make.exe experiences. If anyone has solved this PATH issue and
please make sure it actually works on Win 9x/2000/XP before letting me
know. Then please let me or Daniel in on the solution so that it can be
included with these instructions. Thanks.
or
Method II - Dev-Cpp GUI
-----------------------
1- Copy the entire contents of the LIB folder of curl-7.14.0.tar.gz or zip
version into any folder outside of (Dev-Cpp\bin).
2- Drop the File/New/click on Project.
3- New Project Dialogue box appears. Double click on the Static Library.
4- Create Project Dialogue box appears. Select the LIB folder location to
place and locate your Project File Name. Placing the Project File Name
elsewhere may cause problems (PATH issue problem again).
5- Drop down the Project/Project Options. Project Options Dialogue box
appears.
6- Select the Makefile tab in the Project Options Dialogue Box. Check Box -
Use Custom Makefile. Click on the Folder icon at the extreme right of the
Check Box. Select Makefile.m32 in the folder wherever you have placed the
contents of the LIB Folder. Press OK and close the Dialogue Box.
7- Drop the Menu Project/Click on Add to Project. Open File Dialogue Box
appears. The Dialogue Box should open in the folder wherever you have placed
the contents of the LIB Folder. If not go there.
8- Select Crtl-A to select all files in the LIB folder. Click on open to add
files and close box. Wait till all files are added. This may take 30 seconds
or longer.
9- Drop the Menu Execute/Click on Compile.
10- That's it.
The following steps must be completed if Curl is to work properly
=================================================================
LIB folder inclusions (*.a placement)
-------------------------------------
1- Refer to Method I - DOS Command Line point # 6 Take libcurl.a, libcurldll.a
and install it in the directory C( or whichever drive Dev is installed)
:\Dev-Cpp\lib.
Include Folder
--------------
1- Create a new folder by the name of curl (do not change the name curl to
some other name as it will cause major issues) in the directory
C:\Dev-Cpp\include.
2- Copy the entire contents of the curl folder of curl-7.14.0.tar.gz or zip
version into the newly created curl directory - C:\Dev-Cpp\include\curl.
Links To Include And Lib Folder
-------------------------------
1- Drop the Menu - Tools\Compiler Options\Directories\Libraries. Make sure
that C( or whichever drive Dev is installed):\DEV-CPP\lib is included.
2- Next select the Menu - Tools\Compiler Options\Directories\C Includes. Make
sure that C:\DEV-CPP\include and C:\Dev-Cpp\include\curl are included.
3- Next select the Menu - Tools\Compiler Options\Directories\C++
Includes. Make sure that C:\DEV-CPP\include and C:\Dev-Cpp\include\curl are
included.
Linker Links
------------
1- Drop the Menu - Tools\Compiler Options\Directories\Compiler.
2- Make sure that the box "Add these commands to the linker command line" is
checked.
3- Include in the white space immediately below the box referred in 2 -lcurl
-lws2_32 -lwinmm.
SSL Files
---------
1- Get the latest openSSL (as of time of this writing)
openssl-0.9.7e-win32-bin.zip for the minimalist package of the openssl-0.9.7e
binaries ported to MS Windows 95/98/NT/XP using the MingW32/GCC-3.1
development environment. The file may be downloaded at
http://curl.haxx.se/download/.
2- Open the above zip file. You will find two files - SDL.dll,
SDL_mixer.dll. Install them in the directory C:\WINDOWS\SYSTEM32 for Win 9x
users and c:\winnt\system32 for NT-family users.
Multithreading Files
--------------------
To be completed
#define
-------
1- Make sure that your program includes the following - #define CURL_STATICLIB
must be declared FIRST before any other define functions may be
added. Otherwise you may experience link errors.
2- Don't forget to include #include "curl/curl.h".
e.g.
#define CURL_STATICLIB
#include <windows.h>
#include "curl/curl.h"
#include <fstream>
#include <iostream>
#include <vector>
etc...
Static or Dynamic Library
-------------------------
The above steps apply for the use by a static library. Should you choose to
use a dynamic library you will be required to perform these additional steps.
1- Refer to Method I - DOS Command Line point # 6. Install libcurl.dll in the
directory C:\WINDOWS\SYSTEM32 for Win 9x users and c:\winnt\system32 for
NT-family users.
2- Refer to Linker Links point 3 - Replace -lcurl with -lcurldll.
Voila you're done.
The non-SSL static Library build may not be possible to use at least as of the
time of this writing - v7.14. Check reference emails - Phillipe and I found it
impossible to fully compile as certain files were missing for linking. No big
loss as SSL is a major plus.
Hope this Helps
Tom

View File

@@ -3,56 +3,145 @@ join in and help us correct one or more of these! Also be sure to check the
changelog of the current development status, as one or more of these problems
may have been fixed since this was written!
* curl version 7.12.2 fails on AIX if compiled with --enable-ares.
41. When doing an operation over FTP that requires the ACCT command (but not
when logging in), the operation will fail since libcurl doesn't detect this
and thus fails to issue the correct command:
http://curl.haxx.se/bug/view.cgi?id=1693337
40. Mac OS X test failures (Daniel Johnson)
http://curl.haxx.se/mail/lib-2007-03/0095.html
39. Steffen Rumler's Race Condition in Curl_proxyCONNECT:
http://curl.haxx.se/mail/lib-2007-01/0045.html
38. Kumar Swamy Bhatt's problem in ftp/ssl "LIST" operation:
http://curl.haxx.se/mail/lib-2007-01/0103.html
37. Having more than one connection to the same host when doing NTLM
authentication (with performs multiple "passes" and authenticates a
connection rather than a HTTP request), and particularly when using the
multi interface, there's a risk that libcurl will re-use a wrong connection
when doing the different passes in the NTLM negotiation and thus fail to
negotiate (in seemingly mysterious ways).
35. Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very
bad when used with the multi interface.
34. The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
Also see #12. According to bug #1556528, even the SOCKS5 connect code does
not do it right: http://curl.haxx.se/bug/view.cgi?id=1556528,
33. Doing multi-pass HTTP authentication on a non-default port does not work.
This happens because the multi-pass code abuses the redirect following code
for doing multiple requests, and when we following redirects to an absolute
URL we must use the newly specified port and not the one specified in the
original URL. A proper fix to this would need to separate the negotiation
"redirect" from an actual redirect.
32. (At least on Windows) If libcurl is built with c-ares and there's no DNS
server configured in the system, the ares_init() call fails and thus
curl_easy_init() fails as well. This causes weird effects for people who use
numerical IP addresses only.
31. "curl-config --libs" will include details set in LDFLAGS when configure is
run that might be needed only for building libcurl. Similarly, it might
include options that perhaps aren't suitable both for static and dynamic
linking. Further, curl-config --cflags suffers from the same effects with
CFLAGS/CPPFLAGS.
30. You need to use -g to the command line tool in order to use RFC2732-style
IPv6 numerical addresses in URLs.
29. IPv6 URLs with zone ID is not supported.
http://www.ietf.org/internet-drafts/draft-fenner-literal-zone-02.txt
specifies the use of a plus sign instead of a percent when specifying zone
IDs in URLs to get around the problem of percent signs being
special. According to the reporter, Firefox deals with the URL _with_ a
percent letter (which seems like a blatant URL spec violation).
See http://curl.haxx.se/bug/view.cgi?id=1371118
26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in
"system context" will make it use wrong(?) user name - at least when compared
to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=1281867
23. SOCKS-related problems:
A) libcurl doesn't support SOCKS for IPv6.
B) libcurl doesn't support FTPS over a SOCKS proxy.
C) We don't have any test cases for SOCKS proxy.
E) libcurl doesn't support active FTP over a SOCKS proxy
We probably have even more bugs and lack of features when a SOCKS proxy is
used.
22. Sending files to a FTP server using curl on VMS, might lead to curl
complaining on "unaligned file size" on completion. The problem is related
to VMS file structures and the perceived file sizes stat() returns. A
possible fix would involve sending a "STRU VMS" command.
http://curl.haxx.se/bug/view.cgi?id=1156287
21. FTP ASCII transfers do not follow RFC959. They don't convert the data
accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
clearly describes how this should be done:
The sender converts the data from an internal character representation to
the standard 8-bit NVT-ASCII representation (see the Telnet
specification). The receiver will convert the data from the standard
form to his own internal form.
Since 7.15.4 at least line endings are converted.
16. FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
<password>, and <fpath> components, encoded as "%00". The problem is that
curl_unescape does not detect this, but instead returns a shortened C
string. From a strict FTP protocol standpoint, NUL is a valid character
within RFC 959 <string>, so the way to handle this correctly in curl would
be to use a data structure other than a plain C string, one that can handle
embedded NUL characters. From a practical standpoint, most FTP servers
would not meaningfully support NUL characters within RFC 959 <string>,
anyway (e.g., UNIX pathnames may not contain NUL).
14. Test case 165 might fail on system which has libidn present, but with an
old iconv version (2.1.3 is a known bad version), since it doesn't recognize
the charset when named ISO8859-1. Changing the name to ISO-8859-1 makes the
test pass, but instead makes it fail on Solaris hosts that use its native
iconv.
13. curl version 7.12.2 fails on AIX if compiled with --enable-ares.
The workaround is to combine --enable-ares with --disable-shared
* When connecting to a SOCKS proxy, the (connect) timeout is not properly
12. When connecting to a SOCKS proxy, the (connect) timeout is not properly
acknowledged after the actual TCP connect (during the SOCKS "negotiate"
phase). Pointed out by Lucas. Fix: need to select() and timeout properly.
phase).
* Using configure --disable-[protocol] may cause 'make test' to fail for
tests using the disabled protocol(s).
* To get HTTP Negotiate authentication to work fine, you need to provide a
10. To get HTTP Negotiate authentication to work fine, you need to provide a
(fake) user name (this concerns both curl and the lib) because the code
wrongly only considers authentication if there's a user name provided.
Bug report #1004841. How? http://curl.haxx.se/mail/lib-2004-08/0182.html
http://curl.haxx.se/bug/view.cgi?id=1004841. How?
http://curl.haxx.se/mail/lib-2004-08/0182.html
* If you use a very large amount of file descriptors (more than FD_SETSIZE)
and then use libcurl, it might crash on its use of select() which then
stores data out of bounds. Bug report #948950.
* --limit-rate using -d or -F does not work. This is because the limit logic
is provided by the curl app in its read/write callbacks, and when doing
-d/-F the callbacks aren't used! Bug report #921395.
* Doing resumed upload over HTTP does not work with '-C -', because curl
8. Doing resumed upload over HTTP does not work with '-C -', because curl
doesn't do a HEAD first to get the initial size. This needs to be done
manually for HTTP PUT resume to work, and then '-C [index]'.
* CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD have no way of providing user names
7. CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD have no way of providing user names
that contain a colon. This can't be fixed easily in a backwards compatible
way without adding new options (and then, they should most probably allow
setting user name and password separately).
* libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
6. libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
such parts should be sent to the server as 'CWD ' (without an argument).
The only exception to this rule, is that we knowingly break this if the
empty part is first in the path, as then we use the double slashes to
indicate that the user wants to reach the root dir (this exception SHALL
remain even when this bug is fixed).
* libcurl doesn't treat the content-length of compressed data properly, as
5. libcurl doesn't treat the content-length of compressed data properly, as
it seems HTTP servers send the *uncompressed* length in that header and
libcurl thinks of it as the *compressed* lenght. Some explanations are here:
libcurl thinks of it as the *compressed* length. Some explanations are here:
http://curl.haxx.se/mail/lib-2003-06/0146.html
* IPv6 support on AIX 4.3.3 doesn't work due to a missing sockaddr_storage
struct. It has been reported to work on AIX 5.1 though.
* GOPHER transfers seem broken
* If a HTTP server responds to a HEAD request and includes a body (thus
2. If a HTTP server responds to a HEAD request and includes a body (thus
violating the RFC2616), curl won't wait to read the response but just stop
reading and return back. If a second request (let's assume a GET) is then
immediately made to the same server again, the connection will be re-used

Some files were not shown because too many files have changed in this diff Show More