Compare commits

...

218 Commits

Author SHA1 Message Date
Daniel Stenberg
6bf9d56485 fix the find command line 2009-11-04 12:34:48 +00:00
Daniel Stenberg
367114bc87 avoid fiddling in the ares subdir since that isn't part of the release
tarball
2009-11-04 12:33:06 +00:00
Daniel Stenberg
81d45ed3a2 release coming up 2009-11-04 12:20:07 +00:00
Daniel Stenberg
7d74e02519 syntax 2009-11-04 12:13:20 +00:00
Daniel Stenberg
7611d30a05 I have next to no hope of fixing more bugs before 7.19.7 so all are now
moved to 7.19.8. I removed the bugs already in KNOWN_BUGS (but they should
of course still get fixed).

Added three recent bugs. 7.19.8 is targetted to get shipped in Janurary 2010
2009-11-04 10:17:28 +00:00
Dan Fandrich
3704375292 Put the Symbian binaries into the more modern locations in ROM 2009-11-04 00:27:19 +00:00
Dan Fandrich
ea1f30e686 Updated systems, bindings, NTLM support 2009-11-03 19:07:19 +00:00
Dan Fandrich
9732b7cebe Export the Symbian .iby files to make it easier to build a ROM 2009-11-03 00:22:56 +00:00
Daniel Stenberg
f39380b1ac strerror() => curl_easy_strerror() 2009-11-02 21:20:45 +00:00
Yang Tse
c8da2980ed include progress.h for Curl_pgrsSetDownloadCounter function prototype 2009-11-02 20:04:18 +00:00
Daniel Stenberg
b19dc0eeb0 - As reported independent by both Stan van de Burgt and Didier Brisebourg,
CURLINFO_SIZE_DOWNLOAD (the -w variable size_download) didn't work when
  getting data from ldap!
2009-11-02 18:49:56 +00:00
Daniel Stenberg
41de897b6b describe the cmake situation 2009-11-02 16:24:11 +00:00
Yang Tse
108b414bb8 Renamed c-ares setup.h to ares_setup.h 2009-11-02 11:55:53 +00:00
Yang Tse
be7af8beaa Adjust include paths to take in account that currently:
c-ares with --enable-curldebug uses memdebug.h from libcurl's lib subdirectory.

memdebug.h needs access to libcurl's setup.h from libcurl's lib subdirectory
and also needs access to libcurl's generated curl_config.h
2009-11-02 01:58:25 +00:00
Yang Tse
db1281fa9b Undo old temporary change once used for testing purposes 2009-11-01 20:26:02 +00:00
Daniel Stenberg
223d848104 - Gabriel Kuri reported a problem with CURLINFO_CONTENT_LENGTH_DOWNLOAD if the
download was 0 bytes, as libcurl would then return the size as unknown (-1)
  and not 0. I wrote a fix and test case 566 to verify it.
2009-10-31 18:51:50 +00:00
Yang Tse
d8884168e3 Mention many changes 2009-10-31 12:52:44 +00:00
Yang Tse
5dd64e9e4b Mention --enable-symbol-hiding configure option 2009-10-31 12:51:49 +00:00
Yang Tse
ce6731baf1 Symbol hiding configure options renamed to the hopefully less ambiguous
--enable-symbol-hiding and --disable-symbol-hiding as well as related
macro names and some internal variables used for them.

Related configuration file preprocessor symbols named to
CARES_SYMBOL_HIDING and CARES_SYMBOL_SCOPE_EXTERN.
2009-10-31 04:16:40 +00:00
Daniel Stenberg
2c0b65d37b Added test case 566 in an attempt to repeat bug 2884561
(http://curl.haxx.se/bug/view.cgi?id=2884561) but it seems to work for me...
2009-10-30 22:38:21 +00:00
Daniel Stenberg
a76f4ab7dd - Liza Alenchery mentioned a problem with re-used SCP connection when a bad
auth is used, as it caused a crash. I failed to repeat the issue, but still
  made a change that now forces the TCP connection used for a freed SCP
  session to get closed and not be re-used.
2009-10-30 22:28:56 +00:00
Daniel Stenberg
d68f215f03 - "Tom" posted a bug report that mentioned how libcurl did wrong when doing a
POST using a read callback, with Digest authentication and
  "Transfer-Encoding: chunked" enforced.  I would then cause the first request
  to be wrongly sent and then basically hang until the server closed the
  connection. I fixed the problem and added test case 565 to verify it.
2009-10-30 22:24:48 +00:00
Yang Tse
0a5ac52b49 Header inclusion depending on HAVE_* symbol.
Fix two typos.
2009-10-30 18:20:17 +00:00
Yang Tse
8acb3803e4 Comparison of the Initial revision of this file with ares_parse_a_reply.c
shows that this one is actually a modified copy of ares_parse_a_reply.c.

In order to comply with ares_parse_a_reply.c's M.I.T. license, the old
1998 M.I.T. copyright notice is now also preserved in this file the same
as it is done in other ares_parse_*.c files.
2009-10-30 18:07:17 +00:00
Yang Tse
ac62a94de3 Add CVS Id tag.
Fix identation of some license lines.
2009-10-30 18:03:57 +00:00
Yang Tse
0abcb37e3f Add CVS Id tag. 2009-10-30 18:03:04 +00:00
Yang Tse
7da5efd55c Fix comment 2009-10-30 16:27:30 +00:00
Yang Tse
d4ff44d5f6 In no particular order, changed/fixed all of the following in
ares_parse_txt_reply() current version:

- Fixed a couple of potential double free's.

- Fixed memory leaks upon out of memory condition.

- Fixed pointer arithmetic.

- Setting ntxtreply to zero upon entry for all failure cases.

- Changed data type to size_t for variables substr_len, str_len and
  the length member of ares_txt_reply struct.

- Avoided a couple of memcpy() calls.

- Changed i data type to unsigned int to prevent compiler warnings.

- Adjusted a comment.

- Use ARES_SUCCESS literal for successfull completion.

- Added CVS Id tag.
2009-10-30 16:21:56 +00:00
Yang Tse
fff706d702 Add c-ares DLL resource file to distribution archive 2009-10-29 19:13:20 +00:00
Yang Tse
eac4310b2e ignore files 2009-10-29 18:30:38 +00:00
Yang Tse
e87ee29e32 Empty subdir 2009-10-29 18:00:24 +00:00
Yang Tse
61ebbc01ed Updated MSVC 6.0 workspace and project files that allows building
dynamic and static c-ares libraries in debug and release flavours.

Additionally each of the three sample programs is built against
each of the four possible c-ares libraries, generating all this
a total number of 12 executables and 4 libraries.
2009-10-29 17:52:56 +00:00
Daniel Stenberg
15f425bdb8 no need to check for NULL pointers before dereferencing, as the pointers
MUST be valid and they are dereferenced further down in the function
unconditionally!
2009-10-29 09:12:40 +00:00
Daniel Stenberg
861092637b shorten the descriptions somewhat 2009-10-29 09:06:42 +00:00
Daniel Stenberg
3717b7a792 update to the new struct name 2009-10-29 09:06:22 +00:00
Daniel Stenberg
950a034895 Jakub Hrozek added ares_parse_txt_reply() for TXT parsing 2009-10-29 08:59:40 +00:00
Daniel Stenberg
982e655c07 use 'ares_srv_reply' for proper name-spacing 2009-10-29 08:50:34 +00:00
Yang Tse
308497ffc6 Fix compiler warning: control reaches end of non-void function 2009-10-29 04:02:21 +00:00
Yang Tse
b205525d34 Take in account c-ares 1.6.1 will use __declspec function decoration
for Win32 and Symbian unless CARES_STATICLIB is defined to use static
library linkage.
2009-10-29 03:48:00 +00:00
Yang Tse
654b6b6c63 Add reference for ares_parse_srv_reply.pdf 2009-10-29 02:40:16 +00:00
Yang Tse
3b908ed143 Add reference for ares_parse_srv_reply docs 2009-10-29 01:59:57 +00:00
Yang Tse
265ed24ac0 External API function linkage decoration adjustment 2009-10-29 01:34:19 +00:00
Yang Tse
57eeee2ec3 External API function linkage decoration adjustment 2009-10-29 01:02:54 +00:00
Daniel Stenberg
6a79b0e859 Since the NSS lib closes the socket the memory tracking system wrongly gets a
false positive on a leaked socket, so this introduces a way to tell the system
that the socket is indeed closed without explicitly closing it!
2009-10-28 20:30:23 +00:00
Yang Tse
0d9f14f5c1 Initial step towards the ability to reduce c-ares exported symbols
based on the 'visibility' attribute for GNUC and __global for Sun
compilers, taking also in account __declspec function decoration
for Win32 and Symbian DLL's.

Introducing configure options --enable-hidden-symbols and
--disable-hidden-symbols following libcurl's naming.
2009-10-28 19:45:26 +00:00
Yang Tse
9fced16efb libssh2 detection changes mentioned in http://curl.haxx.se/mail/lib-2009-10/0343.html 2009-10-28 00:33:28 +00:00
Yang Tse
f16868d301 Fix comment 2009-10-27 17:03:11 +00:00
Yang Tse
21af9bf1cd Fix spelling 2009-10-27 16:56:20 +00:00
Yang Tse
b2f4308980 Fix Pelles C Win32 target compilation issues 2009-10-27 16:38:42 +00:00
Daniel Stenberg
6a37135f4d grrr, removed the conflict markers 2009-10-26 08:54:23 +00:00
Daniel Stenberg
b8e1e63379 spell fix by Michael Wood 2009-10-26 08:53:07 +00:00
Daniel Stenberg
448d2b5f49 - Dima Barsky made the curl cookie parser accept cookies even with blank or
unparsable expiry dates and then treat them as session cookies - previously
  libcurl would reject cookies with a date format it couldn't parse. Research
  shows that the major browser treat such cookies as session cookies. I
  modified test 8 and 31 to verify this.
2009-10-25 18:15:14 +00:00
Dan Fandrich
7867d44251 Mention that Android works 2009-10-24 20:20:08 +00:00
Daniel Stenberg
2380ca1714 Fabian Keil's suggested wording 2009-10-24 16:34:04 +00:00
Yang Tse
a1cc78d5a1 John Engelhart noticed an unreleased problem relative to a duplicate
ARES_ECANCELLED error code value and missing error code description.
2009-10-23 15:49:05 +00:00
Patrick Monnerat
7531ac89d6 OS400 install: Duplicate H include file to file CURL to support more include path forms. 2009-10-23 15:05:45 +00:00
Daniel Stenberg
72acffc66c update the company sponsors part, as one company is no longer sponsoring
and another is sponsoring more
2009-10-22 07:56:10 +00:00
Yang Tse
525549f204 Update MSVC 6 caveats section 2009-10-21 18:46:00 +00:00
Yang Tse
3f8d3e9c50 Update memory tracking/debugging reference 2009-10-21 18:01:11 +00:00
Daniel Stenberg
1951cd1eee - Attempt to use pkg-config for finding out libssh2 installation details
during configure.
2009-10-21 14:56:25 +00:00
Daniel Stenberg
55aee95f11 mention bug 2848436 in regard to the TFTP problems 2009-10-21 12:39:27 +00:00
Daniel Stenberg
777134a07b s/koresh/Johan van Selst/ 2009-10-21 12:36:54 +00:00
Daniel Stenberg
4b8ce9423f add --crlfile to the man page 2009-10-21 12:33:56 +00:00
Daniel Stenberg
051ab439a9 - A patch in bug report #2883177 (http://curl.haxx.se/bug/view.cgi?id=2883177)
by user 'koresh' introduced the --crlfile option to curl, which makes curl
  tell libcurl about a file with CRL (certificate revocation list) data to
  read.
2009-10-21 12:29:52 +00:00
Daniel Stenberg
12e60c6d4e spelling corrections 2009-10-21 07:40:33 +00:00
Yang Tse
ff3223259f Detect when msvc 6.0 is in use without PSDK installed, intentionally
fail to build when this happens, and show an appropriate error.

The brave of heart can circumvect this. Defining ALLOW_MSVC6_WITHOUT_PSDK
in lib/config-win32.h, although absolutely discouraged and unsupported,
this will allow the die hard MSVC hacker to build in such a discouraged
environment.

The actually supported 'fix' is to install 'February 2003 Platform SDK'
a.k.a. 'Windows Server 2003 PSDK' which can be freely downloaded from
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
2009-10-21 02:30:56 +00:00
Gunter Knauf
3da1ade4e5 added cast macros to silent compiler warnings with 64-bit systems. 2009-10-19 18:10:47 +00:00
Yang Tse
ff40c83aa7 Fix compiler warning: local variable may be used without having been initialized 2009-10-19 15:56:26 +00:00
Yang Tse
f49427d364 Use *_CHECK_PATH_SEPARATOR_REQUIRED to ensure that *_CHECK_PATH_SEPARATOR
is only expanded and included once in the configure script.
2009-10-19 04:13:12 +00:00
Yang Tse
04e8ff84fe Our _AS_PATH_SEPARATOR_PREPARE override is now m4_defun'd instead of m4_define'd
due to autoconf 2.64 m4_require'ing it in _AS_SHELL_SANITIZE indirectly through
_AS_PATH_WALK.
2009-10-19 04:11:54 +00:00
Daniel Stenberg
6f4a5a4612 - Ray Dassen provided a patch in Debian's bug tracker (bug number #551461)
that now makes curl_getdate(3) actually handles RFC 822 formatted dates that
  use the "single letter military timezones".
  http://www.rfc-ref.org/RFC-TEXTS/822/chapter5.html has the details.
2009-10-18 21:56:19 +00:00
Yang Tse
6d4e6cc813 Check for basename() is now done the same as other function checks 2009-10-18 03:37:39 +00:00
Daniel Stenberg
86cec97b22 - Fixed memory leak in the SCP/SFTP code as it never freed the knownhosts
data!
2009-10-18 01:11:25 +00:00
Daniel Stenberg
e5ee822745 John Dennis filed bug report #2873666
(http://curl.haxx.se/bug/view.cgi?id=2873666) which identified a problem which
made libcurl loop infinitely when given incorrect credentials when using HTTP
GSS negotiate authentication.
2009-10-18 00:18:27 +00:00
Daniel Stenberg
167a92810a - Kevin Baughman found a double close() problem with libcurl-NSS, as when
libcurl called NSS to close the SSL "session" it also closed the actual
  socket.
2009-10-18 00:10:13 +00:00
Daniel Stenberg
b8b8c3d538 s/Make NTLM work without OpenSSL functions/Make NTLM work with other crypto functions
As it actually builds with gcrypt these days, but not the NSS functions.
2009-10-17 19:31:57 +00:00
Daniel Stenberg
21105ab344 README.NSS is gone 2009-10-17 18:31:57 +00:00
Yang Tse
e49d928ce4 Fix invalid file name characters handling on Windows 2009-10-17 17:33:19 +00:00
Yang Tse
5e253785af Move comment 2009-10-16 13:30:31 +00:00
Yang Tse
3cbc8d1ba3 Replace tabs with spaces 2009-10-15 17:34:09 +00:00
Yang Tse
b4af26a188 Fix an OOM handling problem 2009-10-14 18:11:36 +00:00
Gunter Knauf
6daede08cb we only need to call ASN1_STRING_length() if ASN1_STRING_type() detects UTF-8,
else ASN1_STRING_to_UTF8() returns the string length.
2009-10-14 02:32:27 +00:00
Yang Tse
3669ff3c1e Update LDAP URL format reference 2009-10-13 14:48:35 +00:00
Yang Tse
9afdb05fe8 Fix compiler warning: argument is incompatible with corresponding format string conversion 2009-10-13 13:53:57 +00:00
Yang Tse
4d9279cb3b Fix potential out-of-bounds read 2009-10-10 12:31:27 +00:00
Yang Tse
640e49976f Fix compiler warning: loop without body 2009-10-10 12:29:32 +00:00
Yang Tse
f1aa936d2c Fix compiler warning 2009-10-09 14:06:38 +00:00
Yang Tse
a5ba25a5f6 Fix compiler warning 2009-10-08 18:38:29 +00:00
Yang Tse
b4e6418aef Fix compiler warning 2009-10-08 17:06:08 +00:00
Yang Tse
0077a6d51b Attempt to silence bogus compiler warning: "Potential null pointer dereference" 2009-10-08 12:44:25 +00:00
Yang Tse
4798f4e652 Fix compiler warning: addition result could be truncated before cast to bigger sized type 2009-10-08 00:02:32 +00:00
Kamil Dudka
b38e28b6bc fix gcc warnings in lib/nss.c 2009-10-07 20:34:08 +00:00
Yang Tse
052dac0d3f Overhauled ares__get_hostent()
- Fixing out of bounds memory overwrite triggered with malformed /etc/hosts file.
- Improving parsing of /etc/hosts file.
- Validating requested address family.
- Ensuring that failures always return a NULL pointer.
- Adjusting header inclusions.
2009-10-07 18:47:04 +00:00
Gunter Knauf
2eeafcf9a6 removed NSS README since the mentioned problems are now solved. 2009-10-07 12:25:32 +00:00
Yang Tse
45e093fc45 Fix vc-x64 target having MACHINE= wrongly positioned, and added vc-x64-ssl-zlib
target as indicated end requested by Viktor Szakats in bug report #2872879.
2009-10-06 14:14:13 +00:00
Yang Tse
e593715d72 Fix comment 2009-10-06 14:00:03 +00:00
Yang Tse
1209f2c014 Fix ssize_t redefinition errors on WIN64 reported by Alexey Simak 2009-10-06 13:59:37 +00:00
Dan Fandrich
7c821a85f8 Minix has new build prerequisites using autoconf 2.64 2009-10-06 06:54:46 +00:00
Yang Tse
cf367a62ce more files to ignore 2009-10-05 02:47:34 +00:00
Daniel Stenberg
b233957885 - Tom Mueller correctly reported in bug report #2870221
(http://curl.haxx.se/bug/view.cgi?id=2870221) that libcurl returned an
  incorrect return code from the internal trynextip() function which caused
  him grief. This is a regression that was introduced in 7.19.1 and I find it
  strange it hasn't hit us harder, but I won't persue into figuring out
  exactly why.
2009-10-01 07:59:45 +00:00
Daniel Stenberg
492aed1450 mention some alternative method names in the docs for --request 2009-10-01 07:37:58 +00:00
Daniel Stenberg
cd91a1eeca mention "quiet" for the --silent option to get easier to find 2009-10-01 07:35:15 +00:00
Daniel Stenberg
5ed274d0b7 - Constantine Sapuntzakis: The current implementation will always set
SO_SNDBUF to CURL_WRITE_SIZE even if the SO_SNDBUF starts out larger.  The
  patch doesn't do a setsockopt if SO_SNDBUF is already greater than
  CURL_WRITE_SIZE. This should help folks who have set up their computer with
  large send buffers.
2009-10-01 07:05:07 +00:00
Yang Tse
4271f44a9e Check if _REENTRANT definition is required to
make errno available as a preprocessor macro.
2009-09-29 16:34:03 +00:00
Dan Fandrich
78d07cb0f9 Removed some extraneous carriage return characters 2009-09-28 18:13:35 +00:00
Yang Tse
5b11e3883c fix compiler warning: conversion from "long" to "size_t" may lose sign 2009-09-28 17:01:23 +00:00
Yang Tse
7d22ce5573 libcurl private function Curl_memrchr() now in curl_memrchr.c and curl_memrchr.h 2009-09-28 16:05:20 +00:00
Yang Tse
b64dd3c63d Added check for memrchr function or macro 2009-09-28 12:16:29 +00:00
Daniel Stenberg
0ea6abe7df tiny indent fix 2009-09-27 21:37:24 +00:00
Daniel Stenberg
8646cecb78 - I introduced a maximum limit for received HTTP headers. It is controlled by
the define CURL_MAX_HTTP_HEADER which is even exposed in the public header
  file to allow for users to fairly easy rebuild libcurl with a modified
  limit. The rationale for a fixed limit is that libcurl is realloc()ing a
  buffer to be able to put a full header into it, so that it can call the
  header callback with the entire header, but that also risk getting it into
  trouble if a server by mistake or willingly sends a header that is more or
  less without an end. The limit is set to 100K.
2009-09-27 21:34:13 +00:00
Daniel Stenberg
867a0de670 unify two very similar code sections into one single function, header_append() 2009-09-27 21:14:15 +00:00
Daniel Stenberg
4f47fc4e14 - John P. McCaskey posted a bug report that showed how libcurl did wrong when
saving received cookies with no given path, if the path in the request had a
  query part. That is means a question mark (?) and characters on the right
  side of that. I wrote test case 1105 and fixed this problem.
2009-09-26 20:51:51 +00:00
Daniel Stenberg
8d39a31e89 added test 1105 (disabled) - it repeats a cookie path bug we need to fix 2009-09-26 11:46:41 +00:00
Kamil Dudka
66fcebdc9e - Implemented a protocol independent way to specify blocking direction, used by
transfer.c for blocking. It is currently used only by SCP and SFTP protocols.
  This enhancement resolves an issue with 100% CPU usage during SFTP upload,
  reported by Vourhey.
2009-09-26 08:31:48 +00:00
Daniel Stenberg
af9ce990f0 minor whitespace edit 2009-09-25 20:26:44 +00:00
Daniel Stenberg
e3d623f190 - Chris Mumford filed bug report #2861587
(http://curl.haxx.se/bug/view.cgi?id=2861587) identifying that libcurl used
  the OpenSSL function X509_load_crl_file() wrongly and failed if it would
  load a CRL file with more than one certificate within. This is now fixed.
2009-09-25 18:09:38 +00:00
Dan Fandrich
15be441ad8 Changed the default OpenSSL include path 2009-09-25 16:51:57 +00:00
Yang Tse
c7c84e7420 fix compiler warning: end-of-loop code not reached 2009-09-25 13:05:36 +00:00
Yang Tse
37489a855f fix compiler warning: variable "sni" was set but never used 2009-09-24 13:24:08 +00:00
Daniel Stenberg
f03130a36e revert HPUX change since it already works fine 2009-09-24 03:40:30 +00:00
Daniel Stenberg
a1d18227e5 builds thread-safer on HPUX 2009-09-23 22:16:29 +00:00
Daniel Stenberg
1549605c55 - HPUX does need _REENTRANT too to build really thread-safe. 2009-09-23 21:53:24 +00:00
Gunter Knauf
14a3f4cd54 added section for libcurl builds with NSS SSL support. 2009-09-21 23:00:12 +00:00
Gunter Knauf
9448659fc6 added support for new SQLite cert database format: added a runtime check for version 3.12.0, and depending on the result add 'sql:' prefix to cert database directory so that newer SQLIte database format works. 2009-09-21 22:52:59 +00:00
Gunter Knauf
4002714825 added aditional check for the directory specified with SSL_DIR, and fall back to hardcoded directory if not a valid directory. 2009-09-21 22:46:38 +00:00
Yang Tse
61ea058d9f fix compiler warning: comparison between signed and unsigned 2009-09-18 14:48:16 +00:00
Daniel Stenberg
0fdb77d643 added three missing files to the dist archive 2009-09-17 17:38:25 +00:00
Yang Tse
0c90cb7b83 fix compiler warning: enumerated type mixed with another type 2009-09-17 16:11:54 +00:00
Yang Tse
ede2ac0ea2 Attempt to silence bogus compiler warning: "Potential null pointer dereference" 2009-09-17 15:33:32 +00:00
Yang Tse
d006efebc0 fix compiler warning: conversion to 'size_t' from 'curl_off_t' may alter its value 2009-09-17 15:06:34 +00:00
Yang Tse
f2f45339dc Moved Curl_rand() and Curl_srand() code from formdata.c and formdata.h
into curl_rand.c and curl_rand.h
2009-09-17 14:23:27 +00:00
Yang Tse
be5c815f63 remove line obsoleted with previous commit 2009-09-17 14:02:50 +00:00
Yang Tse
31e106ced2 Attempt to silence bogus compiler warning: "Potential null pointer dereference" 2009-09-17 11:45:27 +00:00
Daniel Stenberg
250ba99498 - Sven Anders reported that we introduced a cert verfication flaw for OpenSSL-
powered libcurl in 7.19.6. If there was a X509v3 Subject Alternative Name
  field in the certficate it had to match and so even if non-DNS and non-IP
  entry was present it caused the verification to fail.
2009-09-16 20:44:18 +00:00
Yang Tse
c2c3a46e3e Attempt to silence bogus compiler warning: "Potential null pointer dereference through ptr is detected" 2009-09-16 16:49:02 +00:00
Yang Tse
3eee678ab1 Attempt to silence bogus compiler warning: "Potential null pointer dereference through ptr is detected" 2009-09-16 14:38:18 +00:00
Dan Fandrich
62ed553054 Moved the libssh2 checks after the SSL library checks. This helps when
statically linking since libssh2 needs the SSL library link flags to be
set up already to satisfy its dependencies. This wouldn't be necessary
if the libssh2 configure check was changed to use pkg-config since the
--static flag would add the dependencies automatically.
2009-09-16 03:19:39 +00:00
Dan Fandrich
e3049e98d8 Provide instructions on creating curl_config.h 2009-09-15 22:35:49 +00:00
Yang Tse
86f9168797 mention last changes 2009-09-15 00:16:50 +00:00
Yang Tse
f7690db37d Some systems poll function sets POLLHUP in revents without setting
POLLIN, and sets POLLERR without setting POLLIN and POLLOUT. In some
libcurl code execution paths this could trigger busy wait loops with
high CPU usage until a timeout condition aborted the loop.

This fix for Curl_poll adresses the above in a libcurl-wide mode.
2009-09-15 00:07:56 +00:00
Yang Tse
7e0b0763fc Revert Joshua Kwan's patch committed 11 Sep 2009.
Some systems poll function sets POLLHUP in revents without setting
POLLIN, and sets POLLERR without setting POLLIN and POLLOUT. In some
libcurl code execution paths this could trigger busy wait loops with
high CPU usage until a timeout condition aborted the loop.

The reverted patch addressed the above issue for a very specific case,
when awaiting c-ares to resolve. A libcurl-wide fix superceeds this one.

http://cool.haxx.se/cvs.cgi/curl/lib/select.c.diff?r1=1.52&r2=1.53
2009-09-15 00:07:25 +00:00
Dan Fandrich
c67c4e7095 Added HTTP proxy keyword 2009-09-14 18:43:53 +00:00
Yang Tse
64a05e540e ignore more files 2009-09-14 15:12:59 +00:00
Dan Fandrich
beb0a345ac Renumbered test565 to test1104 to move it out of the range reserved for
libcurl tests.
2009-09-11 20:19:43 +00:00
Daniel Stenberg
f60cb60fc6 point to the current functions, not the deprecated ones 2009-09-11 20:19:21 +00:00
Gunter Knauf
4002fbe1f5 Joshua Kwan provided a patch to pass POLLERR / POLLHUP back to c-ares.
This fixes a loop problem with high CPU usage.
2009-09-11 02:33:04 +00:00
Daniel Stenberg
7ff4b4f2b5 - Claes Jakobsson fixed a problem with cookie expiry dates at exctly the epoch
start second "Thu Jan 1 00:00:00 GMT 1970" as the date parser then returns 0
  which internally then is treated as a session cookie. That particular date
  is now made to get the value of 1.
2009-09-10 21:06:50 +00:00
Gunter Knauf
945feafe25 use stderr for error output. 2009-09-10 18:36:06 +00:00
Gunter Knauf
5389ac0ddf fixed spelling. 2009-09-10 15:00:21 +00:00
Gunter Knauf
5d4a1e245b added debug output for NSS certpath. 2009-09-08 01:13:49 +00:00
Gunter Knauf
3c199daa95 changed NetWare makefiles to rely on SHELL rather than OSTYPE since we can have a sh-like shell also on Windows (MSYS, Cygwin). 2009-09-07 19:34:03 +00:00
Gisle Vanem
4dd33ac575 Suppress warnings about unused prototypes in Watt32 and Win32 programs. 2009-09-07 11:02:20 +00:00
Gisle Vanem
bb3bbfe56d Update email address. 2009-09-07 10:59:54 +00:00
Gisle Vanem
f09de577f5 Update my email address. Add ares_config.h as dependency for 'make depend'. 2009-09-07 10:01:17 +00:00
Yang Tse
c2ce4e55f0 T_SRV portability check 2009-09-06 23:46:07 +00:00
Gunter Knauf
5e3796349a added casts to silent compiler warning on 64bit systems. 2009-09-06 20:16:59 +00:00
Gunter Knauf
56a161e09a use our define struct_stat to be compatible with largefile support. 2009-09-06 19:45:08 +00:00
Gunter Knauf
2786ecaeef added base64.h include to silent warnings about missing prototype for ATOB_ConvertAsciiToItem. 2009-09-06 17:59:46 +00:00
Gunter Knauf
1486a11839 language! / take2 2009-09-06 00:00:19 +00:00
Gunter Knauf
c4c15288d2 changed includes to match style how we do with all other *.c files. 2009-09-05 20:11:32 +00:00
Daniel Stenberg
aaed838872 add ftpgetinfo 2009-09-05 17:54:30 +00:00
Daniel Stenberg
43fba2627a Make CURLOPT_FTPPORT support an additional port number
done!
2009-09-05 17:49:07 +00:00
Gunter Knauf
7df26a5415 added ftpgetinfo sample since users asked frequently for such a sample. 2009-09-05 15:23:37 +00:00
Gunter Knauf
f3611c2773 changed u_int16_t to unsigned short because it is the only place within ares and curl where such a type would be used;
also it broke many autobuilds. We should probably introduce an ares_port_t if we want to use a type here.
2009-09-05 15:12:30 +00:00
Gisle Vanem
d5de849552 Replace 'uint16_t' with 'u_int16_t' since the latter is used in ares.h. 2009-09-05 12:33:08 +00:00
Gisle Vanem
6569a23890 Added 'ares_parse_srv_reply.obj'. Added definition of 'u_int16_t'. This is I don't like; we should not depend on such non-universal types in a public header. But this is just a quick fix. 2009-09-05 12:29:35 +00:00
Daniel Stenberg
2cf0f80e9f - Jakub Hrozek added ares_parse_srv_reply() for SRV parsing 2009-09-04 21:56:14 +00:00
Gunter Knauf
223c0b980b added --with-nss to configure output. 2009-09-04 17:46:59 +00:00
Gunter Knauf
7ab1139f07 added MSVC6 caveats. 2009-09-04 16:59:10 +00:00
Gunter Knauf
d055226949 added chkspeed to samples. 2009-09-03 17:54:02 +00:00
Gunter Knauf
cf910f3097 updated MingW32 makefile for recent external libs. 2009-09-03 17:53:21 +00:00
Daniel Stenberg
183c9ce1cf fix copyright year 2009-09-03 08:30:28 +00:00
Daniel Stenberg
777168cb77 provide and export Curl_parsedate() as a library-wide internal function
for a better API to date parsing than the external API is
2009-09-03 08:13:32 +00:00
Daniel Stenberg
0dd6c329e3 language! 2009-09-02 21:13:24 +00:00
Daniel Stenberg
7a642c8bf1 - Daniel Johnson founded a flaw in the code convering sftp-errors to libcurl
errors.
2009-09-02 21:05:47 +00:00
Daniel Stenberg
e47c939822 extended CURL_CHECK_PKGCONFIG to check for a host-specific version of the
pkg-config first before the "normal" one (if cross-compiling)
2009-09-02 17:48:26 +00:00
Daniel Stenberg
a0bbe25eef spell out that when running_handles is zero, there is no longer any transfers
going on
2009-09-02 14:57:05 +00:00
Daniel Stenberg
b96f11f7ec comment the "stunnel exited with [num]" stuff since this is now happen
in normal tests and is annoying
2009-09-01 17:05:24 +00:00
Daniel Stenberg
7e07da977c - Peter Sylvester made a debug featuer for Curl_resolv() that now will force
libcurl to resolve 'localhost' whatever name you use in the URL *if* you set
  the --interface option to (exactly) "LocalHost". This will enable us to
  write tests for custom hosts names but still use a local host server.
2009-09-01 14:27:01 +00:00
Daniel Stenberg
ddb1fb7535 a failed libssh2 check must not pollute the variables 2009-09-01 08:39:39 +00:00
Daniel Stenberg
ea2754e028 clarify: building outside of the source tree is not special for the
test script
2009-09-01 07:02:37 +00:00
Daniel Stenberg
ceda7e98f8 - configure now tries to use pkg-config for a number of sub-dependencies even
when cross-compiling. The key to success is then you properly setup
  PKG_CONFIG_PATH before invoking configure.

  I also improved how NSS is detected by trying nss-config if pkg-config isn't
  present, and as a last resort just use the lib name and force the user to
  setup the LIBS/LDFLAGS/CFLAGS etc properly. The previous last resort would
  add a range of various libs that would almost never be quite correct.
2009-09-01 06:53:01 +00:00
Daniel Stenberg
2d0aca3b92 73. if a connection is made to a FTP server but the server then just never
sends the 220 response or otherwise is dead slow, libcurl will not
  acknowledge the connection timeout during that phase but only the "real"
  timeout - which may surprise users as it is probably considered to be the
  connect phase to most people. Brought up (and is being misunderstood) in:
  http://curl.haxx.se/bug/view.cgi?id=2844077
2009-08-31 21:57:24 +00:00
Daniel Stenberg
4e9d3c26ed - When using the multi interface with FTP and you asked for NOBODY, you did no
QUOTE commands and the request used the same path as the connection had
  already changed to, it would decide that no commands would be necessary for
  the "DO" action and that was not handled properly but libcurl would instead
  hang.
2009-08-31 20:49:30 +00:00
Patrick Monnerat
f3bd0c3fc3 Added a warning comment about curlbuild.h inclusion leading path. 2009-08-31 15:48:52 +00:00
Patrick Monnerat
eb438719f7 OS400: adjust inclusion paths in include files to avoid "include file not found" in DB2 mode. 2009-08-31 15:22:16 +00:00
Gunter Knauf
44e2832b2a added curl prefix for curlbuild.h back until we find a better solution;
it breaks almost all autobuilds.
2009-08-31 13:58:47 +00:00
Gunter Knauf
9539d32298 added simple chkspeed sample. 2009-08-31 02:06:19 +00:00
Gunter Knauf
60c0994677 removed curl prefix for curlbuild.h as Patrick suggested. 2009-08-31 02:05:04 +00:00
Gunter Knauf
e7f81d59b0 add casts to silent compiler warnings with 64bit systems. 2009-08-30 01:36:01 +00:00
Gunter Knauf
f1320d6733 add cast to silent compiler warning with 64bit systems. 2009-08-29 15:44:31 +00:00
Gunter Knauf
68f7d5b8d3 add cast to silent compiler warning with 64bit systems. 2009-08-29 04:34:44 +00:00
Gunter Knauf
e8baa332d7 fix shadow definition of outp. 2009-08-29 04:26:02 +00:00
Gunter Knauf
39704bec3c add cast to silent compiler warning with 64bit systems. 2009-08-29 04:12:51 +00:00
Gunter Knauf
fad14bca01 removed obsolete casts. 2009-08-29 03:57:28 +00:00
Gunter Knauf
9e8eec4816 add casts to silent compiler warnings with 64bit systems. 2009-08-29 03:53:09 +00:00
Gunter Knauf
fa2ea23c96 add cast to silient compiler warning with 64bit systems. 2009-08-29 03:42:13 +00:00
Kamil Dudka
1a255e0e28 - Improved error message for not matching certificate subject name in
libcurl-NSS. Originally reported at:
  https://bugzilla.redhat.com/show_bug.cgi?id=516056#c9
2009-08-28 12:06:51 +00:00
Daniel Stenberg
1d92cf1dab disable the tests that differ between 32 and 64 bit 2009-08-27 18:15:38 +00:00
Steinar H. Gunderson
8d1e46bdcc Support lookup of IPv4 literals in ares_gethostbyname(), even when the address family is set to AF_INET6. 2009-08-27 09:53:55 +00:00
Patrick Monnerat
b0b2824b58 - Introduced a SYST-based test to properly set-up name format when dealing with the OS/400 FTP server.
- Fixed an ftp_readresp() bug preventing detection of failing control socket  and causing FTP client to loop forever.
2009-08-24 12:57:25 +00:00
Daniel Stenberg
0cb6f3053f - Marc de Bruin pointed out that configure --with-gnutls=PATH didn't work
properly and provided a fix. http://curl.haxx.se/bug/view.cgi?id=2843008
2009-08-24 11:38:59 +00:00
Daniel Stenberg
95c2b205a4 - Eric Wong introduced support for the new option -T. (dot) that makes curl
read stdin in a non-blocking fashion. This also brings back -T- (minus) to
  the previous blocking behavior since it could break stuff for people at
  times.
2009-08-24 10:57:17 +00:00
Daniel Stenberg
6ede4ce79d clarify the code by initing newurl to NULL 2009-08-24 08:41:17 +00:00
Michal Marek
10f2fa9c72 With CURLOPT_PROXY_TRANSFER_MODE, avoid sending invalid URLs like
ftp://example.com;type=i if the user specified ftp://example.com without the
slash.
2009-08-21 12:15:35 +00:00
Daniel Stenberg
8b5102ca83 - Andre Guibert de Bruet pointed out a missing return code check for a
strdup() that could lead to segfault if it returned NULL. I extended his
  suggest patch to now have Curl_retry_request() return a regular return code
  and better check that.
2009-08-21 12:01:36 +00:00
Daniel Stenberg
1048043963 - Lots of good work by Krister Johansen, mostly related to pipelining:
Fix SIGSEGV on free'd easy_conn when pipe unexpectedly breaks
  Fix data corruption issue with re-connected transfers
  Fix use after free if we're completed but easy_conn not NULL
2009-08-21 07:11:20 +00:00
Daniel Stenberg
2c4fcf2ea8 5.3 Sort outgoing cookies
5.4 Rearrange request header order

Things to play with when you're bored
2009-08-19 07:09:13 +00:00
Daniel Stenberg
681162510a the mozilla browser is called Firefox... 2009-08-18 19:51:18 +00:00
Dan Fandrich
5c59ee9488 Pull the certificate files from the source directory. Ensure that the
certificate tests only run on a localhost-hosted test server since the
host name is explicitly checked.
2009-08-18 00:18:54 +00:00
Gunter Knauf
9075195ec4 added missing curl_easy_pause to export list. 2009-08-16 15:03:58 +00:00
Daniel Stenberg
62960f8a42 I think it's worth clarifying that curl DOES NOT validate a given URL more
than what's absolutely necessary:

curl will do its best to use what you pass to it as a URL. It is not trying to
validate it as a syntactically correct URL by any means but is instead
VERY liberal with what it accepts.
2009-08-14 18:09:42 +00:00
Kamil Dudka
6293fe98a0 - Changed NSS code to not ignore the value of ssl.verifyhost and produce more
verbose error messages. Originally reported at:
  https://bugzilla.redhat.com/show_bug.cgi?id=516056
2009-08-13 16:04:51 +00:00
Daniel Stenberg
5c716247aa mention yesterday's changes 2009-08-13 08:51:45 +00:00
Daniel Stenberg
daf688eba6 add missing file, as pointed out by Karl M 2009-08-12 17:25:16 +00:00
Daniel Stenberg
c6712a0c6c start over fresh again towards 7.19.7 2009-08-12 11:24:52 +00:00
Daniel Stenberg
4d74b52656 imported names from the 7.19.6 RELEASE-NOTES 2009-08-12 11:24:09 +00:00
Daniel Stenberg
be2fcbcbf1 Added a range of new fun date strings to try. This set of dates come from a
mail posted to the http-state mailing list, from Adam Barth, and is said to be
the set of date formats the Chrome browser code is tested against:
http://www.ietf.org/mail-archive/web/http-state/current/msg00129.html

libcurl parses most of them identically, but not all of them.
2009-08-12 11:18:55 +00:00
210 changed files with 5842 additions and 1887 deletions

View File

@@ -1,15 +1,37 @@
# Google Android makefile for curl and libcurl # Google Android makefile for curl and libcurl
#
# Place the curl source (including this makefile) into external/curl/ in the # Place the curl source (including this makefile) into external/curl/ in the
# Android source tree. Then build them with 'make curl' or just 'make libcurl' # Android source tree. Then build them with 'make curl' or just 'make libcurl'
# from the Android root. # from the Android root. Tested with Android 1.5
# #
# Note: you must first create a curl_config.h file by running configure in the # Note: you must first create a curl_config.h file by running configure in the
# Android environment. I haven't found an easy way to do this yet. If there is # Android environment. The only way I've found to do this is tricky. Perform a
# no easy way, a static config-android.h may need to be created and checked in # normal Android build with libcurl in the source tree, providing the target
# to the libcurl source tree. # "showcommands" to make. The build will eventually fail (because curl_config.h
# doesn't exist yet), but the compiler commands used to build curl will be
# shown. Now, from the external/curl/ directory, run curl's normal configure
# command with flags that match what Android itself uses. This will mean
# putting the compiler directory into the PATH, putting the -I, -isystem and
# -D options into CPPFLAGS, putting the -m, -f, -O and -nostdlib options into
# CFLAGS, and putting the -Wl, -L and -l options into LIBS, along with the path
# to the files libgcc.a, crtbegin_dynamic.o, and ccrtend_android.o. Remember
# that the paths must be absolute since you will not be running configure from
# the same directory as the Android make. The normal cross-compiler options
# must also be set.
#
# The end result will be a configure command that looks something like this
# (the environment variable A is set to the Android root path):
#
# A=`realpath ../..` && \
# PATH="$A/prebuilt/linux-x86/toolchain/arm-eabi-X/bin:$PATH" \
# ./configure --host=arm-linux CC=arm-eabi-gcc \
# CPPFLAGS="-I $A/system/core/include ..." \
# CFLAGS="-fno-exceptions -Wno-multichar ..." \
# LIB="$A/prebuilt/linux-x86/toolchain/arm-eabi-X/lib/gcc/arm-eabi/X\
# /interwork/libgcc.a ..." \
# #
# Dan Fandrich # Dan Fandrich
# July 2009 # September 2009
LOCAL_PATH:= $(call my-dir) LOCAL_PATH:= $(call my-dir)

220
CHANGES
View File

@@ -6,6 +6,226 @@
Changelog Changelog
Version 7.19.7 (4 November 2009)
Daniel Stenberg (2 Nov 2009)
- As reported independent by both Stan van de Burgt and Didier Brisebourg,
CURLINFO_SIZE_DOWNLOAD (the -w variable size_download) didn't work when
getting data from ldap!
Daniel Stenberg (31 Oct 2009)
- Gabriel Kuri reported a problem with CURLINFO_CONTENT_LENGTH_DOWNLOAD if the
download was 0 bytes, as libcurl would then return the size as unknown (-1)
and not 0. I wrote a fix and test case 566 to verify it.
Daniel Stenberg (30 Oct 2009)
- Liza Alenchery mentioned a problem with re-used SCP connection when a bad
auth is used, as it caused a crash. I failed to repeat the issue, but still
made a change that now forces the TCP connection used for a freed SCP
session to get closed and not be re-used.
- "Tom" posted a bug report that mentioned how libcurl did wrong when doing a
POST using a read callback, with Digest authentication and
"Transfer-Encoding: chunked" enforced. I would then cause the first request
to be wrongly sent and then basically hang until the server closed the
connection. I fixed the problem and added test case 565 to verify it.
Daniel Stenberg (25 Oct 2009)
- Dima Barsky made the curl cookie parser accept cookies even with blank or
unparsable expiry dates and then treat them as session cookies - previously
libcurl would reject cookies with a date format it couldn't parse. Research
shows that the major browser treat such cookies as session cookies. I
modified test 8 and 31 to verify this.
Daniel Stenberg (21 Oct 2009)
- Attempt to use pkg-config for finding out libssh2 installation details
during configure.
- A patch in bug report #2883177 (http://curl.haxx.se/bug/view.cgi?id=2883177)
by Johan van Selst introduced the --crlfile option to curl, which makes curl
tell libcurl about a file with CRL (certificate revocation list) data to
read.
Daniel Stenberg (18 Oct 2009)
- Ray Dassen provided a patch in Debian's bug tracker (bug number #551461)
that now makes curl_getdate(3) actually handles RFC 822 formatted dates that
use the "single letter military timezones".
http://www.rfc-ref.org/RFC-TEXTS/822/chapter5.html has the details.
- Fixed memory leak in the SCP/SFTP code as it never freed the knownhosts
data!
- John Dennis filed bug report #2873666
(http://curl.haxx.se/bug/view.cgi?id=2873666) which identified a problem
which made libcurl loop infinitely when given incorrect credentials when
using HTTP GSS negotiate authentication. He also provided a small and simple
patch for it.
- Kevin Baughman found a double close() problem with libcurl-NSS, as when
libcurl called NSS to close the SSL "session" it also closed the actual
socket.
Yang Tse (17 Oct 2009)
- Bug report #2866724 indicated
(http://curl.haxx.se/bug/view.cgi?id=2866724) that curl on Windows failed
when writing files whose file names originally contained characters which
are not valid for file names on Windows. Dan Fandrich provided an initial
patch and another revised one to fix this issue.
Daniel Stenberg (1 Oct 2009)
- Tom Mueller correctly reported in bug report #2870221
(http://curl.haxx.se/bug/view.cgi?id=2870221) that libcurl returned an
incorrect return code from the internal trynextip() function which caused
him grief. This is a regression that was introduced in 7.19.1 and I find it
strange it hasn't hit us harder, but I won't persue into figuring out
exactly why.
- Constantine Sapuntzakis: The current implementation will always set
SO_SNDBUF to CURL_WRITE_SIZE even if the SO_SNDBUF starts out larger. The
patch doesn't do a setsockopt if SO_SNDBUF is already greater than
CURL_WRITE_SIZE. This should help folks who have set up their computer with
large send buffers.
Daniel Stenberg (27 Sep 2009)
- I introduced a maximum limit for received HTTP headers. It is controlled by
the define CURL_MAX_HTTP_HEADER which is even exposed in the public header
file to allow for users to fairly easy rebuild libcurl with a modified
limit. The rationale for a fixed limit is that libcurl is realloc()ing a
buffer to be able to put a full header into it, so that it can call the
header callback with the entire header, but that also risk getting it into
trouble if a server by mistake or willingly sends a header that is more or
less without an end. The limit is set to 100K.
Daniel Stenberg (26 Sep 2009)
- John P. McCaskey posted a bug report that showed how libcurl did wrong when
saving received cookies with no given path, if the path in the request had a
query part. That is means a question mark (?) and characters on the right
side of that. I wrote test case 1105 and fixed this problem.
Kamil Dudka (26 Sep 2009)
- Implemented a protocol independent way to specify blocking direction, used by
transfer.c for blocking. It is currently used only by SCP and SFTP protocols.
This enhancement resolves an issue with 100% CPU usage during SFTP upload,
reported by Vourhey.
Daniel Stenberg (25 Sep 2009)
- Chris Mumford filed bug report #2861587
(http://curl.haxx.se/bug/view.cgi?id=2861587) identifying that libcurl used
the OpenSSL function X509_load_crl_file() wrongly and failed if it would
load a CRL file with more than one certificate within. This is now fixed.
Daniel Stenberg (16 Sep 2009)
- Sven Anders reported that we introduced a cert verfication flaw for OpenSSL-
powered libcurl in 7.19.6. If there was a X509v3 Subject Alternative Name
field in the certficate it had to match and so even if non-DNS and non-IP
entry was present it caused the verification to fail.
Daniel Fandrich (15 Sep 2009)
- Moved the libssh2 checks after the SSL library checks. This helps when
statically linking since libssh2 needs the SSL library link flags to be
set up already to satisfy its dependencies. This wouldn't be necessary if
the libssh2 configure check was changed to use pkg-config since the
--static flag would add the dependencies automatically.
Yang Tse (14 Sep 2009)
- Revert Joshua Kwan's patch committed 11 Sep 2009.
Some systems poll function sets POLLHUP in revents without setting
POLLIN, and sets POLLERR without setting POLLIN and POLLOUT. In some
libcurl code execution paths this could trigger busy wait loops with
high CPU usage until a timeout condition aborted the loop.
The reverted patch addressed the above issue for a very specific case,
when awaiting c-ares to resolve. A libcurl-wide fix for Curl_poll now
superceeds this one.
Guenter Knauf (11 Sep 2009)
- Joshua Kwan provided a patch to pass POLLERR / POLLHUP back to c-ares.
This fixes a loop problem with high CPU usage.
Daniel Stenberg (10 Sep 2009)
- Claes Jakobsson fixed a problem with cookie expiry dates at exctly the epoch
start second "Thu Jan 1 00:00:00 GMT 1970" as the date parser then returns 0
which internally then is treated as a session cookie. That particular date
is now made to get the value of 1.
Daniel Stenberg (2 Sep 2009)
- Daniel Johnson found a flaw in the code converting sftp-errors to libcurl
errors.
Daniel Stenberg (1 Sep 2009)
- Peter Sylvester made a debug feature for Curl_resolv() that now will force
libcurl to resolve 'localhost' whatever name you use in the URL *if* you set
the --interface option to (exactly) "LocalHost". This will enable us to
write tests for custom hosts names but still use a local host server.
- configure now tries to use pkg-config for a number of sub-dependencies even
when cross-compiling. The key to success is then you properly setup
PKG_CONFIG_PATH before invoking configure.
I also improved how NSS is detected by trying nss-config if pkg-config isn't
present, and as a last resort just use the lib name and force the user to
setup the LIBS/LDFLAGS/CFLAGS etc properly. The previous last resort would
add a range of various libs that would almost never be quite correct.
Daniel Stenberg (31 Aug 2009)
- When using the multi interface with FTP and you asked for NOBODY, you did no
QUOTE commands and the request used the same path as the connection had
already changed to, it would decide that no commands would be necessary for
the "DO" action and that was not handled properly but libcurl would instead
hang.
Kamil Dudka (28 Aug 2009)
- Improved error message for not matching certificate subject name in
libcurl-NSS. Originally reported at:
https://bugzilla.redhat.com/show_bug.cgi?id=516056#c9
Patrick Monnerat (24 Aug 2009)
- Introduced a SYST-based test to properly set-up name format when dealing
with the OS/400 FTP server.
- Fixed an ftp_readresp() bug preventing detection of failing control socket
and causing FTP client to loop forever.
Daniel Stenberg (24 Aug 2009)
- Marc de Bruin pointed out that configure --with-gnutls=PATH didn't work
properly and provided a fix. http://curl.haxx.se/bug/view.cgi?id=2843008
- Eric Wong introduced support for the new option -T. (dot) that makes curl
read stdin in a non-blocking fashion. This also brings back -T- (minus) to
the previous blocking behavior since it could break stuff for people at
times.
Michal Marek (21 Aug 2009)
- With CURLOPT_PROXY_TRANSFER_MODE, avoid sending invalid URLs like
ftp://example.com;type=i if the user specified ftp://example.com without the
slash.
Daniel Stenberg (21 Aug 2009)
- Andre Guibert de Bruet pointed out a missing return code check for a
strdup() that could lead to segfault if it returned NULL. I extended his
suggest patch to now have Curl_retry_request() return a regular return code
and better check that.
- Lots of good work by Krister Johansen, mostly related to pipelining:
Fix SIGSEGV on free'd easy_conn when pipe unexpectedly breaks
Fix data corruption issue with re-connected transfers
Fix use after free if we're completed but easy_conn not NULL
Kamil Dudka (13 Aug 2009)
- Changed NSS code to not ignore the value of ssl.verifyhost and produce more
verbose error messages. Originally reported at:
https://bugzilla.redhat.com/show_bug.cgi?id=516056
Daniel Stenberg (12 Aug 2009)
- Karl Moerder fixed the Makefile.vc* makefiles to include the new file
nonblock.c so that they work fine again
- I expanded test 517 with a bunch of more dates that originate from the
Chrome browser test suite. It turns out most of them get parsed the same
way.
Version 7.19.6 (12 August 2009) Version 7.19.6 (12 August 2009)
Daniel Stenberg (12 Aug 2009) Daniel Stenberg (12 Aug 2009)

View File

@@ -46,7 +46,7 @@ pkgconfig_DATA = libcurl.pc
dist-hook: dist-hook:
rm -rf $(top_builddir)/tests/log rm -rf $(top_builddir)/tests/log
find $(distdir) -name "*.dist" -exec rm {} \; find $(distdir) -name "*.dist" -exec rm {} \;
(distit=`find $(srcdir) -name "*.dist"`; \ (distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
for file in $$distit; do \ for file in $$distit; do \
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \ strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
cp $$file $(distdir)$$strip; \ cp $$file $(distdir)$$strip; \

View File

@@ -130,9 +130,9 @@ vc:
vc-x64: vc-x64:
cd lib cd lib
MACHINE=x64 nmake /f Makefile.$(VC) cfg=release nmake /f Makefile.$(VC) MACHINE=x64 cfg=release
cd ..\src cd ..\src
MACHINE=x64 nmake /f Makefile.$(VC) nmake /f Makefile.$(VC) MACHINE=x64 cfg=release
vc-zlib: vc-zlib:
cd lib cd lib
@@ -152,6 +152,12 @@ vc-ssl-zlib:
cd ..\src cd ..\src
nmake /f Makefile.$(VC) cfg=release-ssl-zlib nmake /f Makefile.$(VC) cfg=release-ssl-zlib
vc-x64-ssl-zlib:
cd lib
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib
cd ..\src
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib
vc-ssl-dll: vc-ssl-dll:
cd lib cd lib
nmake /f Makefile.$(VC) cfg=release-ssl-dll nmake /f Makefile.$(VC) cfg=release-ssl-dll

View File

@@ -1,50 +1,51 @@
Curl and libcurl 7.19.6 Curl and libcurl 7.19.7
Public curl releases: 112 Public curl releases: 113
Command line options: 132 Command line options: 132
curl_easy_setopt() options: 163 curl_easy_setopt() options: 163
Public functions in libcurl: 58 Public functions in libcurl: 58
Known libcurl bindings: 38 Known libcurl bindings: 38
Contributors: 715 Contributors: 732
This release includes the following changes: This release includes the following changes:
o CURLOPT_FTPPORT (and curl's -P/--ftpport) support port ranges o -T. is now for non-blocking uploading from stdin
o Added CURLOPT_SSH_KNOWNHOSTS, CURLOPT_SSH_KEYFUNCTION, CURLOPT_SSH_KEYDATA o SYST handling on FTP for OS/400 FTP server cases
o CURLOPT_QUOTE, CURLOPT_POSTQUOTE and CURLOPT_PREQUOTE can be told to ignore o libcurl refuses to read a single HTTP header longer than 100K
error responses when used with FTP o added the --crlfile option to curl
This release includes the following bugfixes: This release includes the following bugfixes:
o crash on bad socket close with FTP o The windows makefiles work again
o leaking cookie memory when duplicate domains or paths were used o libcurl-NSS acknowledges verifyhost
o build fix for Symbian o SIGSEGV when pipelined pipe unexpectedly breaks
o CURLOPT_USERPWD set to NULL clears auth credentials o data corruption issue with re-connected transfers
o libcurl-NSS build fixes o use after free if we're completed but easy_conn not NULL (pipelined)
o configure script fixed for VMS o missing strdup() return code check
o set Content-Length: with POST and PUT failed with NTLM auth o CURLOPT_PROXY_TRANSFER_MODE could pass along wrong syntax
o allow building libcurl for VxWorks o configure --with-gnutls=PATH fixed
o curl tool exit codes fixed for VMS o ftp response reader bug on failed control connections
o --no-buffer treated correctly o improved NSS error message on failed host name verifications
o djgpp build fix o ftp NOBODY on re-used connection hang
o configure detection of GnuTLS now based on pkg-config as well o configure uses pkg-config for cross-compiles as well
o libcurl-NSS client cert handling segfaults o improved NSS detection in configure
o curl uploading from stdin/pipes now works in non-blocking way so that it o cookie expiry date at 1970-jan-1 00:00:00
continues the downloading even when the read stalls o libcurl-OpenSSL failed to verify some certs with Subject Alternative Name
o ftp credentials are added to the url if needed for http proxies o libcurl-OpenSSL can load CRL files with more than one certificate inside
o curl -o - sends data to stdout using binary mode on windows o received cookies without explicit path got saved wrong if the URL had a
o fixed the separators for "array" style string that CURLINFO_CERTINFO returns query part
o auth problem over several hosts with re-used connection o don't shrink SO_SNDBUF on windows for those who have it set large already
o improved the support for client certificates in libcurl+NSS o connect next bug
o fix leak in gtls code o invalid file name characters handling on Windows
o missing algorithms in libcurl+OpenSSL o double close() on the primary socket with libcurl-NSS
o with noproxy set you could still get a proxy if a proxy env was set o GSS negotiate infinite loop on bad credentials
o rand seeding on libcurl on windows built with OpenSSL was not thread-safe o memory leak in SCP/SFTP connections
o fixed the zero byte inserted in cert name flaw in libcurl+OpenSSL o use pkg-config to find out libssh2 installation details in configure
o don't try SNI with SSLv2 or SSLv3 (OpenSSL and GnuTLS builds) o unparsable cookie expire dates make cookies get treated as session coookies
o libcurl+OpenSSL would wrongly acknowledge a cert if CN matched but o POST with Digest authentication and "Transfer-Encoding: chunked"
subjectAltName didn't o SCP connection re-use with wrong auth
o TFTP upload sent illegal TSIZE packets o CURLINFO_CONTENT_LENGTH_DOWNLOAD for 0 bytes transfers
o CURLINFO_SIZE_DOWNLOAD for ldap transfers (-w size_download)
This release includes the following known bugs: This release includes the following known bugs:
@@ -53,12 +54,11 @@ This release includes the following known bugs:
This release would not have looked like this without help, code, reports and This release would not have looked like this without help, code, reports and
advice from friends like these: advice from friends like these:
Yang Tse, Daniel Fandrich, Kamil Dudka, Caolan McNamara, Frank McGeough, Karl Moerder, Kamil Dudka, Krister Johansen, Andre Guibert de Bruet,
Andre Guibert de Bruet, Mike Crowe, Claes Jakobsson, John E. Malmberg, Michal Marek, Eric Wong, Guenter Knauf, Peter Sylvester, Daniel Johnson,
Aaron Oneal, Igor Novoseltsev, Eric Wong, Bill Hoffman, Daniel Steinberg, Claes Jakobsson, Sven Anders, Chris Mumford, John P. McCaskey,
Fabian Keil, Michal Marek, Reuven Wachtfogel, Markus Koetter, Constantine Sapuntzakis, Michael Stillwell, Tom Mueller, Dan Fandrich,
Constantine Sapuntzakis, David Binderman, Johan van Selst, Alexander Beedie, Kevin Baughman, John Dennis, Ray Dassen, Johan van Selst, Dima Barsky,
Tanguy Fautre, Scott Cantor, Curt Bogmine, Peter Sylvester, Benbuck Nason, Liza Alenchery, Gabriel Kuri, Stan van de Burgt, Didier Brisebourg
Carsten Lange
Thanks! (and sorry if I forgot to mention someone) Thanks! (and sorry if I forgot to mention someone)

View File

@@ -1,21 +1,6 @@
To be addressed in 7.19.7 (planned release: October 2009) To be addressed in 7.19.8 (planned release: January 2010)
========================= =========================
248 - "Pausing pipeline problems."
http://curl.haxx.se/mail/lib-2009-07/0214.html
251 - TFTP block size / better integration in transfer
http://curl.haxx.se/mail/lib-2009-08/0028.html
254 - Problem re-using easy handle after call to curl_multi_remove_handle
http://curl.haxx.se/mail/lib-2009-07/0249.html
255 - debugging a crash in Curl_pgrsTime/checkPendPipeline?
http://curl.haxx.se/mail/lib-2009-08/0066.html
256 - "More questions about ares behavior"
http://curl.haxx.se/mail/lib-2009-08/0012.html
244 - patch for [out] parameters 244 - patch for [out] parameters
http://curl.haxx.se/mail/lib-2009-06/0342.html http://curl.haxx.se/mail/lib-2009-06/0342.html
@@ -27,5 +12,11 @@ To be addressed in 7.19.7 (planned release: October 2009)
253 - add option to disable SNI for TLS handshakes 253 - add option to disable SNI for TLS handshakes
257 - 257 - bug #2891595 DNS cache
258 - bug #2891591 Curl_dns_entry
259 - Avoding connection re-use when using CURLOPT_HTTPPROXYTUNNEL
260 -

View File

@@ -3195,14 +3195,23 @@ dnl ------------------------
dnl search for the pkg-config tool (if not cross-compiling). Set the PKGCONFIG dnl search for the pkg-config tool (if not cross-compiling). Set the PKGCONFIG
dnl variable to hold the path to it, or 'no' if not found/present. dnl variable to hold the path to it, or 'no' if not found/present.
dnl dnl
dnl If pkg-config is present, check that it has info about the $module or return dnl If pkg-config is present, check that it has info about the $module or
dnl "no" anyway! dnl return "no" anyway!
dnl dnl
AC_DEFUN([CURL_CHECK_PKGCONFIG], [ AC_DEFUN([CURL_CHECK_PKGCONFIG], [
if test x$cross_compiling != xyes; then
dnl only do pkg-config magic when not cross-compiling PKGCONFIG="no"
AC_PATH_PROG( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
if test x$cross_compiling = xyes; then
dnl see if there's a pkg-specific for this host setup
AC_PATH_PROG( PKGCONFIG, ${host}-pkg-config, no,
$PATH:/usr/bin:/usr/local/bin)
fi
if test x$PKGCONFIG = xno; then
AC_PATH_PROG( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
fi
if test x$PKGCONFIG != xno; then if test x$PKGCONFIG != xno; then
AC_MSG_CHECKING([for $1 options with pkg-config]) AC_MSG_CHECKING([for $1 options with pkg-config])
@@ -3217,8 +3226,4 @@ AC_DEFUN([CURL_CHECK_PKGCONFIG], [
AC_MSG_RESULT([found]) AC_MSG_RESULT([found])
fi fi
fi fi
else
PKGCONFIG="no"
fi
]) ])

View File

@@ -6,14 +6,18 @@
Makefile Makefile
Makefile.in Makefile.in
aclocal.m4 aclocal.m4
acountry
adig adig
ahost ahost
ares_build.h ares_build.h
ares_version.h.dist
autom4te.cache
config.guess
ares_config.h ares_config.h
ares_config.h.in ares_config.h.in
ares_version.h.dist
autom4te.cache
compile
config.guess
config.h
config.h.in
config.log config.log
config.lt config.lt
config.status config.status

View File

@@ -1,5 +1,58 @@
Changelog for the c-ares project Changelog for the c-ares project
* November 2, 2009 (Yang Tse)
- Renamed c-ares setup.h to ares_setup.h
* October 31, 2009 (Yang Tse)
- Symbol hiding configure options are named now --enable-symbol-hiding
and --disable-symbol-hiding in an attempt to make them less ambiguous.
* October 30, 2009 (Yang Tse)
- Many fixes for ares_parse_txt_reply()
* October 29, 2009 (Daniel Stenberg)
- Jakub Hrozek added ares_parse_txt_reply() for TXT parsing
* October 29, 2009 (Yang Tse)
- Updated MSVC 6.0 workspace and project files that allows building
dynamic and static c-ares libraries in debug and release flavours.
Additionally each of the three sample programs is built against
each of the four possible c-ares libraries, generating all this
a total number of 12 executables and 4 libraries.
* October 28, 2009 (Yang Tse)
- Initial step towards the ability to reduce c-ares exported symbols
when built as a shared library based on the 'visibility' attribute
for GNUC and Intel compilers and based on __global for Sun compilers,
taking also in account __declspec function decoration for Win32 and
Symbian DLL's.
* October 27, 2009 (Yang Tse)
- Fixed Pelles C Win32 target compilation issues.
* October 23, 2009 (Yang Tse)
- John Engelhart noticed an unreleased problem relative to a duplicate
ARES_ECANCELLED error code value and missing error code description.
* October 7, 2009 (Yang Tse)
- Overhauled ares__get_hostent() Fixing out of bounds memory overwrite
triggered with malformed /etc/hosts file. Improving parsing of /etc/hosts
file. Validating requested address family. Ensuring that failures always
return a NULL pointer. Adjusting header inclusions.
* October 6, 2009 (Yang Tse)
- Fix ssize_t redefinition errors on WIN64 reported by Alexey Simak.
* September 29, 2009 (Yang Tse)
- Make configure script also check if _REENTRANT definition is required to
make errno available as a preprocessor macro.
* September 7, 2009 (Yang Tse)
- Add T_SRV portability check to ares_parse_srv_reply.c
* 4 Sep 2009 (Daniel Stenberg)
- Jakub Hrozek added ares_parse_srv_reply() for SRV parsing
* 3 Aug 2009 (Daniel Stenberg) * 3 Aug 2009 (Daniel Stenberg)
- Joshua Kwan fixed the init routine to fill in the defaults for stuff that - Joshua Kwan fixed the init routine to fill in the defaults for stuff that
fails to get inited by other means. This fixes a case of when the c-ares fails to get inited by other means. This fixes a case of when the c-ares
@@ -12,7 +65,27 @@
* 14 Jul 2009 (Guenter Knauf) * 14 Jul 2009 (Guenter Knauf)
- renamed generated config.h to ares_config.h to avoid any future clashes - renamed generated config.h to ares_config.h to avoid any future clashes
with config.h from other projects. with config.h from other projects.
* June 20 2009 (Yang Tse)
- Refactor how libraries are checked for connect() function in configure
script and check for connect() as it is done for other functions.
* June 19 2009 (Yang Tse)
- Make sclose() function-like macro definition used to close a socket,
now solely based on HAVE_CLOSESOCKET and HAVE_CLOSESOCKET_CAMEL
config file preprocessor definitions
* June 18 2009 (Yang Tse)
- Add CloseSocket camel case function check for configure script.
* June 17 2009 (Yang Tse)
- Check for socket() and closesocket() as it is done for other functions
in configure script.
* June 11 2009 (Yang Tse)
- Modified buildconf so that when automake runs it copies missing files
instead of symlinking them.
* June 8 2009 (Yang Tse) * June 8 2009 (Yang Tse)
- Removed buildconf.bat from release and daily snapshot archives. This - Removed buildconf.bat from release and daily snapshot archives. This
file is only for CVS tree checkout builds. file is only for CVS tree checkout builds.
@@ -33,6 +106,13 @@
which is only compiled for debug enabled builds. And symbol CURLDEBUG is which is only compiled for debug enabled builds. And symbol CURLDEBUG is
used to differentiate code which is _only_ used for memory tracking. used to differentiate code which is _only_ used for memory tracking.
Make ares_init(), ares_dup() and ares_init_options() fail returning
ARES_ENOTINITIALIZED if library initialization has not been performed
calling ares_library_init().
* May 20 2009 (Yang Tse)
- Added ares_library_init() and ares_library_cleanup() man pages.
* May 19 2009 (Yang Tse) * May 19 2009 (Yang Tse)
- Introduced ares_library_init() and ares_library_cleanup() functions. - Introduced ares_library_init() and ares_library_cleanup() functions.
@@ -52,6 +132,10 @@
- Gregor Jasny made c-ares link with libtool 's -export-symbols-regex option to - Gregor Jasny made c-ares link with libtool 's -export-symbols-regex option to
only expose functions starting with ares_. only expose functions starting with ares_.
* May 7 2009 (Yang Tse)
- Fix an m4 overquoting triggering a spurious 'AS_TR_CPP' symbol definition
attempt in generated config.h
* May 2 2009 (Yang Tse) * May 2 2009 (Yang Tse)
- Use a build-time configured ares_socklen_t data type instead of socklen_t. - Use a build-time configured ares_socklen_t data type instead of socklen_t.

View File

@@ -15,12 +15,16 @@ ACLOCAL_AMFLAGS = -I m4
# #
# $(top_builddir)/../include is for libcurl's generated curl/curlbuild.h file # $(top_builddir)/../include is for libcurl's generated curl/curlbuild.h file
# $(top_srcdir)/../include is for libcurl's external include files # $(top_srcdir)/../include is for libcurl's external include files
# $(top_builddir)/../lib is for libcurl's generated lib/curl_config.h file
# $(top_srcdir)/../lib is for libcurl's lib/setup.h and other "private" files
# $(top_builddir) is for c-ares's generated ares_config.h file # $(top_builddir) is for c-ares's generated ares_config.h file
# $(top_srcdir) is for c-ares's lib/setup.h and other "c-ares-private" files # $(top_srcdir) is for c-ares's ares_setup.h and other "c-ares-private" files
if CURLDEBUG if CURLDEBUG
INCLUDES = -I$(top_builddir)/../include \ INCLUDES = -I$(top_builddir)/../include \
-I$(top_srcdir)/../include \ -I$(top_srcdir)/../include \
-I$(top_builddir)/../lib \
-I$(top_srcdir)/../lib \
-I$(top_builddir) \ -I$(top_builddir) \
-I$(top_srcdir) -I$(top_srcdir)
else else
@@ -32,8 +36,8 @@ lib_LTLIBRARIES = libcares.la
man_MANS = $(MANPAGES) man_MANS = $(MANPAGES)
MSVCFILES = vc/vc.dsw vc/acountry/acountry.dsp vc/adig/adig.dsp \ MSVCFILES = vc/vc6aws.dsw vc/acountry/vc6acountry.dsp vc/adig/vc6adig.dsp \
vc/ahost/ahost.dsp vc/areslib/areslib.dsp vc/areslib/areslib.dsw vc/ahost/vc6ahost.dsp vc/cares/vc6cares.dsp vc/cares/vc6cares.dsw
if CURLDEBUG if CURLDEBUG
PROGS = PROGS =
@@ -48,7 +52,7 @@ noinst_PROGRAMS =$(PROGS)
EXTRA_DIST = AUTHORS CHANGES README.cares Makefile.inc Makefile.dj \ EXTRA_DIST = AUTHORS CHANGES README.cares Makefile.inc Makefile.dj \
Makefile.m32 Makefile.netware Makefile.vc6 $(man_MANS) $(MSVCFILES) \ Makefile.m32 Makefile.netware Makefile.vc6 $(man_MANS) $(MSVCFILES) \
config-win32.h RELEASE-NOTES libcares.pc.in buildconf get_ver.awk maketgz \ config-win32.h RELEASE-NOTES libcares.pc.in buildconf get_ver.awk maketgz \
TODO ares_build.h.in $(PDFPAGES) TODO ares_build.h.in $(PDFPAGES) cares.rc
CLEANFILES = $(PDFPAGES) $(HTMLPAGES) CLEANFILES = $(PDFPAGES) $(HTMLPAGES)
@@ -91,9 +95,7 @@ if NO_UNDEFINED
UNDEF = -no-undefined UNDEF = -no-undefined
endif endif
# EXPORT_SYMBOLS = -export-symbols-regex '^ares_[[:alnum:]].*' libcares_la_LDFLAGS = $(UNDEF) $(VER)
libcares_la_LDFLAGS = $(UNDEF) $(VER) $(EXPORT_SYMBOLS)
# Makefile.inc provides the CSOURCES and HHEADERS defines # Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc include Makefile.inc

View File

@@ -1,12 +1,14 @@
# #
# c-ares Makefile for djgpp/gcc/Watt-32. # c-ares Makefile for djgpp/gcc/Watt-32.
# By Gisle Vanem <giva@bgnett.no> 2004. # By Gisle Vanem <gvanem@broadpark.no> 2004.
# #
# $Id$ # $Id$
TOPDIR = .. TOPDIR = ..
DEPEND_PREREQ = ares_config.h
include ../packages/DOS/common.dj include ../packages/DOS/common.dj
include Makefile.inc include Makefile.inc

View File

@@ -22,6 +22,8 @@ CSOURCES = ares__close_sockets.c \
ares_parse_aaaa_reply.c \ ares_parse_aaaa_reply.c \
ares_parse_ns_reply.c \ ares_parse_ns_reply.c \
ares_parse_ptr_reply.c \ ares_parse_ptr_reply.c \
ares_parse_srv_reply.c \
ares_parse_txt_reply.c \
ares_process.c \ ares_process.c \
ares_query.c \ ares_query.c \
ares_search.c \ ares_search.c \
@@ -53,7 +55,7 @@ HHEADERS = ares.h \
inet_net_pton.h \ inet_net_pton.h \
inet_ntop.h \ inet_ntop.h \
nameser.h \ nameser.h \
setup.h \ ares_setup.h \
setup_once.h setup_once.h
MANPAGES = ares_cancel.3 \ MANPAGES = ares_cancel.3 \
@@ -79,6 +81,8 @@ MANPAGES = ares_cancel.3 \
ares_parse_aaaa_reply.3 \ ares_parse_aaaa_reply.3 \
ares_parse_ns_reply.3 \ ares_parse_ns_reply.3 \
ares_parse_ptr_reply.3 \ ares_parse_ptr_reply.3 \
ares_parse_srv_reply.3 \
ares_parse_txt_reply.3 \
ares_process.3 \ ares_process.3 \
ares_query.3 \ ares_query.3 \
ares_save_options.3 \ ares_save_options.3 \
@@ -112,6 +116,8 @@ HTMLPAGES = ares_cancel.html \
ares_parse_aaaa_reply.html \ ares_parse_aaaa_reply.html \
ares_parse_ns_reply.html \ ares_parse_ns_reply.html \
ares_parse_ptr_reply.html \ ares_parse_ptr_reply.html \
ares_parse_srv_reply.html \
ares_parse_txt_reply.html \
ares_process.html \ ares_process.html \
ares_query.html \ ares_query.html \
ares_save_options.html \ ares_save_options.html \
@@ -145,6 +151,8 @@ PDFPAGES = ares_cancel.pdf \
ares_parse_aaaa_reply.pdf \ ares_parse_aaaa_reply.pdf \
ares_parse_ns_reply.pdf \ ares_parse_ns_reply.pdf \
ares_parse_ptr_reply.pdf \ ares_parse_ptr_reply.pdf \
ares_parse_srv_reply.pdf \
ares_parse_txt_reply.pdf \
ares_process.pdf \ ares_process.pdf \
ares_query.pdf \ ares_query.pdf \
ares_save_options.pdf \ ares_save_options.pdf \

View File

@@ -1,7 +1,7 @@
# $Id$ # $Id$
# #
# C-ares makefile for MSVC6+ # C-ares makefile for MSVC6+
# G. Vanem <giva@bgnett.no>. # G. Vanem <gvanem@broadpark.no>.
# #
CFG_MODEL = MD CFG_MODEL = MD
@@ -74,6 +74,7 @@ OBJECTS = $(OBJ_DIR)\ares_fds.obj \
$(OBJ_DIR)\ares_parse_a_reply.obj \ $(OBJ_DIR)\ares_parse_a_reply.obj \
$(OBJ_DIR)\ares_parse_aaaa_reply.obj \ $(OBJ_DIR)\ares_parse_aaaa_reply.obj \
$(OBJ_DIR)\ares_parse_ns_reply.obj \ $(OBJ_DIR)\ares_parse_ns_reply.obj \
$(OBJ_DIR)\ares_parse_srv_reply.obj \
$(OBJ_DIR)\windows_port.obj \ $(OBJ_DIR)\windows_port.obj \
$(OBJ_DIR)\ares_expand_string.obj \ $(OBJ_DIR)\ares_expand_string.obj \
$(OBJ_DIR)\ares_parse_ptr_reply.obj \ $(OBJ_DIR)\ares_parse_ptr_reply.obj \
@@ -158,117 +159,117 @@ vclean realclean: clean
# #
# Copyright "gcc -MM .." # Copyright "gcc -MM .."
# #
$(OBJ_DIR)\ares_fds.obj: ares_fds.c setup.h setup_once.h ares.h ares_private.h \ $(OBJ_DIR)\ares_fds.obj: ares_fds.c ares_setup.h setup_once.h ares.h ares_private.h \
ares_ipv6.h ares_build.h ares_rules.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_process.obj: ares_process.c setup.h setup_once.h nameser.h \ $(OBJ_DIR)\ares_process.obj: ares_process.c ares_setup.h setup_once.h nameser.h \
ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_free_hostent.obj: ares_free_hostent.c setup.h setup_once.h \ $(OBJ_DIR)\ares_free_hostent.obj: ares_free_hostent.c ares_setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_query.obj: ares_query.c setup.h setup_once.h nameser.h \ $(OBJ_DIR)\ares_query.obj: ares_query.c ares_setup.h setup_once.h nameser.h \
ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares__close_sockets.obj: ares__close_sockets.c setup.h setup_once.h \ $(OBJ_DIR)\ares__close_sockets.obj: ares__close_sockets.c ares_setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_free_string.obj: ares_free_string.c setup.h setup_once.h \ $(OBJ_DIR)\ares_free_string.obj: ares_free_string.c ares_setup.h setup_once.h \
ares.h ares_build.h ares_rules.h ares.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_search.obj: ares_search.c setup.h setup_once.h nameser.h \ $(OBJ_DIR)\ares_search.obj: ares_search.c ares_setup.h setup_once.h nameser.h \
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares__get_hostent.obj: ares__get_hostent.c setup.h setup_once.h \ $(OBJ_DIR)\ares__get_hostent.obj: ares__get_hostent.c ares_setup.h setup_once.h \
ares.h ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_gethostbyaddr.obj: ares_gethostbyaddr.c setup.h setup_once.h \ $(OBJ_DIR)\ares_gethostbyaddr.obj: ares_gethostbyaddr.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h \ nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h \
ares_rules.h ares_rules.h
$(OBJ_DIR)\ares_send.obj: ares_send.c setup.h setup_once.h nameser.h ares.h \ $(OBJ_DIR)\ares_send.obj: ares_send.c ares_setup.h setup_once.h nameser.h ares.h \
ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares__read_line.obj: ares__read_line.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares__read_line.obj: ares__read_line.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_gethostbyname.obj: ares_gethostbyname.c setup.h setup_once.h \ $(OBJ_DIR)\ares_gethostbyname.obj: ares_gethostbyname.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h bitncmp.h \ nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h bitncmp.h \
ares_build.h ares_rules.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_strcasecmp.obj: ares_strcasecmp.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares_strcasecmp.obj: ares_strcasecmp.c ares_setup.h setup_once.h ares.h \
ares_build.h ares_rules.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_strerror.obj: ares_strerror.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares_strerror.obj: ares_strerror.c ares_setup.h setup_once.h ares.h \
ares_build.h ares_rules.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_cancel.obj: ares_cancel.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares_cancel.obj: ares_cancel.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_init.obj: ares_init.c setup.h setup_once.h nameser.h ares.h \ $(OBJ_DIR)\ares_init.obj: ares_init.c ares_setup.h setup_once.h nameser.h ares.h \
ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h \ ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h \
ares_library_init.h ares_library_init.h
$(OBJ_DIR)\ares_timeout.obj: ares_timeout.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares_timeout.obj: ares_timeout.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares__timeval.obj: ares__timeval.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares__timeval.obj: ares__timeval.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_destroy.obj: ares_destroy.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares_destroy.obj: ares_destroy.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_mkquery.obj: ares_mkquery.c setup.h setup_once.h nameser.h \ $(OBJ_DIR)\ares_mkquery.obj: ares_mkquery.c ares_setup.h setup_once.h nameser.h \
ares.h ares_dns.h ares_build.h ares_rules.h ares.h ares_dns.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_version.obj: ares_version.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares_version.obj: ares_version.c ares_setup.h setup_once.h ares.h \
ares_version.h ares_build.h ares_rules.h ares_version.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_expand_name.obj: ares_expand_name.c setup.h setup_once.h \ $(OBJ_DIR)\ares_expand_name.obj: ares_expand_name.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h nameser.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_parse_a_reply.obj: ares_parse_a_reply.c setup.h setup_once.h \ $(OBJ_DIR)\ares_parse_a_reply.obj: ares_parse_a_reply.c ares_setup.h setup_once.h \
nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h \ nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h \
ares_rules.h ares_rules.h
$(OBJ_DIR)\windows_port.obj: windows_port.c setup.h setup_once.h nameser.h \ $(OBJ_DIR)\windows_port.obj: windows_port.c ares_setup.h setup_once.h nameser.h \
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_expand_string.obj: ares_expand_string.c setup.h setup_once.h \ $(OBJ_DIR)\ares_expand_string.obj: ares_expand_string.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h nameser.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_parse_ptr_reply.obj: ares_parse_ptr_reply.c setup.h \ $(OBJ_DIR)\ares_parse_ptr_reply.obj: ares_parse_ptr_reply.c ares_setup.h \
setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h \ setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h \
ares_build.h ares_rules.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_parse_aaaa_reply.obj: ares_parse_aaaa_reply.c setup.h \ $(OBJ_DIR)\ares_parse_aaaa_reply.obj: ares_parse_aaaa_reply.c ares_setup.h \
setup_once.h nameser.h ares.h ares_dns.h inet_net_pton.h ares_private.h \ setup_once.h nameser.h ares.h ares_dns.h inet_net_pton.h ares_private.h \
ares_ipv6.h ares_build.h ares_rules.h ares_ipv6.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_parse_ns_reply.obj: ares_parse_ns_reply.c setup.h \ $(OBJ_DIR)\ares_parse_ns_reply.obj: ares_parse_ns_reply.c ares_setup.h \
setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h \ setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h \
ares_build.h ares_rules.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_getnameinfo.obj: ares_getnameinfo.c setup.h setup_once.h \ $(OBJ_DIR)\ares_getnameinfo.obj: ares_getnameinfo.c ares_setup.h setup_once.h \
nameser.h ares.h ares_private.h ares_ipv6.h inet_ntop.h ares_build.h \ nameser.h ares.h ares_private.h ares_ipv6.h inet_ntop.h ares_build.h \
ares_rules.h ares_rules.h
$(OBJ_DIR)\inet_net_pton.obj: inet_net_pton.c setup.h setup_once.h nameser.h \ $(OBJ_DIR)\inet_net_pton.obj: inet_net_pton.c ares_setup.h setup_once.h nameser.h \
ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h
$(OBJ_DIR)\bitncmp.obj: bitncmp.c bitncmp.h ares_build.h ares_rules.h $(OBJ_DIR)\bitncmp.obj: bitncmp.c bitncmp.h ares_build.h ares_rules.h
$(OBJ_DIR)\inet_ntop.obj: inet_ntop.c setup.h setup_once.h nameser.h \ $(OBJ_DIR)\inet_ntop.obj: inet_ntop.c ares_setup.h setup_once.h nameser.h \
ares_ipv6.h inet_ntop.h ares_build.h ares_rules.h ares_ipv6.h inet_ntop.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_getopt.obj: ares_getopt.c ares_getopt.h ares_build.h \ $(OBJ_DIR)\ares_getopt.obj: ares_getopt.c ares_getopt.h ares_build.h \
ares_rules.h ares_rules.h
$(OBJ_DIR)\ares_library_init.obj: ares_library_init.c setup.h setup_once.h \ $(OBJ_DIR)\ares_library_init.obj: ares_library_init.c ares_setup.h setup_once.h \
ares.h ares_private.h ares_library_init.h ares_build.h ares_rules.h ares.h ares_private.h ares_library_init.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_llist.obj: ares_llist.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares_llist.obj: ares_llist.c ares_setup.h setup_once.h ares.h \
ares_private.h ares_llist.h ares_build.h ares_rules.h ares_private.h ares_llist.h ares_build.h ares_rules.h
$(OBJ_DIR)\ares_writev.obj: ares_writev.c setup.h setup_once.h ares.h \ $(OBJ_DIR)\ares_writev.obj: ares_writev.c ares_setup.h setup_once.h ares.h \
ares_writev.h ares_build.h ares_rules.h ares_writev.h ares_build.h ares_rules.h

View File

@@ -50,7 +50,7 @@ The following notes apply to c-ares version 1.6.1 and later.
the library that you have built. It is _your_ responsability to provide this the library that you have built. It is _your_ responsability to provide this
file. No one at the c-ares project can know how you have built the library. file. No one at the c-ares project can know how you have built the library.
* File ares_build.h includes platform and configuration dependant info, * File ares_build.h includes platform and configuration dependent info,
and must not be modified by anyone. Configure script generates it for you. and must not be modified by anyone. Configure script generates it for you.
* We cannot assume anything else but very basic compiler features being * We cannot assume anything else but very basic compiler features being

View File

@@ -1,4 +1,4 @@
This is what's new and changed in the c-ares 1.6.1 release: This is what's new and changed in the c-ares 1.7.0 release:
Changed: Changed:
@@ -10,6 +10,9 @@ Changed:
o new ares_library_init() and ares_library_cleanup() functions o new ares_library_init() and ares_library_cleanup() functions
o new --enable-curldebug configure option o new --enable-curldebug configure option
o ARES_ECANCELLED is now sent as reason for ares_cancel() o ARES_ECANCELLED is now sent as reason for ares_cancel()
o added ares_parse_srv_reply()
o added ares_parse_txt_reply()
o new --enable-symbol-hiding configure option
Fixed: Fixed:
@@ -18,10 +21,11 @@ Fixed:
o only expose/export symbols starting with 'ares_' o only expose/export symbols starting with 'ares_'
o fix \Device\TCP handle leaks triggered by buggy iphlpapi.dll o fix \Device\TCP handle leaks triggered by buggy iphlpapi.dll
o init without internet gone no longer fails o init without internet gone no longer fails
o out of bounds memory overwrite triggered with malformed /etc/hosts file
Thanks go to these friendly people for their efforts and contributions: Thanks go to these friendly people for their efforts and contributions:
Phil Blundell, Japheth Cleaver, Yang Tse, Gregor Jasny, Joshua Kwan, Phil Blundell, Japheth Cleaver, Yang Tse, Gregor Jasny, Joshua Kwan,
Timo Teras Timo Teras, Jakub Hrozek, John Engelhart
Have fun! Have fun!

View File

@@ -33,7 +33,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>
@@ -551,12 +551,20 @@ static const unsigned char *display_rr(const unsigned char *aptr,
len = *p; len = *p;
if (p + len + 1 > aptr + dlen) if (p + len + 1 > aptr + dlen)
return NULL; return NULL;
printf("\t%.*s", (int)len, p + 1); status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
p += len + 1; if (status != ARES_SUCCESS)
return NULL;
printf("\t%s", name.as_char);
ares_free_string(name.as_char);
p += len;
len = *p; len = *p;
if (p + len + 1 > aptr + dlen) if (p + len + 1 > aptr + dlen)
return NULL; return NULL;
printf("\t%.*s", (int)len, p + 1); status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
if (status != ARES_SUCCESS)
return NULL;
printf("\t%s", name.as_char);
ares_free_string(name.as_char);
break; break;
case T_MINFO: case T_MINFO:
@@ -623,8 +631,12 @@ static const unsigned char *display_rr(const unsigned char *aptr,
len = *p; len = *p;
if (p + len + 1 > aptr + dlen) if (p + len + 1 > aptr + dlen)
return NULL; return NULL;
printf("\t%.*s", (int)len, p + 1); status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
p += len + 1; if (status != ARES_SUCCESS)
return NULL;
printf("\t%s", name.as_char);
ares_free_string(name.as_char);
p += len;
} }
break; break;

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#if !defined(WIN32) || defined(WATT32) #if !defined(WIN32) || defined(WATT32)
#ifdef HAVE_SYS_TIME_H #ifdef HAVE_SYS_TIME_H

View File

@@ -1,6 +1,6 @@
/* $Id$ */ /* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology. /* Copyright 1998, 2009 by the Massachusetts Institute of Technology.
* Copyright (C) 2007-2009 by Daniel Stenberg * Copyright (C) 2007-2009 by Daniel Stenberg
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
@@ -27,8 +27,9 @@
* Define WIN32 when build target is Win32 API * Define WIN32 when build target is Win32 API
*/ */
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) #if (defined(_WIN32) || defined(__WIN32__)) && \
#define WIN32 !defined(WIN32) && !defined(__SYMBIAN32__)
# define WIN32
#endif #endif
#include <sys/types.h> #include <sys/types.h>
@@ -45,9 +46,9 @@
#endif #endif
#if defined(WATT32) #if defined(WATT32)
#include <netinet/in.h> # include <netinet/in.h>
#include <sys/socket.h> # include <sys/socket.h>
#include <tcp.h> # include <tcp.h>
#elif defined(WIN32) #elif defined(WIN32)
# ifndef WIN32_LEAN_AND_MEAN # ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN
@@ -56,14 +57,37 @@
# include <winsock2.h> # include <winsock2.h>
# include <ws2tcpip.h> # include <ws2tcpip.h>
#else #else
#include <sys/socket.h> # include <sys/socket.h>
#include <netinet/in.h> # include <netinet/in.h>
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/*
** c-ares external API function linkage decorations.
*/
#if !defined(CARES_STATICLIB) && \
(defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__))
/* __declspec function decoration for Win32 and Symbian DLL's */
# if defined(CARES_BUILDING_LIBRARY)
# define CARES_EXTERN __declspec(dllexport)
# else
# define CARES_EXTERN __declspec(dllimport)
# endif
#else
/* visibility function decoration for other cases */
# if !defined(CARES_SYMBOL_HIDING) || \
defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)
# define CARES_EXTERN
# else
# define CARES_EXTERN CARES_SYMBOL_SCOPE_EXTERN
# endif
#endif
#define ARES_SUCCESS 0 #define ARES_SUCCESS 0
/* Server error codes (ARES_ENODATA indicates no relevant answer) */ /* Server error codes (ARES_ENODATA indicates no relevant answer) */
@@ -86,7 +110,6 @@ extern "C" {
#define ARES_ENOMEM 15 #define ARES_ENOMEM 15
#define ARES_EDESTRUCTION 16 #define ARES_EDESTRUCTION 16
#define ARES_EBADSTR 17 #define ARES_EBADSTR 17
#define ARES_ECANCELLED 21
/* ares_getnameinfo error codes */ /* ares_getnameinfo error codes */
#define ARES_EBADFLAGS 18 #define ARES_EBADFLAGS 18
@@ -96,11 +119,14 @@ extern "C" {
#define ARES_EBADHINTS 20 #define ARES_EBADHINTS 20
/* Uninitialized library error code */ /* Uninitialized library error code */
#define ARES_ENOTINITIALIZED 21 #define ARES_ENOTINITIALIZED 21 /* introduced in 1.6.1 */
/* ares_library_init error codes */ /* ares_library_init error codes */
#define ARES_ELOADIPHLPAPI 22 #define ARES_ELOADIPHLPAPI 22 /* introduced in 1.6.1 */
#define ARES_EADDRGETNETWORKPARAMS 23 #define ARES_EADDRGETNETWORKPARAMS 23 /* introduced in 1.6.1 */
/* More error codes */
#define ARES_ECANCELLED 24 /* introduced in 1.6.1 */
/* Flag values */ /* Flag values */
#define ARES_FLAG_USEVC (1 << 0) #define ARES_FLAG_USEVC (1 << 0)
@@ -239,62 +265,143 @@ struct hostent;
struct timeval; struct timeval;
struct sockaddr; struct sockaddr;
struct ares_channeldata; struct ares_channeldata;
typedef struct ares_channeldata *ares_channel; typedef struct ares_channeldata *ares_channel;
typedef void (*ares_callback)(void *arg, int status, int timeouts,
unsigned char *abuf, int alen); typedef void (*ares_callback)(void *arg,
typedef void (*ares_host_callback)(void *arg, int status, int timeouts, int status,
int timeouts,
unsigned char *abuf,
int alen);
typedef void (*ares_host_callback)(void *arg,
int status,
int timeouts,
struct hostent *hostent); struct hostent *hostent);
typedef void (*ares_nameinfo_callback)(void *arg, int status, int timeouts,
char *node, char *service); typedef void (*ares_nameinfo_callback)(void *arg,
int status,
int timeouts,
char *node,
char *service);
typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd, typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd,
int type, void *data); int type,
void *data);
int ares_library_init(int flags); CARES_EXTERN int ares_library_init(int flags);
void ares_library_cleanup(void);
const char *ares_version(int *version); CARES_EXTERN void ares_library_cleanup(void);
CARES_EXTERN const char *ares_version(int *version);
CARES_EXTERN int ares_init(ares_channel *channelptr);
CARES_EXTERN int ares_init_options(ares_channel *channelptr,
struct ares_options *options,
int optmask);
CARES_EXTERN int ares_save_options(ares_channel channel,
struct ares_options *options,
int *optmask);
CARES_EXTERN void ares_destroy_options(struct ares_options *options);
CARES_EXTERN int ares_dup(ares_channel *dest,
ares_channel src);
CARES_EXTERN void ares_destroy(ares_channel channel);
CARES_EXTERN void ares_cancel(ares_channel channel);
int ares_init(ares_channel *channelptr);
int ares_init_options(ares_channel *channelptr, struct ares_options *options,
int optmask);
int ares_save_options(ares_channel channel, struct ares_options *options,
int *optmask);
void ares_destroy_options(struct ares_options *options);
int ares_dup(ares_channel *dest, ares_channel src);
void ares_destroy(ares_channel channel);
void ares_cancel(ares_channel channel);
void ares_set_socket_callback(ares_channel channel, void ares_set_socket_callback(ares_channel channel,
ares_sock_create_callback callback, ares_sock_create_callback callback,
void *user_data); void *user_data);
void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
ares_callback callback, void *arg);
void ares_query(ares_channel channel, const char *name, int dnsclass,
int type, ares_callback callback, void *arg);
void ares_search(ares_channel channel, const char *name, int dnsclass,
int type, ares_callback callback, void *arg);
void ares_gethostbyname(ares_channel channel, const char *name, int family,
ares_host_callback callback, void *arg);
int ares_gethostbyname_file(ares_channel channel, const char *name,
int family, struct hostent **host);
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,
ares_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);
void ares_process_fd(ares_channel channel, ares_socket_t read_fd,
ares_socket_t write_fd);
int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id, CARES_EXTERN void ares_send(ares_channel channel,
int rd, unsigned char **buf, int *buflen); const unsigned char *qbuf,
int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int qlen,
int alen, char **s, long *enclen); ares_callback callback,
int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf, void *arg);
int alen, unsigned char **s, long *enclen);
CARES_EXTERN void ares_query(ares_channel channel,
const char *name,
int dnsclass,
int type,
ares_callback callback,
void *arg);
CARES_EXTERN void ares_search(ares_channel channel,
const char *name,
int dnsclass,
int type,
ares_callback callback,
void *arg);
CARES_EXTERN void ares_gethostbyname(ares_channel channel,
const char *name,
int family,
ares_host_callback callback,
void *arg);
CARES_EXTERN int ares_gethostbyname_file(ares_channel channel,
const char *name,
int family,
struct hostent **host);
CARES_EXTERN void ares_gethostbyaddr(ares_channel channel,
const void *addr,
int addrlen,
int family,
ares_host_callback callback,
void *arg);
CARES_EXTERN void ares_getnameinfo(ares_channel channel,
const struct sockaddr *sa,
ares_socklen_t salen,
int flags,
ares_nameinfo_callback callback,
void *arg);
CARES_EXTERN int ares_fds(ares_channel channel,
fd_set *read_fds,
fd_set *write_fds);
CARES_EXTERN int ares_getsock(ares_channel channel,
int *socks,
int numsocks);
CARES_EXTERN struct timeval *ares_timeout(ares_channel channel,
struct timeval *maxtv,
struct timeval *tv);
CARES_EXTERN void ares_process(ares_channel channel,
fd_set *read_fds,
fd_set *write_fds);
CARES_EXTERN void ares_process_fd(ares_channel channel,
ares_socket_t read_fd,
ares_socket_t write_fd);
CARES_EXTERN int ares_mkquery(const char *name,
int dnsclass,
int type,
unsigned short id,
int rd,
unsigned char **buf,
int *buflen);
CARES_EXTERN int ares_expand_name(const unsigned char *encoded,
const unsigned char *abuf,
int alen,
char **s,
long *enclen);
CARES_EXTERN int ares_expand_string(const unsigned char *encoded,
const unsigned char *abuf,
int alen,
unsigned char **s,
long *enclen);
/* /*
* NOTE: before c-ares 1.6.1 we would most often use the system in6_addr * NOTE: before c-ares 1.6.1 we would most often use the system in6_addr
@@ -322,6 +429,18 @@ struct addr6ttl {
int ttl; int ttl;
}; };
struct ares_srv_reply {
unsigned short weight;
unsigned short priority;
unsigned short port;
char *host;
};
struct ares_txt_reply {
size_t length; /* length excludes null termination */
unsigned char *txt;
};
/* /*
** Parse the buffer, starting at *abuf and of length alen bytes, previously ** Parse the buffer, starting at *abuf and of length alen bytes, previously
** obtained from an ares_search call. Put the results in *host, if nonnull. ** obtained from an ares_search call. Put the results in *host, if nonnull.
@@ -329,19 +448,45 @@ struct addr6ttl {
** their TTLs in that array, and set *naddrttls to the number of addresses ** their TTLs in that array, and set *naddrttls to the number of addresses
** so written. ** so written.
*/ */
int ares_parse_a_reply(const unsigned char *abuf, int alen,
struct hostent **host, CARES_EXTERN int ares_parse_a_reply(const unsigned char *abuf,
struct addrttl *addrttls, int *naddrttls); int alen,
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, struct hostent **host,
struct hostent **host, struct addrttl *addrttls,
struct addr6ttl *addrttls, int *naddrttls); int *naddrttls);
int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
int addrlen, int family, struct hostent **host); CARES_EXTERN int ares_parse_aaaa_reply(const unsigned char *abuf,
int ares_parse_ns_reply(const unsigned char *abuf, int alen, int alen,
struct hostent **host); struct hostent **host,
void ares_free_string(void *str); struct addr6ttl *addrttls,
void ares_free_hostent(struct hostent *host); int *naddrttls);
const char *ares_strerror(int code);
CARES_EXTERN int ares_parse_ptr_reply(const unsigned char *abuf,
int alen,
const void *addr,
int addrlen,
int family,
struct hostent **host);
CARES_EXTERN int ares_parse_ns_reply(const unsigned char *abuf,
int alen,
struct hostent **host);
CARES_EXTERN int ares_parse_srv_reply(const unsigned char* abuf,
int alen,
struct ares_srv_reply** srv_out,
int *nsrvreply);
CARES_EXTERN int ares_parse_txt_reply(const unsigned char* abuf,
int alen,
struct ares_txt_reply** txt_out,
int *nsrvreply);
CARES_EXTERN void ares_free_string(void *str);
CARES_EXTERN void ares_free_hostent(struct hostent *host);
CARES_EXTERN const char *ares_strerror(int code);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <stdlib.h> #include <stdlib.h>
#ifdef HAVE_UNISTD_H #ifdef HAVE_UNISTD_H

View File

@@ -1,6 +1,6 @@
/* $Id$ */ /* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology. /* Copyright 1998, 2009 by the Massachusetts Institute of Technology.
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without * software and its documentation for any purpose and without
@@ -15,27 +15,20 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#if !defined(WIN32) || defined(WATT32)
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h> # include <sys/socket.h>
#endif #endif
#ifdef HAVE_NETINET_IN_H #ifdef HAVE_NETINET_IN_H
#include <netinet/in.h> # include <netinet/in.h>
#endif #endif
#ifdef HAVE_NETDB_H #ifdef HAVE_NETDB_H
#include <netdb.h> # include <netdb.h>
#endif #endif
#ifdef HAVE_ARPA_INET_H #ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h> # include <arpa/inet.h>
#endif #endif
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "ares.h" #include "ares.h"
#include "inet_net_pton.h" #include "inet_net_pton.h"
@@ -43,136 +36,204 @@
int ares__get_hostent(FILE *fp, int family, struct hostent **host) int ares__get_hostent(FILE *fp, int family, struct hostent **host)
{ {
char *line = NULL, *p, *q, *canonical, **alias; char *line = NULL, *p, *q, **alias;
int status, linesize, end_at_hostname, naliases; char *txtaddr, *txthost, *txtalias;
struct in_addr addr; int status;
struct in6_addr addr6; size_t addrlen, linesize, naliases;
size_t addrlen = sizeof(struct in_addr); struct ares_addr addr;
struct hostent *hostent = NULL; struct hostent *hostent = NULL;
*host = NULL; /* Assume failure */
/* Validate family */
switch (family) {
case AF_INET:
case AF_INET6:
case AF_UNSPEC:
break;
default:
return ARES_EBADFAMILY;
}
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
{ {
/* Skip comment lines; terminate line at comment character. */
if (*line == '#' || !*line)
continue;
p = strchr(line, '#');
if (p)
*p = 0;
/* Get the address part. */ /* Trim line comment. */
p = line; p = line;
while (*p && (*p != '#'))
p++;
*p = '\0';
/* Trim trailing whitespace. */
q = p - 1;
while ((q >= line) && ISSPACE(*q))
q--;
*++q = '\0';
/* Skip leading whitespace. */
p = line;
while (*p && ISSPACE(*p))
p++;
if (!*p)
/* Ignore line if empty. */
continue;
/* Pointer to start of IPv4 or IPv6 address part. */
txtaddr = p;
/* Advance past address part. */
while (*p && !ISSPACE(*p)) while (*p && !ISSPACE(*p))
p++; p++;
if (!*p) if (!*p)
continue; /* Ignore line if reached end of line. */
*p = 0;
addr.s_addr = inet_addr(line);
if (addr.s_addr == INADDR_NONE)
{
/* It wasn't an AF_INET dotted address, then AF_UNSPEC and AF_INET6
families are subject for this further check */
if ((family != AF_INET) &&
(ares_inet_pton(AF_INET6, line, &addr6) > 0)) {
addrlen = sizeof(struct in6_addr);
family = AF_INET6;
}
else
continue;
}
else if (family == AF_UNSPEC)
family = AF_INET; /* now confirmed! */
else if (family != AF_INET)
/* unknown, keep moving */
continue; continue;
/* Get the canonical hostname. */ /* Null terminate address part. */
*p = '\0';
/* Advance to host name */
p++; p++;
while (ISSPACE(*p)) while (*p && ISSPACE(*p))
p++; p++;
if (!*p) if (!*p)
/* Ignore line if reached end of line. */
continue; continue;
q = p;
while (*q && !ISSPACE(*q))
q++;
end_at_hostname = (*q == 0);
*q = 0;
canonical = p;
naliases = 0; /* Pointer to start of host name. */
if (!end_at_hostname) txthost = p;
/* Advance past host name. */
while (*p && !ISSPACE(*p))
p++;
/* Pointer to start of first alias. */
txtalias = NULL;
if (*p)
{ {
/* Count the aliases. */ q = p + 1;
p = q + 1; while (*q && ISSPACE(*q))
while (ISSPACE(*p)) q++;
p++; if (*q)
txtalias = q;
}
/* Null terminate host name. */
*p = '\0';
/* find out number of aliases. */
naliases = 0;
if (txtalias)
{
p = txtalias;
while (*p) while (*p)
{ {
while (*p && !ISSPACE(*p)) while (*p && !ISSPACE(*p))
p++; p++;
while (ISSPACE(*p)) while (*p && ISSPACE(*p))
p++; p++;
naliases++; naliases++;
} }
} }
/* Allocate memory for the host structure. */ /* Convert address string to network address for the requested family. */
addrlen = 0;
addr.family = AF_UNSPEC;
addr.addrV4.s_addr = INADDR_NONE;
if ((family == AF_INET) || (family == AF_UNSPEC))
{
addr.addrV4.s_addr = inet_addr(txtaddr);
if (addr.addrV4.s_addr != INADDR_NONE)
{
/* Actual network address family and length. */
addr.family = AF_INET;
addrlen = sizeof(struct in_addr);
}
}
if ((family == AF_INET6) || ((family == AF_UNSPEC) && (!addrlen)))
{
if (ares_inet_pton(AF_INET6, txtaddr, &addr.addrV6) > 0)
{
/* Actual network address family and length. */
addr.family = AF_INET6;
addrlen = sizeof(struct in6_addr);
}
}
if (!addrlen)
/* Ignore line if invalid address string for the requested family. */
continue;
/*
** Actual address family possible values are AF_INET and AF_INET6 only.
*/
/* Allocate memory for the hostent structure. */
hostent = malloc(sizeof(struct hostent)); hostent = malloc(sizeof(struct hostent));
if (!hostent) if (!hostent)
break; break;
/* Initialize fields for out of memory condition. */
hostent->h_aliases = NULL; hostent->h_aliases = NULL;
hostent->h_addr_list = NULL; hostent->h_addr_list = NULL;
hostent->h_name = strdup(canonical);
/* Copy official host name. */
hostent->h_name = strdup(txthost);
if (!hostent->h_name) if (!hostent->h_name)
break; break;
/* Copy network address. */
hostent->h_addr_list = malloc(2 * sizeof(char *)); hostent->h_addr_list = malloc(2 * sizeof(char *));
if (!hostent->h_addr_list) if (!hostent->h_addr_list)
break; break;
hostent->h_addr_list[1] = NULL;
hostent->h_addr_list[0] = malloc(addrlen); hostent->h_addr_list[0] = malloc(addrlen);
if (!hostent->h_addr_list[0]) if (!hostent->h_addr_list[0])
break; break;
if (addr.family == AF_INET)
memcpy(hostent->h_addr_list[0], &addr.addrV4, sizeof(struct in_addr));
else
memcpy(hostent->h_addr_list[0], &addr.addrV6, sizeof(struct in6_addr));
/* Copy aliases. */
hostent->h_aliases = malloc((naliases + 1) * sizeof(char *)); hostent->h_aliases = malloc((naliases + 1) * sizeof(char *));
if (!hostent->h_aliases) if (!hostent->h_aliases)
break; break;
alias = hostent->h_aliases;
/* Copy in aliases. */ while (naliases)
naliases = 0; *(alias + naliases--) = NULL;
if (!end_at_hostname) *alias = NULL;
while (txtalias)
{ {
p = canonical + strlen(canonical) + 1; p = txtalias;
while (ISSPACE(*p)) while (*p && !ISSPACE(*p))
p++; p++;
while (*p) q = p;
{ while (*q && ISSPACE(*q))
q = p; q++;
while (*q && !ISSPACE(*q)) *p = '\0';
q++; if ((*alias = strdup(txtalias)) == NULL)
hostent->h_aliases[naliases] = malloc(q - p + 1);
if (hostent->h_aliases[naliases] == NULL)
break;
memcpy(hostent->h_aliases[naliases], p, q - p);
hostent->h_aliases[naliases][q - p] = 0;
p = q;
while (ISSPACE(*p))
p++;
naliases++;
}
if (*p)
break; break;
alias++;
txtalias = *q ? q : NULL;
} }
hostent->h_aliases[naliases] = NULL; if (txtalias)
/* Alias memory allocation failure. */
break;
hostent->h_addrtype = family; /* Copy actual network address family and length. */
hostent->h_addrtype = addr.family;
hostent->h_length = (int)addrlen; hostent->h_length = (int)addrlen;
if (family == AF_INET)
memcpy(hostent->h_addr_list[0], &addr, addrlen); /* Free line buffer. */
else if (family == AF_INET6)
memcpy(hostent->h_addr_list[0], &addr6, addrlen);
hostent->h_addr_list[1] = NULL;
*host = hostent;
free(line); free(line);
/* Return hostent successfully */
*host = hostent;
return ARES_SUCCESS; return ARES_SUCCESS;
} }
if(line)
/* If allocated, free line buffer. */
if (line)
free(line); free(line);
if (status == ARES_SUCCESS) if (status == ARES_SUCCESS)
@@ -180,22 +241,22 @@ int ares__get_hostent(FILE *fp, int family, struct hostent **host)
/* Memory allocation failure; clean up. */ /* Memory allocation failure; clean up. */
if (hostent) if (hostent)
{ {
if(hostent->h_name) if (hostent->h_name)
free((char *) hostent->h_name); free((char *) hostent->h_name);
if (hostent->h_aliases) if (hostent->h_aliases)
{ {
for (alias = hostent->h_aliases; *alias; alias++) for (alias = hostent->h_aliases; *alias; alias++)
free(*alias); free(*alias);
free(hostent->h_aliases);
}
if (hostent->h_addr_list)
{
if (hostent->h_addr_list[0])
free(hostent->h_addr_list[0]);
free(hostent->h_addr_list);
} }
if(hostent->h_aliases)
free(hostent->h_aliases);
if (hostent->h_addr_list && hostent->h_addr_list[0])
free(hostent->h_addr_list[0]);
if(hostent->h_addr_list)
free(hostent->h_addr_list);
free(hostent); free(hostent);
} }
*host = NULL;
return ARES_ENOMEM; return ARES_ENOMEM;
} }

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@@ -30,7 +30,7 @@
* appropriate. The initial value of *buf should be NULL. After the * appropriate. The initial value of *buf should be NULL. After the
* calling routine is done reading lines, it should free *buf. * calling routine is done reading lines, it should free *buf.
*/ */
int ares__read_line(FILE *fp, char **buf, int *bufsize) int ares__read_line(FILE *fp, char **buf, size_t *bufsize)
{ {
char *newbuf; char *newbuf;
size_t offset = 0; size_t offset = 0;
@@ -46,7 +46,7 @@ int ares__read_line(FILE *fp, char **buf, int *bufsize)
while (1) while (1)
{ {
if (!fgets(*buf + offset, *bufsize - (int)offset, fp)) if (!fgets(*buf + offset, (int)(*bufsize - offset), fp))
return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF; return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;
len = offset + strlen(*buf + offset); len = offset + strlen(*buf + offset);
if ((*buf)[len - 1] == '\n') if ((*buf)[len - 1] == '\n')

View File

@@ -13,7 +13,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include "ares.h" #include "ares.h"
#include "ares_private.h" #include "ares_private.h"

View File

@@ -13,7 +13,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include "ares.h" #include "ares.h"

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include "ares.h" #include "ares.h"

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>
@@ -71,10 +71,10 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
const unsigned char *p; const unsigned char *p;
len = name_length(encoded, abuf, alen); len = name_length(encoded, abuf, alen);
if (len == -1) if (len < 0)
return ARES_EBADNAME; return ARES_EBADNAME;
*s = malloc(len + 1); *s = malloc(((size_t)len) + 1);
if (!*s) if (!*s)
return ARES_ENOMEM; return ARES_ENOMEM;
q = *s; q = *s;

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_TIME_H #ifdef HAVE_SYS_TIME_H
#include <sys/time.h> #include <sys/time.h>

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <stdlib.h> #include <stdlib.h>
#if !defined(WIN32) || defined(WATT32) #if !defined(WIN32) || defined(WATT32)

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <stdlib.h> #include <stdlib.h>
#include "ares.h" #include "ares.h"
#include "ares_private.h" #include "ares_private.h"

View File

@@ -14,7 +14,7 @@
* this software for any purpose. It is provided "as is" * this software for any purpose. It is provided "as is"
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>
@@ -245,15 +245,16 @@ static int fake_hostent(const char *name, int family, ares_host_callback callbac
struct in_addr in; struct in_addr in;
struct in6_addr in6; struct in6_addr in6;
if (family == AF_INET) if (family == AF_INET || family == AF_INET6)
{ {
/* It only looks like an IP address if it's all numbers and dots. */ /* It only looks like an IP address if it's all numbers and dots. */
int numdots = 0; int numdots = 0, valid = 1;
const char *p; const char *p;
for (p = name; *p; p++) for (p = name; *p; p++)
{ {
if (!ISDIGIT(*p) && *p != '.') { if (!ISDIGIT(*p) && *p != '.') {
return 0; valid = 0;
break;
} else if (*p == '.') { } else if (*p == '.') {
numdots++; numdots++;
} }
@@ -262,12 +263,15 @@ static int fake_hostent(const char *name, int family, ares_host_callback callbac
/* if we don't have 3 dots, it is illegal /* if we don't have 3 dots, it is illegal
* (although inet_addr doesn't think so). * (although inet_addr doesn't think so).
*/ */
if (numdots != 3) if (numdots != 3 || !valid)
result = 0; result = 0;
else else
result = ((in.s_addr = inet_addr(name)) == INADDR_NONE ? 0 : 1); result = ((in.s_addr = inet_addr(name)) == INADDR_NONE ? 0 : 1);
if (result)
family = AF_INET;
} }
else if (family == AF_INET6) if (family == AF_INET6)
result = (ares_inet_pton(AF_INET6, name, &in6) < 1 ? 0 : 1); result = (ares_inet_pton(AF_INET6, name, &in6) < 1 ? 0 : 1);
if (!result) if (!result)

View File

@@ -14,7 +14,7 @@
* this software for any purpose. It is provided "as is" * this software for any purpose. It is provided "as is"
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_GETSERVBYPORT_R #ifdef HAVE_GETSERVBYPORT_R
# if !defined(GETSERVBYPORT_R_ARGS) || \ # if !defined(GETSERVBYPORT_R_ARGS) || \
@@ -99,12 +99,19 @@ void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
struct sockaddr_in *addr = NULL; struct sockaddr_in *addr = NULL;
struct sockaddr_in6 *addr6 = NULL; struct sockaddr_in6 *addr6 = NULL;
struct nameinfo_query *niquery; struct nameinfo_query *niquery;
unsigned int port = 0;
/* Verify the buffer size */ /* Verify the buffer size */
if (salen == sizeof(struct sockaddr_in)) if (salen == sizeof(struct sockaddr_in))
addr = (struct sockaddr_in *)sa; {
addr = (struct sockaddr_in *)sa;
port = addr->sin_port;
}
else if (salen == sizeof(struct sockaddr_in6)) else if (salen == sizeof(struct sockaddr_in6))
addr6 = (struct sockaddr_in6 *)sa; {
addr6 = (struct sockaddr_in6 *)sa;
port = addr6->sin6_port;
}
else else
{ {
callback(arg, ARES_ENOTIMP, 0, NULL, NULL); callback(arg, ARES_ENOTIMP, 0, NULL, NULL);
@@ -119,12 +126,7 @@ void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
if ((flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST)) if ((flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST))
{ {
char buf[33], *service; 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), service = lookup_service((unsigned short)(port & 0xffff),
flags, buf, sizeof(buf)); flags, buf, sizeof(buf));
callback(arg, ARES_SUCCESS, 0, NULL, service); callback(arg, ARES_SUCCESS, 0, NULL, service);
@@ -137,7 +139,6 @@ void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
/* A numeric host can be handled without DNS */ /* A numeric host can be handled without DNS */
if ((flags & ARES_NI_NUMERICHOST)) if ((flags & ARES_NI_NUMERICHOST))
{ {
unsigned int port = 0;
char ipbuf[IPBUFSIZ]; char ipbuf[IPBUFSIZ];
char srvbuf[33]; char srvbuf[33];
char *service = NULL; char *service = NULL;
@@ -154,7 +155,6 @@ void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
if (salen == sizeof(struct sockaddr_in6)) if (salen == sizeof(struct sockaddr_in6))
{ {
ares_inet_ntop(AF_INET6, &addr6->sin6_addr, ipbuf, IPBUFSIZ); ares_inet_ntop(AF_INET6, &addr6->sin6_addr, ipbuf, IPBUFSIZ);
port = addr6->sin6_port;
/* If the system supports scope IDs, use it */ /* If the system supports scope IDs, use it */
#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
append_scopeid(addr6, flags, ipbuf, sizeof(ipbuf)); append_scopeid(addr6, flags, ipbuf, sizeof(ipbuf));
@@ -163,7 +163,6 @@ void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
else else
{ {
ares_inet_ntop(AF_INET, &addr->sin_addr, ipbuf, IPBUFSIZ); ares_inet_ntop(AF_INET, &addr->sin_addr, ipbuf, IPBUFSIZ);
port = addr->sin_port;
} }
/* They also want a service */ /* They also want a service */
if (flags & ARES_NI_LOOKUPSERVICE) if (flags & ARES_NI_LOOKUPSERVICE)

View File

@@ -13,7 +13,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_TIME_H #ifdef HAVE_SYS_TIME_H
#include <sys/time.h> #include <sys/time.h>

View File

@@ -16,7 +16,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#if defined(WIN32) && !defined(WATT32) #if defined(WIN32) && !defined(WATT32)
#include <iphlpapi.h> #include <iphlpapi.h>
@@ -80,14 +80,16 @@ static int init_by_environment(ares_channel channel);
static int init_by_resolv_conf(ares_channel channel); static int init_by_resolv_conf(ares_channel channel);
static int init_by_defaults(ares_channel channel); static int init_by_defaults(ares_channel channel);
#ifndef WATT32
static int config_nameserver(struct server_state **servers, int *nservers, static int config_nameserver(struct server_state **servers, int *nservers,
char *str); char *str);
#endif
static int set_search(ares_channel channel, const char *str); static int set_search(ares_channel channel, const char *str);
static int set_options(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); static const char *try_option(const char *p, const char *q, const char *opt);
static int init_id_key(rc4_key* key,int key_data_len); static int init_id_key(rc4_key* key,int key_data_len);
#ifndef WIN32 #if !defined(WIN32) && !defined(WATT32)
static int sortlist_alloc(struct apattern **sortlist, int *nsort, struct apattern *pat); 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 int ip_addr(const char *s, int len, struct in_addr *addr);
static void natural_mask(struct apattern *pat); static void natural_mask(struct apattern *pat);
@@ -635,7 +637,9 @@ quit:
static int init_by_resolv_conf(ares_channel channel) static int init_by_resolv_conf(ares_channel channel)
{ {
#ifndef WATT32
char *line = NULL; char *line = NULL;
#endif
int status = -1, nservers = 0, nsort = 0; int status = -1, nservers = 0, nsort = 0;
struct server_state *servers = NULL; struct server_state *servers = NULL;
struct apattern *sortlist = NULL; struct apattern *sortlist = NULL;
@@ -805,7 +809,7 @@ DhcpNameServer
{ {
char *p; char *p;
FILE *fp; FILE *fp;
int linesize; size_t linesize;
int error; int error;
/* Don't read resolv.conf and friends if we don't have to */ /* Don't read resolv.conf and friends if we don't have to */
@@ -971,6 +975,9 @@ static int init_by_defaults(ares_channel channel)
{ {
char *hostname = NULL; char *hostname = NULL;
int rc = ARES_SUCCESS; int rc = ARES_SUCCESS;
#ifdef HAVE_GETHOSTNAME
char *dot;
#endif
if (channel->flags == -1) if (channel->flags == -1)
channel->flags = 0; channel->flags = 0;
@@ -1040,15 +1047,15 @@ static int init_by_defaults(ares_channel channel)
} while(0); } while(0);
if (strchr(hostname, '.')) { dot = strchr(hostname, '.');
if (dot) {
/* a dot was found */ /* a dot was found */
channel->domains = malloc(sizeof(char *)); channel->domains = malloc(sizeof(char *));
if (!channel->domains) { if (!channel->domains) {
rc = ARES_ENOMEM; rc = ARES_ENOMEM;
goto error; goto error;
} }
channel->domains[0] = strdup(strchr(hostname, '.') + 1); channel->domains[0] = strdup(dot + 1);
if (!channel->domains[0]) { if (!channel->domains[0]) {
rc = ARES_ENOMEM; rc = ARES_ENOMEM;
goto error; goto error;
@@ -1088,7 +1095,7 @@ static int init_by_defaults(ares_channel channel)
return rc; return rc;
} }
#ifndef WIN32 #if !defined(WIN32) && !defined(WATT32)
static int config_domain(ares_channel channel, char *str) static int config_domain(ares_channel channel, char *str)
{ {
char *q; char *q;
@@ -1128,9 +1135,9 @@ static int config_lookup(ares_channel channel, const char *str,
channel->lookups = strdup(lookups); channel->lookups = strdup(lookups);
return (channel->lookups) ? ARES_SUCCESS : ARES_ENOMEM; return (channel->lookups) ? ARES_SUCCESS : ARES_ENOMEM;
} }
#endif /* !WIN32 & !WATT32 */
#endif #ifndef WATT32
static int config_nameserver(struct server_state **servers, int *nservers, static int config_nameserver(struct server_state **servers, int *nservers,
char *str) char *str)
{ {
@@ -1273,7 +1280,8 @@ static int config_sortlist(struct apattern **sortlist, int *nsort,
return ARES_SUCCESS; return ARES_SUCCESS;
} }
#endif #endif /* !WIN32 */
#endif /* !WATT32 */
static int set_search(ares_channel channel, const char *str) static int set_search(ares_channel channel, const char *str)
{ {
@@ -1365,29 +1373,39 @@ static int set_options(ares_channel channel, const char *str)
return ARES_SUCCESS; return ARES_SUCCESS;
} }
#ifndef WIN32 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;
}
#if !defined(WIN32) && !defined(WATT32)
static char *try_config(char *s, const char *opt) static char *try_config(char *s, const char *opt)
{ {
size_t len; size_t len;
ssize_t i;
ssize_t j;
char *p; char *p;
char *q;
if (!s || !opt) if (!s || !opt)
/* no line or no option */ /* no line or no option */
return NULL; return NULL;
/* trim line comment */ /* trim line comment */
for (i = 0; s[i] && s[i] != '#'; ++i); p = s;
s[i] = '\0'; while (*p && (*p != '#'))
p++;
*p = '\0';
/* trim trailing whitespace */ /* trim trailing whitespace */
for (j = i-1; j >= 0 && ISSPACE(s[j]); --j); q = p - 1;
s[++j] = '\0'; while ((q >= s) && ISSPACE(*q))
q--;
*++q = '\0';
/* skip leading whitespace */ /* skip leading whitespace */
for (i = 0; s[i] && ISSPACE(s[i]); ++i); p = s;
p = &s[i]; while (*p && ISSPACE(*p))
p++;
if (!*p) if (!*p)
/* empty line */ /* empty line */
@@ -1424,15 +1442,7 @@ static char *try_config(char *s, const char *opt)
/* return pointer to option value */ /* return pointer to option value */
return p; return p;
} }
#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;
}
#ifndef WIN32
static int sortlist_alloc(struct apattern **sortlist, int *nsort, static int sortlist_alloc(struct apattern **sortlist, int *nsort,
struct apattern *pat) struct apattern *pat)
{ {
@@ -1478,7 +1488,8 @@ static void natural_mask(struct apattern *pat)
else else
pat->mask.addr4.s_addr = htonl(IN_CLASSC_NET); pat->mask.addr4.s_addr = htonl(IN_CLASSC_NET);
} }
#endif #endif /* !WIN32 && !WATT32 */
/* initialize an rc4 key. If possible a cryptographically secure random key /* initialize an rc4 key. If possible a cryptographically secure random key
is generated using a suitable function (for example win32's RtlGenRandom as is generated using a suitable function (for example win32's RtlGenRandom as
described in described in

View File

@@ -16,7 +16,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include "ares.h" #include "ares.h"
#include "ares_library_init.h" #include "ares_library_init.h"

View File

@@ -19,7 +19,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef WIN32 #ifdef WIN32

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include "ares.h" #include "ares.h"
#include "ares_private.h" #include "ares_private.h"

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -16,7 +16,7 @@
.\" .\"
.TH ARES_PARSE_A_REPLY 3 "25 July 1998" .TH ARES_PARSE_A_REPLY 3 "25 July 1998"
.SH NAME .SH NAME
ares_parse_a_reply \- Parse a reply to a DNS query of type A into a hostent ares_parse_a_reply \- Parse a reply to a DNS query of type A
.SH SYNOPSIS .SH SYNOPSIS
.nf .nf
.B #include <ares.h> .B #include <ares.h>

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -16,7 +16,7 @@
.\" .\"
.TH ARES_PARSE_AAAA_REPLY 3 "10 March 2005" .TH ARES_PARSE_AAAA_REPLY 3 "10 March 2005"
.SH NAME .SH NAME
ares_parse_aaaa_reply \- Parse a reply to a DNS query of type AAAA into a hostent ares_parse_aaaa_reply \- Parse a reply to a DNS query of type AAAA
.SH SYNOPSIS .SH SYNOPSIS
.nf .nf
.B #include <ares.h> .B #include <ares.h>

View File

@@ -1,6 +1,7 @@
/* $Id$ */ /* $Id$ */
/* Copyright 2005 Dominick Meglio /* Copyright 1998 by the Massachusetts Institute of Technology.
* Copyright 2005 Dominick Meglio
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without * software and its documentation for any purpose and without
@@ -15,7 +16,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -1,13 +1,15 @@
/* $Id */
/* Copyright 1998 by the Massachusetts Institute of Technology. /* Copyright 1998 by the Massachusetts Institute of Technology.
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without * software and its documentation for any purpose and without
* fee is hereby granted, provided that the above copyright * fee is hereby granted, provided that the above copyright
* notice appear in all copies and that both that copyright * notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting * notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in * documentation, and that the name of M.I.T. not be used in
* advertising or publicity pertaining to distribution of the * advertising or publicity pertaining to distribution of the
* software without specific, written prior permission. * software without specific, written prior permission.
* M.I.T. makes no representations about the suitability of * M.I.T. makes no representations about the suitability of
* this software for any purpose. It is provided "as is" * this software for any purpose. It is provided "as is"
* without express or implied warranty. * without express or implied warranty.
@@ -18,7 +20,7 @@
* on behalf of AVIRA Gmbh - http://www.avira.com * on behalf of AVIRA Gmbh - http://www.avira.com
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -0,0 +1,77 @@
.\"
.\" 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_SRV_REPLY 3 "4 August 2009"
.SH NAME
ares_parse_srv_reply \- Parse a reply to a DNS query of type SRV
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B int ares_parse_srv_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP,
.B struct ares_srv_reply** \fIsrv_out\fP, int *\fInsrvreply\fP);
.fi
.SH DESCRIPTION
The
.B ares_parse_srv_reply
function parses the response to a query of type SRV into a
.I struct ares_srv_reply
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 srv_out .
The number of responses is stored into the variable pointed to by
.IR nsrvreply .
It is the caller's responsibility to free the resulting
.IR srv_out
structure when it is no longer needed.
.PP
The structure
.I ares_srv_reply
contains the following fields:
.sp
.in +4n
.nf
struct ares_srv_reply {
unsigned short weight;
unsigned short priority;
unsigned short port;
char *host;
};
.fi
.in
.PP
.SH RETURN VALUES
.B ares_parse_srv_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)
.SH AUTHOR
Written by Jakub Hrozek <jhrozek@redhat.com>, on behalf of Red Hat, Inc http://www.redhat.com

173
ares/ares_parse_srv_reply.c Normal file
View File

@@ -0,0 +1,173 @@
/* Id$ */
/* 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_srv_reply created by Jakub Hrozek <jhrozek@redhat.com>
* on behalf of Red Hat - http://www.redhat.com
*/
#include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#ifdef HAVE_NETDB_H
# include <netdb.h>
#endif
#ifdef HAVE_ARPA_INET_H
# include <arpa/inet.h>
#endif
#ifdef HAVE_ARPA_NAMESER_H
# include <arpa/nameser.h>
#else
# include "nameser.h"
#endif
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
# include <arpa/nameser_compat.h>
#endif
#include <stdlib.h>
#include <string.h>
#include "ares.h"
#include "ares_dns.h"
#include "ares_private.h"
/* AIX portability check */
#ifndef T_SRV
# define T_SRV 33 /* server selection */
#endif
int
ares_parse_srv_reply (const unsigned char *abuf, int alen,
struct ares_srv_reply **srv_out, int *nsrvreply)
{
unsigned int qdcount, ancount;
const unsigned char *aptr;
int status, i, rr_type, rr_class, rr_len;
long len;
char *hostname = NULL, *rr_name = NULL;
struct ares_srv_reply *srv = NULL;
/* Set *srv_out to NULL for all failure cases. */
*srv_out = NULL;
/* Same with *nsrvreply. */
*nsrvreply = 0;
/* 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;
if (ancount == 0)
return ARES_ENODATA;
/* 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 ares_srv_reply array; ancount gives an upper bound */
srv = malloc ((ancount) * sizeof (struct ares_srv_reply));
if (!srv)
{
free (hostname);
return ARES_ENOMEM;
}
/* 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;
/* Check if we are really looking at a SRV record */
if (rr_class == C_IN && rr_type == T_SRV)
{
/* parse the SRV record itself */
if (rr_len < 6)
{
status = ARES_EBADRESP;
break;
}
srv[i].priority = ntohs (*((unsigned short *)aptr));
aptr += sizeof(unsigned short);
srv[i].weight = ntohs (*((unsigned short *)aptr));
aptr += sizeof(unsigned short);
srv[i].port = ntohs (*((unsigned short *)aptr));
aptr += sizeof(unsigned short);
status = ares_expand_name (aptr, abuf, alen, &srv[i].host, &len);
if (status != ARES_SUCCESS)
break;
/* Move on to the next record */
aptr += len;
/* Don't lose memory in the next iteration */
free (rr_name);
rr_name = NULL;
}
}
/* clean up on error */
if (status != ARES_SUCCESS)
{
free (srv);
free (hostname);
free (rr_name);
return status;
}
/* everything looks fine, return the data */
*srv_out = srv;
*nsrvreply = ancount;
free (hostname);
free (rr_name);
return status;
}

View File

@@ -0,0 +1,76 @@
.\"
.\" 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_TXT_REPLY 3 "27 October 2009"
.SH NAME
ares_parse_txt_reply \- Parse a reply to a DNS query of type TXT
.SH SYNOPSIS
.nf
.B #include <ares.h>
.PP
.B int ares_parse_txt_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP,
.B struct ares_txt_reply **\fItxt_out\fP, int *\fIntxtreply\fP);
.fi
.SH DESCRIPTION
The
.B ares_parse_txt_reply
function parses the response to a query of type TXT into a
.I struct ares_txt_reply
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 txt_out .
The number of responses is stored into the variable pointed to by
.IR ntxtreply .
It is the caller's responsibility to free the resulting
.IR txt_out
structure when it is no longer needed.
.PP
The structure
.I ares_txt_reply
contains the following fields:
.sp
.in +4n
.nf
struct ares_txt_reply {
unsigned int length;
unsigned char *txt;
};
.fi
.in
.PP
.SH RETURN VALUES
.B ares_parse_txt_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)
.SH AUTHOR
Written by Jakub Hrozek <jhrozek@redhat.com>, on behalf of Red Hat, Inc http://www.redhat.com

205
ares/ares_parse_txt_reply.c Normal file
View File

@@ -0,0 +1,205 @@
/* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology.
* Copyright (C) 2009 Jakub Hrozek <jhrozek@redhat.com>
* Copyright (C) 2009 Yang Tse <yangsita@gmail.com>
*
* 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 "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#ifdef HAVE_NETDB_H
# include <netdb.h>
#endif
#ifdef HAVE_ARPA_INET_H
# include <arpa/inet.h>
#endif
#ifdef HAVE_ARPA_NAMESER_H
# include <arpa/nameser.h>
#else
# include "nameser.h"
#endif
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
# include <arpa/nameser_compat.h>
#endif
#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif
#include <stdlib.h>
#include <string.h>
#include "ares.h"
#include "ares_dns.h"
#include "ares_private.h"
int
ares_parse_txt_reply (const unsigned char *abuf, int alen,
struct ares_txt_reply **txt_out, int *ntxtreply)
{
size_t substr_len, str_len;
unsigned int qdcount, ancount, i;
const unsigned char *aptr;
const unsigned char *strptr;
int status, rr_type, rr_class, rr_len;
long len;
char *hostname = NULL, *rr_name = NULL;
struct ares_txt_reply *txt = NULL;
/* Set *txt_out to NULL for all failure cases. */
*txt_out = NULL;
/* Same with *ntxtreply. */
*ntxtreply = 0;
/* 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;
if (ancount == 0)
return ARES_ENODATA;
/* 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 ares_txt_reply array; ancount gives an upper bound */
txt = malloc ((ancount) * sizeof (struct ares_txt_reply));
if (!txt)
{
free (hostname);
return ARES_ENOMEM;
}
/* Initialize ares_txt_reply array */
for (i = 0; i < ancount; i++)
{
txt[i].txt = NULL;
txt[i].length = 0;
}
/* Examine each answer resource record (RR) in turn. */
for (i = 0; i < 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;
/* Check if we are really looking at a TXT record */
if (rr_class == C_IN && rr_type == T_TXT)
{
/*
* There may be multiple substrings in a single TXT record. Each
* substring may be up to 255 characters in length, with a
* "length byte" indicating the size of the substring payload.
* RDATA contains both the length-bytes and payloads of all
* substrings contained therein.
*/
/* Compute total length to allow a single memory allocation */
strptr = aptr;
while (strptr < (aptr + rr_len))
{
substr_len = (unsigned char)*strptr;
txt[i].length += substr_len;
strptr += substr_len + 1;
}
/* Including null byte */
txt[i].txt = malloc (txt[i].length + 1);
if (txt[i].txt == NULL)
{
status = ARES_ENOMEM;
break;
}
/* Step through the list of substrings, concatenating them */
str_len = 0;
strptr = aptr;
while (strptr < (aptr + rr_len))
{
substr_len = (unsigned char)*strptr;
strptr++;
memcpy ((char *) txt[i].txt + str_len, strptr, substr_len);
str_len += substr_len;
strptr += substr_len;
}
/* Make sure we NULL-terminate */
txt[i].txt[txt[i].length] = '\0';
/* Move on to the next record */
aptr += rr_len;
}
/* Don't lose memory in the next iteration */
free (rr_name);
rr_name = NULL;
}
if (hostname)
free (hostname);
if (rr_name)
free (rr_name);
/* clean up on error */
if (status != ARES_SUCCESS)
{
for (i = 0; i < ancount; i++)
{
if (txt[i].txt)
free (txt[i].txt);
}
return status;
}
/* everything looks fine, return the data */
*txt_out = txt;
*ntxtreply = ancount;
return ARES_SUCCESS;
}

View File

@@ -312,7 +312,7 @@ void ares__send_query(ares_channel channel, struct query *query,
struct timeval *now); struct timeval *now);
void ares__close_sockets(ares_channel channel, struct server_state *server); void ares__close_sockets(ares_channel channel, struct server_state *server);
int ares__get_hostent(FILE *fp, int family, struct hostent **host); int ares__get_hostent(FILE *fp, int family, struct hostent **host);
int ares__read_line(FILE *fp, char **buf, int *bufsize); int ares__read_line(FILE *fp, char **buf, size_t *bufsize);
void ares__free_query(struct query *query); void ares__free_query(struct query *query);
unsigned short ares__generate_new_id(rc4_key* key); unsigned short ares__generate_new_id(rc4_key* key);
struct timeval ares__tvnow(void); struct timeval ares__tvnow(void);

View File

@@ -16,7 +16,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -50,7 +50,7 @@
* that the dimension of a constant array can not be a negative one. * that the dimension of a constant array can not be a negative one.
* In this way if the compile time verification fails, the compilation * In this way if the compile time verification fails, the compilation
* will fail issuing an error. The error description wording is compiler * will fail issuing an error. The error description wording is compiler
* dependant but it will be quite similar to one of the following: * dependent but it will be quite similar to one of the following:
* *
* "negative subscript or subscript is too large" * "negative subscript or subscript is too large"
* "array must have at least one element" * "array must have at least one element"

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@@ -238,7 +238,8 @@ static int single_domain(ares_channel channel, const char *name, char **s)
const char *hostaliases; const char *hostaliases;
FILE *fp; FILE *fp;
char *line = NULL; char *line = NULL;
int linesize, status; int status;
size_t linesize;
const char *p, *q; const char *p, *q;
int error; int error;

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -1,5 +1,5 @@
#ifndef __ARES_SETUP_H #ifndef HEADER_CARES_SETUP_H
#define __ARES_SETUP_H #define HEADER_CARES_SETUP_H
/* $Id$ */ /* $Id$ */
@@ -78,16 +78,16 @@
#include <ares_rules.h> #include <ares_rules.h>
/* ================================================================ */ /* ================================================================= */
/* No system header file shall be included in this file before this */ /* No system header file shall be included in this file before this */
/* point. The only allowed ones are those included from curlbuild.h */ /* point. The only allowed ones are those included from ares_build.h */
/* ================================================================ */ /* ================================================================= */
/* /*
* Include header files for windows builds before redefining anything. * Include header files for windows builds before redefining anything.
* Use this preproessor block only to include or exclude windows.h, * Use this preproessor block only to include or exclude windows.h,
* winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs * winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs
* to any other further and independant block. Under Cygwin things work * to any other further and independent block. Under Cygwin things work
* just as under linux (e.g. <sys/socket.h>) and the winsock headers should * just as under linux (e.g. <sys/socket.h>) and the winsock headers should
* never be included when __CYGWIN__ is defined. configure script takes * never be included when __CYGWIN__ is defined. configure script takes
* care of this, not defining HAVE_WINDOWS_H, HAVE_WINSOCK_H, HAVE_WINSOCK2_H, * care of this, not defining HAVE_WINDOWS_H, HAVE_WINSOCK_H, HAVE_WINSOCK2_H,
@@ -133,12 +133,6 @@
#ifndef HAVE_CONFIG_H #ifndef HAVE_CONFIG_H
#if defined(__DJGPP__) || (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \
defined(__POCC__)
#else
#define ssize_t int
#endif
#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__) #if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__)
#define HAVE_SYS_TIME_H #define HAVE_SYS_TIME_H
#endif #endif
@@ -153,6 +147,12 @@
#endif /* HAVE_CONFIG_H */ #endif /* HAVE_CONFIG_H */
#ifdef __POCC__
# include <sys/types.h>
# include <unistd.h>
# define ESRCH 3
#endif
/* /*
* Recent autoconf versions define these symbols in ares_config.h. We don't * Recent autoconf versions define these symbols in ares_config.h. We don't
* want them (since they collide with the libcurl ones when we build * want them (since they collide with the libcurl ones when we build
@@ -184,4 +184,4 @@
#include "setup_once.h" #include "setup_once.h"
#endif #endif
#endif /* __ARES_SETUP_H */ #endif /* HEADER_CARES_SETUP_H */

View File

@@ -16,7 +16,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include "ares_strcasecmp.h" #include "ares_strcasecmp.h"
#ifndef HAVE_STRCASECMP #ifndef HAVE_STRCASECMP

View File

@@ -18,7 +18,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifndef HAVE_STRCASECMP #ifndef HAVE_STRCASECMP
extern int ares_strcasecmp(const char *a, const char *b); extern int ares_strcasecmp(const char *a, const char *b);

View File

@@ -16,7 +16,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include "ares_strdup.h" #include "ares_strdup.h"
#ifndef HAVE_STRDUP #ifndef HAVE_STRDUP

View File

@@ -18,7 +18,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifndef HAVE_STRDUP #ifndef HAVE_STRDUP
extern char *ares_strdup(const char *s1); extern char *ares_strdup(const char *s1);

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include <assert.h> #include <assert.h>
#include "ares.h" #include "ares.h"
@@ -46,7 +46,8 @@ const char *ares_strerror(int code)
"Illegal hints flags specified", "Illegal hints flags specified",
"c-ares library initialization not yet performed", "c-ares library initialization not yet performed",
"Error loading iphlpapi.dll", "Error loading iphlpapi.dll",
"Could not find GetNetworkParams function" "Could not find GetNetworkParams function",
"DNS query cancelled"
}; };
if(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext))) if(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext)))

View File

@@ -15,7 +15,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_TIME_H #ifdef HAVE_SYS_TIME_H
#include <sys/time.h> #include <sys/time.h>

View File

@@ -1,6 +1,6 @@
/* $Id$ */ /* $Id$ */
#include "setup.h" #include "ares_setup.h"
#include "ares.h" #include "ares.h"
const char *ares_version(int *version) const char *ares_version(int *version)

View File

@@ -16,7 +16,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_LIMITS_H #ifdef HAVE_LIMITS_H
# include <limits.h> # include <limits.h>

View File

@@ -18,7 +18,7 @@
* without express or implied warranty. * without express or implied warranty.
*/ */
#include "setup.h" #include "ares_setup.h"
#include "ares.h" #include "ares.h"
#ifndef HAVE_WRITEV #ifndef HAVE_WRITEV

View File

@@ -19,7 +19,7 @@
#ifndef HAVE_BITNCMP #ifndef HAVE_BITNCMP
#include "setup.h" #include "ares_setup.h"
#include "bitncmp.h" #include "bitncmp.h"
/* /*
@@ -41,7 +41,7 @@ ares_bitncmp(const void *l, const void *r, int n) {
b = n / 8; b = n / 8;
x = memcmp(l, r, b); x = memcmp(l, r, b);
if (x) if (x || (n % 8) == 0)
return (x); return (x);
lb = ((const unsigned char *)l)[b]; lb = ((const unsigned char *)l)[b];

59
ares/cares.rc Normal file
View File

@@ -0,0 +1,59 @@
/* $Id$ */
/* Copyright (C) 2009 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.
*/
#include <winver.h>
#include "ares_version.h"
LANGUAGE 0x09,0x01
#define RC_VERSION ARES_VERSION_MAJOR, ARES_VERSION_MINOR, ARES_VERSION_PATCH, 0
VS_VERSION_INFO VERSIONINFO
FILEVERSION RC_VERSION
PRODUCTVERSION RC_VERSION
FILEFLAGSMASK 0x3fL
#if defined(DEBUGBUILD) || defined(_DEBUG)
FILEFLAGS 1
#else
FILEFLAGS 0
#endif
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "The c-ares library, http://c-ares.haxx.se/\0"
VALUE "FileDescription", "c-ares Shared Library\0"
VALUE "FileVersion", ARES_VERSION_STR "\0"
VALUE "InternalName", "c-ares\0"
VALUE "OriginalFilename", "cares.dll\0"
VALUE "ProductName", "The c-ares library\0"
VALUE "ProductVersion", ARES_VERSION_STR "\0"
VALUE "LegalCopyright", "<22> 2004 - 2009 Daniel Stenberg, <daniel@haxx.se>.\0"
VALUE "License", "http://c-ares.haxx.se/license.html\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END

View File

@@ -25,13 +25,18 @@
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
/* Define if you have the <getopt.h> header file. */ /* Define if you have the <getopt.h> header file. */
#if defined(__MINGW32__) #if defined(__MINGW32__) || defined(__POCC__)
#define HAVE_GETOPT_H 1 #define HAVE_GETOPT_H 1
#endif #endif
/* Define if you have the <limits.h> header file. */ /* Define if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1 #define HAVE_LIMITS_H 1
/* Define if you have the <process.h> header file. */
#ifndef __SALFORDC__
#define HAVE_PROCESS_H 1
#endif
/* Define if you have the <signal.h> header file. */ /* Define if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1 #define HAVE_SIGNAL_H 1
@@ -41,9 +46,6 @@
/* Define if you have the <time.h> header file. */ /* Define if you have the <time.h> header file. */
#define HAVE_TIME_H 1 #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. */ /* Define if you have the <unistd.h> header file. */
#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \ #if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \
defined(__POCC__) defined(__POCC__)
@@ -57,10 +59,14 @@
#define HAVE_WINSOCK_H 1 #define HAVE_WINSOCK_H 1
/* Define if you have the <winsock2.h> header file. */ /* Define if you have the <winsock2.h> header file. */
#ifndef __SALFORDC__
#define HAVE_WINSOCK2_H 1 #define HAVE_WINSOCK2_H 1
#endif
/* Define if you have the <ws2tcpip.h> header file. */ /* Define if you have the <ws2tcpip.h> header file. */
#ifndef __SALFORDC__
#define HAVE_WS2TCPIP_H 1 #define HAVE_WS2TCPIP_H 1
#endif
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
/* OTHER HEADER INFO */ /* OTHER HEADER INFO */
@@ -79,6 +85,9 @@
/* FUNCTIONS */ /* FUNCTIONS */
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
/* Define if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1
/* Define if you have the ioctlsocket function. */ /* Define if you have the ioctlsocket function. */
#define HAVE_IOCTLSOCKET 1 #define HAVE_IOCTLSOCKET 1
@@ -100,9 +109,6 @@
/* Define if you have the strnicmp function. */ /* Define if you have the strnicmp function. */
#define HAVE_STRNICMP 1 #define HAVE_STRNICMP 1
/* Define if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1
/* Define if you have the recv function. */ /* Define if you have the recv function. */
#define HAVE_RECV 1 #define HAVE_RECV 1
@@ -196,11 +202,17 @@
#define RETSIGTYPE void #define RETSIGTYPE void
/* Define ssize_t if it is not an available 'typedefed' type */ /* Define ssize_t if it is not an available 'typedefed' type */
#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__) #ifndef _SSIZE_T_DEFINED
#elif defined(_WIN64) # if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \
#define ssize_t __int64 defined(__POCC__) || \
#else defined(__MINGW32__)
#define ssize_t int # elif defined(_WIN64)
# define _SSIZE_T_DEFINED
# define ssize_t __int64
# else
# define _SSIZE_T_DEFINED
# define ssize_t int
# endif
#endif #endif
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
@@ -211,7 +223,9 @@
#define HAVE_STRUCT_ADDRINFO 1 #define HAVE_STRUCT_ADDRINFO 1
/* Define this if you have struct sockaddr_storage */ /* Define this if you have struct sockaddr_storage */
#ifndef __SALFORDC__
#define HAVE_STRUCT_SOCKADDR_STORAGE 1 #define HAVE_STRUCT_SOCKADDR_STORAGE 1
#endif
/* Define this if you have struct timeval */ /* Define this if you have struct timeval */
#define HAVE_STRUCT_TIMEVAL 1 #define HAVE_STRUCT_TIMEVAL 1
@@ -256,10 +270,25 @@
# endif # endif
#endif #endif
/* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is quite */ /* When no build target is specified Pelles C 5.00 and later default build
/* convoluted, compiler dependant and in some cases even build target dependat. */ target is Windows Vista. We override default target to be Windows 2000. */
#if defined(__POCC__) && (__POCC__ >= 500)
# ifndef _WIN32_WINNT
# define _WIN32_WINNT 0x0500
# endif
# ifndef WINVER
# define WINVER 0x0500
# endif
#endif
/* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is
quite convoluted, compiler dependent and even build target dependent. */
#if defined(HAVE_WS2TCPIP_H) #if defined(HAVE_WS2TCPIP_H)
# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) # if defined(__POCC__)
# define HAVE_FREEADDRINFO 1
# define HAVE_GETADDRINFO 1
# define HAVE_GETNAMEINFO 1
# elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501)
# define HAVE_FREEADDRINFO 1 # define HAVE_FREEADDRINFO 1
# define HAVE_GETADDRINFO 1 # define HAVE_GETADDRINFO 1
# define HAVE_GETNAMEINFO 1 # define HAVE_GETNAMEINFO 1
@@ -270,6 +299,15 @@
# endif # endif
#endif #endif
#if defined(__POCC__)
# ifndef _MSC_VER
# error Microsoft extensions /Ze compiler option is required
# endif
# ifndef __POCC__OLDNAMES
# error Compatibility names /Go compiler option is required
# endif
#endif
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
/* IPV6 COMPATIBILITY */ /* IPV6 COMPATIBILITY */
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */

View File

@@ -14,8 +14,9 @@ CARES_CHECK_OPTION_DEBUG
CARES_CHECK_OPTION_OPTIMIZE CARES_CHECK_OPTION_OPTIMIZE
CARES_CHECK_OPTION_WARNINGS CARES_CHECK_OPTION_WARNINGS
CARES_CHECK_OPTION_CURLDEBUG CARES_CHECK_OPTION_CURLDEBUG
CARES_CHECK_OPTION_SYMBOL_HIDING
CARES_CHECK_PATH_SEPARATOR CARES_CHECK_PATH_SEPARATOR_REQUIRED
dnl SED is mandatory for configure process and libtool. dnl SED is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later. dnl Set it now, allowing it to be changed later.
@@ -51,7 +52,7 @@ fi
AC_SUBST([EGREP]) AC_SUBST([EGREP])
dnl AR is mandatory for configure process and libtool. dnl AR is mandatory for configure process and libtool.
dnl This is target dependant, so check it as a tool. dnl This is target dependent, so check it as a tool.
AC_PATH_TOOL([AR], [ar], [not_found], AC_PATH_TOOL([AR], [ar], [not_found],
[$PATH:/usr/bin:/usr/local/bin]) [$PATH:/usr/bin:/usr/local/bin])
if test -z "$AR" || test "$AR" = "not_found"; then if test -z "$AR" || test "$AR" = "not_found"; then
@@ -110,6 +111,25 @@ esac
dnl libtool setup dnl libtool setup
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
AC_MSG_CHECKING([if we need CARES_BUILDING_LIBRARY])
case $host in
*-*-mingw*)
AC_DEFINE(CARES_BUILDING_LIBRARY, 1, [when building c-ares library])
AC_MSG_RESULT(yes)
AC_MSG_CHECKING([if we need CARES_STATICLIB])
if test "X$enable_shared" = "Xno"
then
AC_DEFINE(CARES_STATICLIB, 1, [when not building a shared library])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
;;
*)
AC_MSG_RESULT(no)
;;
esac
dnl ********************************************************************** dnl **********************************************************************
dnl platform/compiler/architecture specific checks/flags dnl platform/compiler/architecture specific checks/flags
dnl ********************************************************************** dnl **********************************************************************
@@ -144,6 +164,7 @@ esac
CARES_CHECK_COMPILER_HALT_ON_ERROR CARES_CHECK_COMPILER_HALT_ON_ERROR
CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
CARES_CHECK_COMPILER_SYMBOL_HIDING
CARES_CHECK_NO_UNDEFINED CARES_CHECK_NO_UNDEFINED
AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes) AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
@@ -876,6 +897,8 @@ fi
CARES_CHECK_OPTION_NONBLOCKING CARES_CHECK_OPTION_NONBLOCKING
CARES_CHECK_NONBLOCKING_SOCKET CARES_CHECK_NONBLOCKING_SOCKET
CARES_CONFIGURE_SYMBOL_HIDING
CARES_PRIVATE_LIBS="$LIBS" CARES_PRIVATE_LIBS="$LIBS"
AC_SUBST(CARES_PRIVATE_LIBS) AC_SUBST(CARES_PRIVATE_LIBS)

View File

@@ -17,7 +17,7 @@
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>
@@ -81,7 +81,7 @@ inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
if (ch == '0' && (src[0] == 'x' || src[0] == 'X') if (ch == '0' && (src[0] == 'x' || src[0] == 'X')
&& ISXDIGIT(src[1])) { && ISXDIGIT(src[1])) {
/* Hexadecimal: Eat nybble string. */ /* Hexadecimal: Eat nybble string. */
if (size <= 0U) if (!size)
goto emsgsize; goto emsgsize;
dirty = 0; dirty = 0;
src++; /* skip x or X. */ src++; /* skip x or X. */
@@ -94,14 +94,14 @@ inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
else else
tmp = (tmp << 4) | n; tmp = (tmp << 4) | n;
if (++dirty == 2) { if (++dirty == 2) {
if (size-- <= 0U) if (!size--)
goto emsgsize; goto emsgsize;
*dst++ = (unsigned char) tmp; *dst++ = (unsigned char) tmp;
dirty = 0; dirty = 0;
} }
} }
if (dirty) { /* Odd trailing nybble? */ if (dirty) { /* Odd trailing nybble? */
if (size-- <= 0U) if (!size--)
goto emsgsize; goto emsgsize;
*dst++ = (unsigned char) (tmp << 4); *dst++ = (unsigned char) (tmp << 4);
} }
@@ -117,7 +117,7 @@ inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
goto enoent; goto enoent;
} while ((ch = *src++) != '\0' && } while ((ch = *src++) != '\0' &&
ISDIGIT(ch)); ISDIGIT(ch));
if (size-- <= 0U) if (!size--)
goto emsgsize; goto emsgsize;
*dst++ = (unsigned char) tmp; *dst++ = (unsigned char) tmp;
if (ch == '\0' || ch == '/') if (ch == '\0' || ch == '/')
@@ -179,7 +179,7 @@ inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
} }
/* Extend network to cover the actual mask. */ /* Extend network to cover the actual mask. */
while (bits > ((dst - odst) * 8)) { while (bits > ((dst - odst) * 8)) {
if (size-- <= 0U) if (!size--)
goto emsgsize; goto emsgsize;
*dst++ = '\0'; *dst++ = '\0';
} }
@@ -426,7 +426,8 @@ ares_inet_net_pton(int af, const char *src, void *dst, size_t size)
#ifndef HAVE_INET_PTON #ifndef HAVE_INET_PTON
int ares_inet_pton(int af, const char *src, void *dst) int ares_inet_pton(int af, const char *src, void *dst)
{ {
int size, result; int result;
size_t size;
if (af == AF_INET) if (af == AF_INET)
size = sizeof(struct in_addr); size = sizeof(struct in_addr);

View File

@@ -16,7 +16,7 @@
* SOFTWARE. * SOFTWARE.
*/ */
#include "setup.h" #include "ares_setup.h"
#ifdef HAVE_SYS_SOCKET_H #ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> # include <sys/socket.h>

View File

@@ -16,7 +16,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 56 # serial 61
dnl CARES_CHECK_COMPILER dnl CARES_CHECK_COMPILER
@@ -1150,8 +1150,7 @@ AC_DEFUN([CARES_CHECK_CURLDEBUG], [
if test "$want_curldebug" = "yes"; then if test "$want_curldebug" = "yes"; then
dnl TODO: Verify if the BUILDING_LIBCURL definition is still required. dnl TODO: Verify if the BUILDING_LIBCURL definition is still required.
AC_DEFINE(BUILDING_LIBCURL, 1, [when building as static part of libcurl]) AC_DEFINE(BUILDING_LIBCURL, 1, [when building as static part of libcurl])
# CPPFLAGS="$CPPFLAGS -DCURLDEBUG" CPPFLAGS="$CPPFLAGS -DCURLDEBUG"
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I../lib"
squeeze CPPFLAGS squeeze CPPFLAGS
fi fi
# #
@@ -1311,6 +1310,91 @@ AC_DEFUN([CARES_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [
]) ])
dnl CARES_CHECK_COMPILER_SYMBOL_HIDING
dnl -------------------------------------------------
dnl Verify if compiler supports hiding library internal symbols, setting
dnl shell variable supports_symbol_hiding value as appropriate, as well as
dnl variables symbol_hiding_CFLAGS and symbol_hiding_EXTERN when supported.
AC_DEFUN([CARES_CHECK_COMPILER_SYMBOL_HIDING], [
AC_REQUIRE([CARES_CHECK_COMPILER])dnl
AC_BEFORE([$0],[CARES_CONFIGURE_SYMBOL_HIDING])dnl
AC_MSG_CHECKING([if compiler supports hiding library internal symbols])
supports_symbol_hiding="no"
symbol_hiding_CFLAGS=""
symbol_hiding_EXTERN=""
tmp_CFLAGS=""
tmp_EXTERN=""
case "$compiler_id" in
GNU_C)
dnl Only gcc 3.4 or later
if test "$compiler_num" -ge "304"; then
if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
tmp_EXTERN="__attribute__ ((visibility (\"default\")))"
tmp_CFLAGS="-fvisibility=hidden"
supports_symbol_hiding="yes"
fi
fi
;;
INTEL_UNIX_C)
dnl Only icc 9.0 or later
if test "$compiler_num" -ge "900"; then
if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
tmp_EXTERN="__attribute__ ((visibility (\"default\")))"
tmp_CFLAGS="-fvisibility=hidden"
supports_symbol_hiding="yes"
fi
fi
;;
SUNPRO_C)
if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then
tmp_EXTERN="__global"
tmp_CFLAGS="-xldscope=hidden"
supports_symbol_hiding="yes"
fi
;;
esac
if test "$supports_symbol_hiding" = "yes"; then
tmp_save_CFLAGS="$CFLAGS"
CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS"
squeeze CFLAGS
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$tmp_EXTERN char *dummy(char *buff);
char *dummy(char *buff)
{
if(buff)
return ++buff;
else
return buff;
}
]],[[
char b[16];
char *r = dummy(&b);
if(r)
return (int)*r;
]])
],[
supports_symbol_hiding="yes"
],[
supports_symbol_hiding="no"
echo " " >&6
sed 's/^/cc-src: /' conftest.$ac_ext >&6
sed 's/^/cc-err: /' conftest.err >&6
echo " " >&6
])
CFLAGS="$tmp_save_CFLAGS"
fi
if test "$supports_symbol_hiding" = "yes"; then
AC_MSG_RESULT([yes])
symbol_hiding_CFLAGS="$tmp_CFLAGS"
symbol_hiding_EXTERN="$tmp_EXTERN"
else
AC_MSG_RESULT([no])
fi
])
dnl CARES_VAR_MATCH (VARNAME, VALUE) dnl CARES_VAR_MATCH (VARNAME, VALUE)
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl Verifies if shell variable VARNAME contains VALUE. dnl Verifies if shell variable VARNAME contains VALUE.

View File

@@ -16,7 +16,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 5 # serial 8
dnl CARES_CHECK_OPTION_CURLDEBUG dnl CARES_CHECK_OPTION_CURLDEBUG
@@ -180,6 +180,46 @@ AC_HELP_STRING([--disable-optimize],[Disable compiler optimizations]),
]) ])
dnl CARES_CHECK_OPTION_SYMBOL_HIDING
dnl -------------------------------------------------
dnl Verify if configure has been invoked with option
dnl --enable-symbol-hiding or --disable-symbol-hiding,
dnl setting shell variable want_symbol_hiding value.
AC_DEFUN([CARES_CHECK_OPTION_SYMBOL_HIDING], [
AC_BEFORE([$0],[CARES_CHECK_COMPILER_SYMBOL_HIDING])dnl
AC_MSG_CHECKING([whether to enable hiding of library internal symbols])
OPT_SYMBOL_HIDING="default"
AC_ARG_ENABLE(symbol-hiding,
AC_HELP_STRING([--enable-symbol-hiding],[Enable hiding of library internal symbols])
AC_HELP_STRING([--disable-symbol-hiding],[Disable hiding of library internal symbols]),
OPT_SYMBOL_HIDING=$enableval)
case "$OPT_SYMBOL_HIDING" in
no)
dnl --disable-symbol-hiding option used.
dnl This is an indication to not attempt hiding of library internal
dnl symbols. Default symbol visibility will be used, which normally
dnl exposes all library internal symbols.
want_symbol_hiding="no"
AC_MSG_RESULT([no])
;;
default)
dnl configure's symbol-hiding option not specified.
dnl Handle this as if --enable-symbol-hiding option was given.
want_symbol_hiding="yes"
AC_MSG_RESULT([yes])
;;
*)
dnl --enable-symbol-hiding option used.
dnl This is an indication to attempt hiding of library internal
dnl symbols. This is only supported on some compilers/linkers.
want_symbol_hiding="yes"
AC_MSG_RESULT([yes])
;;
esac
])
dnl CARES_CHECK_OPTION_WARNINGS dnl CARES_CHECK_OPTION_WARNINGS
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl Verify if configure has been invoked with option dnl Verify if configure has been invoked with option
@@ -252,3 +292,29 @@ AC_DEFUN([CARES_CHECK_NONBLOCKING_SOCKET], [
fi fi
]) ])
dnl CARES_CONFIGURE_SYMBOL_HIDING
dnl -------------------------------------------------
dnl Depending on --enable-symbol-hiding or --disable-symbol-hiding
dnl configure option, and compiler capability to actually honor such
dnl option, this will modify compiler flags as appropriate and also
dnl provide needed definitions for configuration file.
dnl This macro should not be used until all compilation tests have
dnl been done to prevent interferences on other tests.
AC_DEFUN([CARES_CONFIGURE_SYMBOL_HIDING], [
AC_MSG_CHECKING([whether hiding of library internal symbols will actually happen])
if test x"$ac_cv_native_windows" != "xyes" &&
test "$want_symbol_hiding" = "yes" &&
test "$supports_symbol_hiding" = "yes"; then
CFLAGS="$CFLAGS $symbol_hiding_CFLAGS"
AC_DEFINE_UNQUOTED(CARES_SYMBOL_HIDING, 1,
[Define to 1 to enable hiding of library internal symbols.])
AC_DEFINE_UNQUOTED(CARES_SYMBOL_SCOPE_EXTERN, $symbol_hiding_EXTERN,
[Definition to make a library symbol externally visible.])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
])

View File

@@ -3,7 +3,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 2 # serial 3
dnl CARES_OVERRIDE_AUTOCONF dnl CARES_OVERRIDE_AUTOCONF
dnl ------------------------------------------------- dnl -------------------------------------------------
@@ -92,12 +92,11 @@ dnl used across different Autoconf versions and to
dnl allow us to use this macro early enough in the dnl allow us to use this macro early enough in the
dnl configure script. dnl configure script.
m4_define([_AS_PATH_SEPARATOR_PREPARE], m4_defun([_AS_PATH_SEPARATOR_PREPARE],
[CARES_CHECK_PATH_SEPARATOR [CARES_CHECK_PATH_SEPARATOR
m4_define([$0],[])]) m4_define([$0],[])])
m4_define([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], m4_defun([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
[CARES_CHECK_PATH_SEPARATOR [CARES_CHECK_PATH_SEPARATOR
m4_define([$0],[])]) m4_define([$0],[])])

View File

@@ -1,7 +1,7 @@
#*************************************************************************** #***************************************************************************
# $Id$ # $Id$
# #
# Copyright (C) 2008 by Daniel Stenberg et al # Copyright (C) 2008 - 2009 by Daniel Stenberg et al
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided # documentation for any purpose and without fee is hereby granted, provided
@@ -16,7 +16,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 3 # serial 4
dnl Note 1 dnl Note 1
dnl ------ dnl ------
@@ -25,6 +25,58 @@ dnl conditionally include header files. These macros are used early in the
dnl configure process much before header file availability is known. dnl configure process much before header file availability is known.
dnl CARES_CHECK_NEED_REENTRANT_ERRNO
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes errno available as a preprocessor macro.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_ERRNO], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <errno.h>
]],[[
if(0 != errno)
return 1;
]])
],[
tmp_errno="yes"
],[
tmp_errno="no"
])
if test "$tmp_errno" = "yes"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <errno.h>
]],[[
#ifdef errno
int dummy=1;
#else
force compilation error
#endif
]])
],[
tmp_errno="errno_macro_defined"
],[
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <errno.h>
]],[[
#ifdef errno
int dummy=1;
#else
force compilation error
#endif
]])
],[
tmp_errno="errno_macro_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_GMTIME_R dnl CARES_CHECK_NEED_REENTRANT_GMTIME_R
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition dnl Checks if the preprocessor _REENTRANT definition
@@ -437,6 +489,9 @@ AC_DEFUN([CARES_CONFIGURE_REENTRANT], [
if test "$tmp_reentrant_initially_defined" = "no"; then if test "$tmp_reentrant_initially_defined" = "no"; then
AC_MSG_CHECKING([if _REENTRANT is actually needed]) AC_MSG_CHECKING([if _REENTRANT is actually needed])
CARES_CHECK_NEED_REENTRANT_SYSTEM CARES_CHECK_NEED_REENTRANT_SYSTEM
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_ERRNO
fi
if test "$tmp_need_reentrant" = "no"; then if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R
fi fi

View File

@@ -1,7 +1,7 @@
#*************************************************************************** #***************************************************************************
# $Id$ # $Id$
# #
# Copyright (C) 2008 by Daniel Stenberg et al # Copyright (C) 2008 - 2009 by Daniel Stenberg et al
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided # documentation for any purpose and without fee is hereby granted, provided
@@ -16,7 +16,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 2 # serial 3
dnl CARES_CHECK_PATH_SEPARATOR dnl CARES_CHECK_PATH_SEPARATOR
@@ -72,3 +72,12 @@ AC_DEFUN([CARES_CHECK_PATH_SEPARATOR], [
]) ])
dnl CARES_CHECK_PATH_SEPARATOR_REQUIRED
dnl -------------------------------------------------
dnl Use this to ensure that the path separator check
dnl macro is only expanded and included once.
AC_DEFUN([CARES_CHECK_PATH_SEPARATOR_REQUIRED], [
AC_REQUIRE([CARES_CHECK_PATH_SEPARATOR])dnl
])

View File

@@ -1,2 +1,4 @@
vc.ncb vc.ncb
vc.opt vc.opt
vc6aws.ncb
vc6aws.opt

View File

@@ -1,5 +1,10 @@
DLL-*
Debug Debug
LIB-*
Release Release
acountry.dep acountry.dep
acountry.mak acountry.mak
acountry.plg acountry.plg
vc6acountry.dep
vc6acountry.mak
vc6acountry.plg

View File

@@ -1,110 +0,0 @@
# Microsoft Developer Studio Project File - Name="acountry" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=acountry - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "acountry.mak".
!MESSAGE
!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 "acountry.mak" CFG="acountry - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "acountry - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "acountry - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "acountry - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /machine:I386 /libpath:"..\areslib\Release"
# ADD LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /machine:I386 /libpath:"..\areslib\Release"
!ELSEIF "$(CFG)" == "acountry - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\areslib\Debug"
# ADD LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\areslib\Debug"
!ENDIF
# Begin Target
# Name "acountry - Win32 Release"
# Name "acountry - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\acountry.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_getopt.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=..\..\ares_getopt.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@@ -0,0 +1,170 @@
# Microsoft Developer Studio Project File - Name="acountry" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=acountry - Win32 using cares LIB Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "vc6acountry.mak".
!MESSAGE
!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 "vc6acountry.mak" CFG="acountry - Win32 using cares LIB Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "acountry - Win32 using cares DLL Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "acountry - Win32 using cares DLL Release" (based on "Win32 (x86) Console Application")
!MESSAGE "acountry - Win32 using cares LIB Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "acountry - Win32 using cares LIB Release" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "acountry - Win32 using cares DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "DLL-Debug"
# PROP BASE Intermediate_Dir "DLL-Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "DLL-Debug"
# PROP Intermediate_Dir "DLL-Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
!ELSEIF "$(CFG)" == "acountry - Win32 using cares DLL Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DLL-Release"
# PROP BASE Intermediate_Dir "DLL-Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "DLL-Release"
# PROP Intermediate_Dir "DLL-Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/acountry.exe" /libpath:"..\cares\DLL-Release"
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/acountry.exe" /libpath:"..\cares\DLL-Release"
!ELSEIF "$(CFG)" == "acountry - Win32 using cares LIB Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "LIB-Debug"
# PROP BASE Intermediate_Dir "LIB-Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "LIB-Debug"
# PROP Intermediate_Dir "LIB-Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
!ELSEIF "$(CFG)" == "acountry - Win32 using cares LIB Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "LIB-Release"
# PROP BASE Intermediate_Dir "LIB-Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "LIB-Release"
# PROP Intermediate_Dir "LIB-Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/acountry.exe" /libpath:"..\cares\LIB-Release"
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/acountry.exe" /libpath:"..\cares\LIB-Release"
!ENDIF
# Begin Target
# Name "acountry - Win32 using cares DLL Debug"
# Name "acountry - Win32 using cares DLL Release"
# Name "acountry - Win32 using cares LIB Debug"
# Name "acountry - Win32 using cares LIB Release"
# Begin Group "Source Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\acountry.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_getopt.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_strcasecmp.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
# End Group
# Begin Group "Header Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\ares_getopt.h
# End Source File
# End Group
# End Target
# End Project

View File

@@ -1,3 +1,8 @@
DLL-*
LIB-*
adig.dep adig.dep
adig.mak adig.mak
adig.plg adig.plg
vc6adig.dep
vc6adig.mak
vc6adig.plg

View File

@@ -1,110 +0,0 @@
# Microsoft Developer Studio Project File - Name="adig" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=adig - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "adig.mak".
!MESSAGE
!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
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "adig - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /machine:I386 /libpath:"..\areslib\Release"
# ADD LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /machine:I386 /libpath:"..\areslib\Release"
!ELSEIF "$(CFG)" == "adig - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\areslib\Debug"
# ADD LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\areslib\Debug"
!ENDIF
# Begin Target
# Name "adig - Win32 Release"
# Name "adig - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\adig.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_getopt.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=..\..\ares_getopt.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

170
ares/vc/adig/vc6adig.dsp Normal file
View File

@@ -0,0 +1,170 @@
# Microsoft Developer Studio Project File - Name="adig" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=adig - Win32 using cares LIB Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "vc6adig.mak".
!MESSAGE
!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 "vc6adig.mak" CFG="adig - Win32 using cares LIB Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "adig - Win32 using cares DLL Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "adig - Win32 using cares DLL Release" (based on "Win32 (x86) Console Application")
!MESSAGE "adig - Win32 using cares LIB Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "adig - Win32 using cares LIB Release" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "adig - Win32 using cares DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "DLL-Debug"
# PROP BASE Intermediate_Dir "DLL-Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "DLL-Debug"
# PROP Intermediate_Dir "DLL-Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
!ELSEIF "$(CFG)" == "adig - Win32 using cares DLL Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DLL-Release"
# PROP BASE Intermediate_Dir "DLL-Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "DLL-Release"
# PROP Intermediate_Dir "DLL-Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/adig.exe" /libpath:"..\cares\DLL-Release"
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/adig.exe" /libpath:"..\cares\DLL-Release"
!ELSEIF "$(CFG)" == "adig - Win32 using cares LIB Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "LIB-Debug"
# PROP BASE Intermediate_Dir "LIB-Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "LIB-Debug"
# PROP Intermediate_Dir "LIB-Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
!ELSEIF "$(CFG)" == "adig - Win32 using cares LIB Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "LIB-Release"
# PROP BASE Intermediate_Dir "LIB-Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "LIB-Release"
# PROP Intermediate_Dir "LIB-Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/adig.exe" /libpath:"..\cares\LIB-Release"
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/adig.exe" /libpath:"..\cares\LIB-Release"
!ENDIF
# Begin Target
# Name "adig - Win32 using cares DLL Debug"
# Name "adig - Win32 using cares DLL Release"
# Name "adig - Win32 using cares LIB Debug"
# Name "adig - Win32 using cares LIB Release"
# Begin Group "Source Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\adig.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_getopt.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_strcasecmp.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
# End Group
# Begin Group "Header Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\ares_getopt.h
# End Source File
# End Group
# End Target
# End Project

View File

@@ -1,3 +1,8 @@
DLL-*
LIB-*
ahost.dep ahost.dep
ahost.mak ahost.mak
ahost.plg ahost.plg
vc6ahost.dep
vc6ahost.mak
vc6ahost.plg

View File

@@ -1,110 +0,0 @@
# Microsoft Developer Studio Project File - Name="ahost" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=ahost - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "ahost.mak".
!MESSAGE
!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
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "ahost - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /machine:I386 /libpath:"..\areslib\Release"
# ADD LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /machine:I386 /libpath:"..\areslib\Release"
!ELSEIF "$(CFG)" == "ahost - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\areslib\Debug"
# ADD LINK32 ws2_32.lib advapi32.lib areslib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\areslib\Debug"
!ENDIF
# Begin Target
# Name "ahost - Win32 Release"
# Name "ahost - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\ahost.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_getopt.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=..\..\ares_getopt.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

170
ares/vc/ahost/vc6ahost.dsp Normal file
View File

@@ -0,0 +1,170 @@
# Microsoft Developer Studio Project File - Name="ahost" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=ahost - Win32 using cares LIB Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "vc6ahost.mak".
!MESSAGE
!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 "vc6ahost.mak" CFG="ahost - Win32 using cares LIB Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "ahost - Win32 using cares DLL Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "ahost - Win32 using cares DLL Release" (based on "Win32 (x86) Console Application")
!MESSAGE "ahost - Win32 using cares LIB Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "ahost - Win32 using cares LIB Release" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "ahost - Win32 using cares DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "DLL-Debug"
# PROP BASE Intermediate_Dir "DLL-Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "DLL-Debug"
# PROP Intermediate_Dir "DLL-Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
!ELSEIF "$(CFG)" == "ahost - Win32 using cares DLL Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DLL-Release"
# PROP BASE Intermediate_Dir "DLL-Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "DLL-Release"
# PROP Intermediate_Dir "DLL-Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/ahost.exe" /libpath:"..\cares\DLL-Release"
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/ahost.exe" /libpath:"..\cares\DLL-Release"
!ELSEIF "$(CFG)" == "ahost - Win32 using cares LIB Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "LIB-Debug"
# PROP BASE Intermediate_Dir "LIB-Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "LIB-Debug"
# PROP Intermediate_Dir "LIB-Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
!ELSEIF "$(CFG)" == "ahost - Win32 using cares LIB Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "LIB-Release"
# PROP BASE Intermediate_Dir "LIB-Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "LIB-Release"
# PROP Intermediate_Dir "LIB-Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/ahost.exe" /libpath:"..\cares\LIB-Release"
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/ahost.exe" /libpath:"..\cares\LIB-Release"
!ENDIF
# Begin Target
# Name "ahost - Win32 using cares DLL Debug"
# Name "ahost - Win32 using cares DLL Release"
# Name "ahost - Win32 using cares LIB Debug"
# Name "ahost - Win32 using cares LIB Release"
# Begin Group "Source Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\ahost.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_getopt.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_strcasecmp.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
# End Group
# Begin Group "Header Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\ares_getopt.h
# End Source File
# End Group
# End Target
# End Project

View File

@@ -1,3 +0,0 @@
areslib.dep
areslib.mak
areslib.plg

View File

@@ -1,288 +0,0 @@
# Microsoft Developer Studio Project File - Name="areslib" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=areslib - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "areslib.mak".
!MESSAGE
!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
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "areslib - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "areslib - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ENDIF
# Begin Target
# Name "areslib - Win32 Release"
# Name "areslib - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\ares__close_sockets.c
# End Source File
# Begin Source File
SOURCE=..\..\ares__get_hostent.c
# End Source File
# Begin Source File
SOURCE=..\..\ares__read_line.c
# End Source File
# Begin Source File
SOURCE=..\..\ares__timeval.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
SOURCE=..\..\ares_expand_name.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_expand_string.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_fds.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_free_hostent.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_free_string.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_gethostbyaddr.c
# End Source File
# Begin Source File
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
SOURCE=..\..\ares_library_init.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_llist.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_mkquery.c
# End Source File
# Begin Source File
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
SOURCE=..\..\ares_process.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_query.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_search.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_send.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_strcasecmp.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_strerror.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_timeout.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_version.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_writev.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
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=..\..\ares.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_build.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_dns.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_ipv6.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_library_init.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_llist.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_private.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_rules.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_strcasecmp.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_version.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_writev.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
# End Target
# End Project

7
ares/vc/cares/.cvsignore Normal file
View File

@@ -0,0 +1,7 @@
DLL-*
LIB-*
vc6cares.dep
vc6cares.mak
vc6cares.ncb
vc6cares.opt
vc6cares.plg

373
ares/vc/cares/vc6cares.dsp Normal file
View File

@@ -0,0 +1,373 @@
# Microsoft Developer Studio Project File - Name="cares" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=cares - Win32 LIB Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "vc6cares.mak".
!MESSAGE
!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 "vc6cares.mak" CFG="cares - Win32 LIB Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "cares - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "cares - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "cares - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
!MESSAGE "cares - Win32 LIB Release" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
!IF "$(CFG)" == "cares - Win32 DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "DLL-Debug"
# PROP BASE Intermediate_Dir "DLL-Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "DLL-Debug"
# PROP Intermediate_Dir "DLL-Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "DEBUGBUILD" /mktyplib203 /win32
# ADD MTL /nologo /D "DEBUGBUILD" /mktyplib203 /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "DEBUGBUILD"
# ADD RSC /l 0x409 /d "DEBUGBUILD"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"DLL-Debug/caresd.dll" /implib:"DLL-Debug/caresd_imp.lib" /pdbtype:sept
# ADD LINK32 ws2_32.lib advapi32.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"DLL-Debug/caresd.dll" /implib:"DLL-Debug/caresd_imp.lib" /pdbtype:sept
!ELSEIF "$(CFG)" == "cares - Win32 DLL Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DLL-Release"
# PROP BASE Intermediate_Dir "DLL-Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "DLL-Release"
# PROP Intermediate_Dir "DLL-Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c
MTL=midl.exe
# ADD BASE MTL /nologo /mktyplib203 /win32
# ADD MTL /nologo /mktyplib203 /win32
RSC=rc.exe
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib advapi32.lib /nologo /dll /pdb:none /machine:I386 /out:"DLL-Release/cares.dll" /implib:"DLL-Release/cares_imp.lib"
# ADD LINK32 ws2_32.lib advapi32.lib /nologo /dll /pdb:none /machine:I386 /out:"DLL-Release/cares.dll" /implib:"DLL-Release/cares_imp.lib"
!ELSEIF "$(CFG)" == "cares - Win32 LIB Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "LIB-Debug"
# PROP BASE Intermediate_Dir "LIB-Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "LIB-Debug"
# PROP Intermediate_Dir "LIB-Debug"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "DEBUGBUILD"
# ADD RSC /l 0x409 /d "DEBUGBUILD"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"LIB-Debug/caresd.lib" /machine:I386
# ADD LIB32 /nologo /out:"LIB-Debug/caresd.lib" /machine:I386
!ELSEIF "$(CFG)" == "cares - Win32 LIB Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "LIB-Release"
# PROP BASE Intermediate_Dir "LIB-Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "LIB-Release"
# PROP Intermediate_Dir "LIB-Release"
# PROP Target_Dir ""
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c
RSC=rc.exe
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"LIB-Release/cares.lib" /machine:I386
# ADD LIB32 /nologo /out:"LIB-Release/cares.lib" /machine:I386
!ENDIF
# Begin Target
# Name "cares - Win32 DLL Debug"
# Name "cares - Win32 DLL Release"
# Name "cares - Win32 LIB Debug"
# Name "cares - Win32 LIB Release"
# Begin Group "Source Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\ares__close_sockets.c
# End Source File
# Begin Source File
SOURCE=..\..\ares__get_hostent.c
# End Source File
# Begin Source File
SOURCE=..\..\ares__read_line.c
# End Source File
# Begin Source File
SOURCE=..\..\ares__timeval.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
SOURCE=..\..\ares_expand_name.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_expand_string.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_fds.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_free_hostent.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_free_string.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_gethostbyaddr.c
# End Source File
# Begin Source File
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
SOURCE=..\..\ares_library_init.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_llist.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_mkquery.c
# End Source File
# Begin Source File
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_ns_reply.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_parse_ptr_reply.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_parse_srv_reply.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_parse_txt_reply.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_process.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_query.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_search.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_send.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_strcasecmp.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_strerror.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_timeout.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_version.c
# End Source File
# Begin Source File
SOURCE=..\..\ares_writev.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
# Begin Group "Header Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\ares.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_build.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_dns.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_ipv6.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_library_init.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_llist.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_private.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_rules.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_strcasecmp.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_version.h
# End Source File
# Begin Source File
SOURCE=..\..\ares_writev.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
# Begin Group "Resource Files"
# PROP Default_Filter ""
# Begin Source File

View File

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

View File

@@ -3,7 +3,19 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
############################################################################### ###############################################################################
Project: "acountry"=".\acountry\acountry.dsp" - Package Owner=<4> Project: "cares"=".\cares\vc6cares.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "acountry"=".\acountry\vc6acountry.dsp" - Package Owner=<4>
Package=<5> Package=<5>
{{{ {{{
@@ -12,13 +24,13 @@ Package=<5>
Package=<4> Package=<4>
{{{ {{{
Begin Project Dependency Begin Project Dependency
Project_Dep_Name areslib Project_Dep_Name cares
End Project Dependency End Project Dependency
}}} }}}
############################################################################### ###############################################################################
Project: "adig"=".\adig\adig.dsp" - Package Owner=<4> Project: "adig"=".\adig\vc6adig.dsp" - Package Owner=<4>
Package=<5> Package=<5>
{{{ {{{
@@ -27,13 +39,13 @@ Package=<5>
Package=<4> Package=<4>
{{{ {{{
Begin Project Dependency Begin Project Dependency
Project_Dep_Name areslib Project_Dep_Name cares
End Project Dependency End Project Dependency
}}} }}}
############################################################################### ###############################################################################
Project: "ahost"=".\ahost\ahost.dsp" - Package Owner=<4> Project: "ahost"=".\ahost\vc6ahost.dsp" - Package Owner=<4>
Package=<5> Package=<5>
{{{ {{{
@@ -42,24 +54,12 @@ Package=<5>
Package=<4> Package=<4>
{{{ {{{
Begin Project Dependency Begin Project Dependency
Project_Dep_Name areslib Project_Dep_Name cares
End Project Dependency End Project Dependency
}}} }}}
############################################################################### ###############################################################################
Project: "areslib"=".\areslib\areslib.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global: Global:
Package=<5> Package=<5>

View File

@@ -1,4 +1,4 @@
#include "setup.h" #include "ares_setup.h"
/* $Id$ */ /* $Id$ */

View File

@@ -43,7 +43,7 @@ CURL_CHECK_OPTION_OPTIMIZE
CURL_CHECK_OPTION_WARNINGS CURL_CHECK_OPTION_WARNINGS
CURL_CHECK_OPTION_CURLDEBUG CURL_CHECK_OPTION_CURLDEBUG
CURL_CHECK_PATH_SEPARATOR CURL_CHECK_PATH_SEPARATOR_REQUIRED
dnl SED is mandatory for configure process and libtool. dnl SED is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later. dnl Set it now, allowing it to be changed later.
@@ -79,7 +79,7 @@ fi
AC_SUBST([EGREP]) AC_SUBST([EGREP])
dnl AR is mandatory for configure process and libtool. dnl AR is mandatory for configure process and libtool.
dnl This is target dependant, so check it as a tool. dnl This is target dependent, so check it as a tool.
AC_PATH_TOOL([AR], [ar], [not_found], AC_PATH_TOOL([AR], [ar], [not_found],
[$PATH:/usr/bin:/usr/local/bin]) [$PATH:/usr/bin:/usr/local/bin])
if test -z "$AR" || test "$AR" = "not_found"; then if test -z "$AR" || test "$AR" = "not_found"; then
@@ -110,7 +110,7 @@ AC_SUBST(PKGADD_VENDOR)
dnl dnl
dnl initialize all the info variables dnl initialize all the info variables
curl_ssl_msg="no (--with-ssl / --with-gnutls)" curl_ssl_msg="no (--with-ssl / --with-gnutls / --with-nss)"
curl_ssh_msg="no (--with-libssh2)" curl_ssh_msg="no (--with-libssh2)"
curl_zlib_msg="no (--with-zlib)" curl_zlib_msg="no (--with-zlib)"
curl_krb4_msg="no (--with-krb4*)" curl_krb4_msg="no (--with-krb4*)"
@@ -1432,72 +1432,6 @@ fi
dnl set variable for use in automakefile(s) dnl set variable for use in automakefile(s)
AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1) AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
dnl **********************************************************************
dnl Check for the presence of LIBSSH2 libraries and headers
dnl **********************************************************************
dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
OPT_LIBSSH2=off
AC_ARG_WITH(libssh2,dnl
AC_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the LIBSSH2 installation (default: /usr/local/lib); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
OPT_LIBSSH2=$withval)
if test X"$OPT_LIBSSH2" != Xno; then
dnl backup the pre-libssh2 variables
CLEANLDFLAGS="$LDFLAGS"
CLEANCPPFLAGS="$CPPFLAGS"
CLEANLIBS="$LIBS"
case "$OPT_LIBSSH2" in
yes)
dnl --with-libssh2 (without path) used
PREFIX_LIBSSH2=/usr/local/lib
LIB_LIBSSH2="$PREFIX_LIBSSH2$libsuff"
;;
off)
dnl no --with-libssh2 option given, just check default places
PREFIX_LIBSSH2=
;;
*)
dnl use the given --with-libssh2 spot
PREFIX_LIBSSH2=$OPT_LIBSSH2
LIB_LIBSSH2="$PREFIX_LIBSSH2/lib$libsuff"
LDFLAGS="$LDFLAGS -L$LIB_LIBSSH2"
CPPFLAGS="$CPPFLAGS -I$PREFIX_LIBSSH2/include"
;;
esac
AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
AC_CHECK_HEADERS(libssh2.h,
curl_ssh_msg="enabled (libSSH2)"
LIBSSH2_ENABLED=1
AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
AC_SUBST(USE_LIBSSH2, [1])
)
if test X"$OPT_LIBSSH2" != Xoff &&
test "$LIBSSH2_ENABLED" != "1"; then
AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
fi
if test "$LIBSSH2_ENABLED" = "1"; then
if test -n "$LIB_LIBSSH2"; then
dnl when the libssh2 shared libs were found in a path that the run-time
dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
dnl to prevent further configure tests to fail due to this
dnl libssh2_version is a post 1.0 addition
AC_CHECK_FUNCS( libssh2_version )
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_LIBSSH2"
export LD_LIBRARY_PATH
AC_MSG_NOTICE([Added $LIB_LIBSSH2 to LD_LIBRARY_PATH])
fi
fi
fi
dnl ********************************************************************** dnl **********************************************************************
dnl Check for the random seed preferences dnl Check for the random seed preferences
dnl ********************************************************************** dnl **********************************************************************
@@ -1571,12 +1505,13 @@ if test "$OPENSSL_ENABLED" != "1"; then
else else
dnl this is with a given path, first check if there's a libgnutls-config dnl this is with a given path, first check if there's a libgnutls-config
dnl there and if not, make an educated guess dnl there and if not, make an educated guess
check=`$OPT_GNUTLS/libgnutls-config --version 2>/dev/null` cfg=$OPT_GNUTLS/bin/libgnutls-config
check=`$cfg --version 2>/dev/null`
if test -n "$check"; then if test -n "$check"; then
addlib=`$OPT_GNUTLS/libgnutls-config --libs` addlib=`$cfg --libs`
addcflags=`$OPT_GNUTLS/libgnutls-config --cflags` addcflags=`$cfg --cflags`
version=`$OPT_GNUTLS/libgnutls-config --version` version=`$cfg --version`
gtlslib=`$OPT_GNUTLS/libgnutls-config --prefix`/lib$libsuff gtlslib=`$cfg --prefix`/lib$libsuff
else else
dnl without pkg-config and libgnutls-config, we guess a lot! dnl without pkg-config and libgnutls-config, we guess a lot!
addlib=-lgnutls addlib=-lgnutls
@@ -1662,13 +1597,21 @@ if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then
addcflags=`$PKGCONFIG --cflags nss` addcflags=`$PKGCONFIG --cflags nss`
version=`$PKGCONFIG --modversion nss` version=`$PKGCONFIG --modversion nss`
nssprefix=`$PKGCONFIG --variable=prefix nss` nssprefix=`$PKGCONFIG --variable=prefix nss`
else
dnl Without pkg-config, we check for nss-config
check=`nss-config --version 2>/dev/null`
if test -n "$check"; then
addlib=`nss-config --libs`
addcflags=`nss-config --cflags`
version=`nss-config --version`
nssprefix=`nss-config --prefix`
else
addlib="-lnss3"
addcflags=""
version="unknown"
fi
fi fi
else
# Without pkg-config, we'll kludge in some defaults
addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
addcflags="-I$OPT_NSS/include"
version="unknown"
nssprefix=$OPT_NSS
fi fi
dnl Check for functionPK11_CreateGenericObject dnl Check for functionPK11_CreateGenericObject
@@ -1735,6 +1678,92 @@ dnl **********************************************************************
CURL_CHECK_CA_BUNDLE CURL_CHECK_CA_BUNDLE
dnl **********************************************************************
dnl Check for the presence of LIBSSH2 libraries and headers
dnl **********************************************************************
dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
OPT_LIBSSH2=off
AC_ARG_WITH(libssh2,dnl
AC_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the LIBSSH2 installation (default: /usr/local/lib); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
OPT_LIBSSH2=$withval)
if test X"$OPT_LIBSSH2" != Xno; then
dnl backup the pre-libssh2 variables
CLEANLDFLAGS="$LDFLAGS"
CLEANCPPFLAGS="$CPPFLAGS"
CLEANLIBS="$LIBS"
case "$OPT_LIBSSH2" in
yes)
dnl --with-libssh2 (without path) used
CURL_CHECK_PKGCONFIG(libssh2)
if test "$PKGCONFIG" != "no" ; then
LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
version=`$PKGCONFIG --modversion libssh2`
DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
fi
;;
off)
dnl no --with-libssh2 option given, just check default places
;;
*)
dnl use the given --with-libssh2 spot
PREFIX_SSH2=$OPT_LIBSSH2
;;
esac
dnl if given with a prefix, we set -L and -I based on that
if test -n "$PREFIX_SSH2"; then
LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
CPP_SSH2=-I${PREFIX_SSH2}/include
DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
fi
LDFLAGS="$LDFLAGS $LD_SSH2"
CPPFLAGS="$CPPFLAGS $CPP_SSH2"
LIBS="$LIBS $LIB_SSH2"
AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
AC_CHECK_HEADERS(libssh2.h,
curl_ssh_msg="enabled (libSSH2)"
LIBSSH2_ENABLED=1
AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
AC_SUBST(USE_LIBSSH2, [1])
)
if test X"$OPT_LIBSSH2" != Xoff &&
test "$LIBSSH2_ENABLED" != "1"; then
AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
fi
if test "$LIBSSH2_ENABLED" = "1"; then
if test -n "$DIR_SSH2"; then
dnl when the libssh2 shared libs were found in a path that the run-time
dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
dnl to prevent further configure tests to fail due to this
dnl libssh2_version is a post 1.0 addition
AC_CHECK_FUNCS( libssh2_version )
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
export LD_LIBRARY_PATH
AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
fi
else
dnl no libssh2, revert back to clean variables
LDFLAGS=$CLEANLDFLAGS
CPPFLAGS=$CLEANCPPFLAGS
LIBS=$CLEANLIBS
fi
fi
dnl ********************************************************************** dnl **********************************************************************
dnl Check for the presence of IDN libraries and headers dnl Check for the presence of IDN libraries and headers
dnl ********************************************************************** dnl **********************************************************************
@@ -2020,6 +2049,7 @@ CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL CURL_CHECK_MSG_NOSIGNAL
CURL_CHECK_FUNC_ALARM CURL_CHECK_FUNC_ALARM
CURL_CHECK_FUNC_BASENAME
CURL_CHECK_FUNC_CLOSESOCKET CURL_CHECK_FUNC_CLOSESOCKET
CURL_CHECK_FUNC_CLOSESOCKET_CAMEL CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
CURL_CHECK_FUNC_CONNECT CURL_CHECK_FUNC_CONNECT
@@ -2044,6 +2074,7 @@ CURL_CHECK_FUNC_IOCTL
CURL_CHECK_FUNC_IOCTLSOCKET CURL_CHECK_FUNC_IOCTLSOCKET
CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
CURL_CHECK_FUNC_LOCALTIME_R CURL_CHECK_FUNC_LOCALTIME_R
CURL_CHECK_FUNC_MEMRCHR
CURL_CHECK_FUNC_POLL CURL_CHECK_FUNC_POLL
CURL_CHECK_FUNC_SETSOCKOPT CURL_CHECK_FUNC_SETSOCKOPT
CURL_CHECK_FUNC_SIGACTION CURL_CHECK_FUNC_SIGACTION
@@ -2078,8 +2109,7 @@ case $host in
;; ;;
esac esac
AC_CHECK_FUNCS([basename \ AC_CHECK_FUNCS([fork \
fork \
geteuid \ geteuid \
getpass_r \ getpass_r \
getppid \ getppid \
@@ -2117,21 +2147,6 @@ AC_CHECK_FUNCS([basename \
fi fi
]) ])
AC_CHECK_DECL(basename, ,
AC_DEFINE(NEED_BASENAME_PROTO, 1, [If you lack a fine basename() prototype]),
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#ifdef HAVE_LIBGEN_H
#include <libgen.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
)
dnl Check if the getnameinfo function is available dnl Check if the getnameinfo function is available
dnl and get the types of five of its arguments. dnl and get the types of five of its arguments.
CURL_CHECK_FUNC_GETNAMEINFO CURL_CHECK_FUNC_GETNAMEINFO

View File

@@ -1,4 +1,4 @@
Updated: Jun 9, 2009 (http://curl.haxx.se/docs/faq.html) Updated: Nov 3, 2009 (http://curl.haxx.se/docs/faq.html)
_ _ ____ _ _ _ ____ _
___| | | | _ \| | ___| | | | _ \| |
/ __| | | | |_) | | / __| | | | |_) | |
@@ -130,7 +130,8 @@ FAQ
libcurl is highly portable, it builds and works identically on numerous libcurl is highly portable, it builds and works identically on numerous
platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX,
IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac
OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS and more... OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF,
Android, Minix, IBM TPF and more...
libcurl is free, thread-safe, IPv6 compatible, feature rich, well libcurl is free, thread-safe, IPv6 compatible, feature rich, well
supported and fast. supported and fast.
@@ -228,11 +229,14 @@ FAQ
1.6 What do you get for making curl? 1.6 What do you get for making curl?
Project cURL is entirely free and open. No person gets paid for developing Project cURL is entirely free and open. No person gets paid for developing
(lib)curl. We do this voluntarily on our spare time. (lib)curl on full or even part time. We do this voluntarily on our spare
time. Occasionally companies pay individual developers to work on curl, but
that's up to each company and developer. It is not controlled by nor
supervised in any way by the project.
We get some help from companies. CAG Contactor hosts the curl web site, Haxx We still get help from companies. Haxx provides web site, bandwidth, mailing
owns the curl web site's domain and sourceforge.net hosts project services lists, CVS server etc and sourceforge.net hosts project services we take
we take advantage from, like the bug tracker. Also, some companies have advantage from, like the bug tracker. Also again, some companies have
sponsored certain parts of the development in the past and I hope some will sponsored certain parts of the development in the past and I hope some will
continue to do so in the future. continue to do so in the future.
@@ -427,7 +431,7 @@ FAQ
and logs and check out why the configure script doesn't find the SSL libs and logs and check out why the configure script doesn't find the SSL libs
and/or include files. and/or include files.
Also, check out the other paragraph in this FAQ labeled "configure doesn't Also, check out the other paragraph in this FAQ labelled "configure doesn't
find OpenSSL even when it is installed". find OpenSSL even when it is installed".
3.2 How do I tell curl to resume a transfer? 3.2 How do I tell curl to resume a transfer?
@@ -507,12 +511,13 @@ FAQ
install and use them, in the libcurl section of the curl web site: install and use them, in the libcurl section of the curl web site:
http://curl.haxx.se/libcurl/ http://curl.haxx.se/libcurl/
In February 2007, there are interfaces available for the following In October 2009, there were interfaces available for the following
languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Dylan, Euphoria, Ferite, languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Dylan, Eiffel, Euphoria,
Gambas, glib/GTK+, Java, Lisp, Lua, Mono, .NET, Object-Pascal, O'Caml, Ferite, Gambas, glib/GTK+, Haskell, ILE/RPG, Java, Lisp, Lua, Mono, .NET,
Pascal, Perl, PHP, PostgreSQL, Python, R, Rexx, Ruby, Scheme, S-Lang, Object-Pascal, O'Caml, Pascal, Perl, PHP, PostgreSQL, Python, R, Rexx, Ruby,
Smalltalk, SPL, Tcl, Visual Basic, Q, wxwidgets and XBLite. By the time you Scheme, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro,
read this, additional ones may have appeared! 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? 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
@@ -578,7 +583,7 @@ FAQ
the name of the proxy to connect to. Since curl doesn't support Javascript, the name of the proxy to connect to. Since curl doesn't support Javascript,
it can't support .pac proxy configuration either. it can't support .pac proxy configuration either.
Some work-arounds usually suggested to overcome this Javascript dependency: Some workarounds usually suggested to overcome this Javascript dependency:
- Depending on the Javascript complexity, write up a script that - Depending on the Javascript complexity, write up a script that
translates it to another language and execute that. translates it to another language and execute that.
@@ -796,9 +801,9 @@ FAQ
4.9 Curl can't authenticate to the server that requires NTLM? 4.9 Curl can't authenticate to the server that requires NTLM?
This is supported in curl 7.10.6 or later. No earlier curl version knows This is supported in curl 7.10.6 or later. No earlier curl version knows
of this magic. Later versions require the OpenSSL or Microsoft Windows of this magic. Later versions require the OpenSSL, GnuTLS or Microsoft
libraries to provide this functionality. Using the NSS library will Windows libraries to provide this functionality. Using the NSS library
not provide NTLM authentication functionality in curl. will not provide NTLM authentication functionality in curl.
NTLM is a Microsoft proprietary protocol. Proprietary formats are evil. You NTLM is a Microsoft proprietary protocol. Proprietary formats are evil. You
should not use such ones. should not use such ones.

View File

@@ -246,6 +246,53 @@ Win32
See the separate INSTALL.devcpp file for details. See the separate INSTALL.devcpp file for details.
MSVC 6 caveats
--------------
If you use MSVC 6 it is required that you use the February 2003 edition PSDK:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
Building any software with MSVC 6 without having PSDK installed is just
asking for trouble down the road once you have released it, you might notice
the problems in the first corner or ten miles ahead, depending mostly on your
choice of static vs dynamic runtime and third party libraries. Anyone using
software built in such way will at some point regret having done so.
When someone uses MSVC 6 without PSDK he is using a compiler back from 1998.
If the compiler has been updated with the installation of a service pack as
those mentioned in http://support.microsoft.com/kb/194022 the compiler can be
safely used to read source code, translate and make it object code.
But, even with the service packs mentioned above installed, the resulting
software generated in such an environment will be using outdated system
header files and libraries with bugs and security issues which have already
been addressed and fixed long time ago.
In order to make use of the updated system headers and fixed libraries
for MSVC 6, it is required that 'Platform SDK', PSDK from now onwards,
is installed. The specific PSDK that must be installed for MSVC 6 is the
February 2003 edition, which is the latest one supporting the MSVC 6 compiler,
this PSDK is also known as 'Windows Server 2003 PSDK' and can be downloaded
from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
So, building curl and libcurl with MSVC 6 without PSDK is absolutely
discouraged for the benefit of anyone using software built in such
environment. And it will not be supported in any way, as we could just
be hunting bugs which have already been fixed way back in 2003.
When building with MSVC 6 we attempt to detect if PSDK is not being used,
and if this is the case the build process will fail hard with an error
message stating that the February 2003 PSDK is required. This is done to
protect the unsuspecting and avoid PEBKAC issues.
Additionally it might happen that a die hard MSVC hacker still wants to
build curl and libcurl with MSVC 6 without PSDK installed, even knowing
that this is a highly discouraged and unsupported build environment. In
this case the brave of heart will be able to build in such an environment
with the requisite of defining preprocessor symbol ALLOW_MSVC6_WITHOUT_PSDK
in lib/config-win32.h and knowing that LDAP and IPv6 support will be missing.
MSVC from command line MSVC from command line
---------------------- ----------------------
@@ -664,7 +711,8 @@ eCos
Minix Minix
===== =====
curl can be compiled on Minix 3 using gcc or ACK (starting with curl can be compiled on Minix 3 using gcc or ACK (starting with
ver. 3.1.3). ver. 3.1.3). Ensure that GNU gawk and bash are both installed and
available in the PATH.
ACK ACK
--- ---
@@ -672,10 +720,10 @@ Minix
binsizes xxl binsizes xxl
Configure and compile with: then configure and compile curl with:
./configure CONFIG_SHELL=/bin/bigsh CC=cc LD=cc AR=/usr/bin/aal \ ./configure CC=cc LD=cc AR=/usr/bin/aal GREP=grep \
GREP=grep CPPFLAGS='-D_POSIX_SOURCE=1 -I/usr/local/include' CPPFLAGS='-D_POSIX_SOURCE=1 -I/usr/local/include'
make make
chmem =256000 src/curl chmem =256000 src/curl
@@ -687,7 +735,7 @@ Minix
then configure and compile curl with: then configure and compile curl with:
./configure CONFIG_SHELL=/bin/bigsh CC=gcc AR=/usr/gnu/bin/gar GREP=grep ./configure CC=gcc AR=/usr/gnu/bin/gar GREP=grep
make make
chmem =256000 src/curl chmem =256000 src/curl
@@ -700,9 +748,9 @@ Symbian OS
bldmake bldfiles bldmake bldfiles
abld build abld build
to compile and install curl and libcurl. If your Symbian SDK doesn't to compile and install curl and libcurl using SBSv1. If your Symbian
include support for P.I.P.S., you will need to contact your SDK vendor SDK doesn't include support for P.I.P.S., you will need to contact
to obtain that first. your SDK vendor to obtain that first.
VxWorks VxWorks
@@ -860,6 +908,7 @@ PORTS
- Alpha OpenVMS V7.1-1H2 - Alpha OpenVMS V7.1-1H2
- Alpha Tru64 v5.0 5.1 - Alpha Tru64 v5.0 5.1
- AVR32 Linux - AVR32 Linux
- ARM Android 1.5
- ARM INTEGRITY - ARM INTEGRITY
- ARM iPhone OS - ARM iPhone OS
- Cell Linux - Cell Linux

View File

@@ -437,12 +437,23 @@ Memory Debugging
after a complete session, after a complete session,
memanalyze.pl is the perl script present only present in CVS (not part of the memanalyze.pl is the perl script present only present in CVS (not part of the
release archives) that analyzes a log file generated by the memdebug release archives) that analyzes a log file generated by the memory tracking
system. It detects if resources are allocated but never freed and other kinds system. It detects if resources are allocated but never freed and other kinds
of errors related to resource management. of errors related to resource management.
Use -DMALLOCDEBUG when compiling to enable memory debugging, this is also Internally, definition of preprocessor symbol DEBUGBUILD restricts code which
switched on by running configure with --enable-debug. is only compiled for debug enabled builds. And symbol CURLDEBUG is used to
differentiate code which is _only_ used for memory tracking/debugging.
Use -DCURLDEBUG when compiling to enable memory debugging, this is also
switched on by running configure with --enable-curldebug. Use -DDEBUGBUILD
when compiling to enable a debug build or run configure with --enable-debug.
curl --version will list 'Debug' feature for debug enabled builds, and
will list 'TrackMemory' feature for curl debug memory tracking capable
builds. These features are independent and can be controlled when running
the configure script. When --enable-debug is given both features will be
enabled, unless some restriction prevents memory tracking from being used.
Test Suite Test Suite
========== ==========

View File

@@ -3,18 +3,25 @@ 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 changelog of the current development status, as one or more of these problems
may have been fixed since this was written! may have been fixed since this was written!
73. if a connection is made to a FTP server but the server then just never
sends the 220 response or otherwise is dead slow, libcurl will not
acknowledge the connection timeout during that phase but only the "real"
timeout - which may surprise users as it is probably considered to be the
connect phase to most people. Brought up (and is being misunderstood) in:
http://curl.haxx.se/bug/view.cgi?id=2844077
72. "Pausing pipeline problems." 72. "Pausing pipeline problems."
http://curl.haxx.se/mail/lib-2009-07/0214.html http://curl.haxx.se/mail/lib-2009-07/0214.html
71. TFTP block size / better integration in transfer 71. TFTP block size / better integration in transfer
http://curl.haxx.se/mail/lib-2009-08/0028.html http://curl.haxx.se/mail/lib-2009-08/0028.html
Related problems with TFTP is also that currently (7.19.6) upload file sizes
are limited to 32MB (http://curl.haxx.se/bug/view.cgi?id=2848436)
70. Problem re-using easy handle after call to curl_multi_remove_handle 70. Problem re-using easy handle after call to curl_multi_remove_handle
http://curl.haxx.se/mail/lib-2009-07/0249.html http://curl.haxx.se/mail/lib-2009-07/0249.html
69. debugging a crash in Curl_pgrsTime/checkPendPipeline?
http://curl.haxx.se/mail/lib-2009-08/0066.html
68. "More questions about ares behavior". 68. "More questions about ares behavior".
http://curl.haxx.se/mail/lib-2009-08/0012.html http://curl.haxx.se/mail/lib-2009-08/0012.html

View File

@@ -78,7 +78,7 @@ server, do one of the following:
5. all directories along %PATH% 5. all directories along %PATH%
5. Get a better/different/newer CA cert bundle! One option is to extract the 5. Get a better/different/newer CA cert bundle! One option is to extract the
one a recent Mozilla browser uses by running 'make ca-bundle' in the curl one a recent Firefox browser uses by running 'make ca-bundle' in the curl
build tree root, or possibly download a version that was generated this build tree root, or possibly download a version that was generated this
way for you: way for you:
@@ -89,3 +89,28 @@ certificate that isn't signed by one of the certificates in the installed CA
cert bundle, will cause SSL to report an error ("certificate verify failed") cert bundle, will cause SSL to report an error ("certificate verify failed")
during the handshake and SSL will then refuse further communication with that during the handshake and SSL will then refuse further communication with that
server. server.
Peer SSL Certificate Verification with NSS
==========================================
If libcurl is build with NSS support then depending on the OS distribution it
is probably required to take some additional steps to use the system-wide CA
cert db. RedHat ships with an additional module libnsspem.so which enables NSS
to read the OpenSSL PEM CA bundle. With OpenSuSE this lib is missing, and NSS
can only work with its own internal formats. Also NSS got a new database
format:
https://wiki.mozilla.org/NSS_Shared_DB
Starting with version 7.19.7 libcurl will check for the NSS version it runs,
and add automatically the 'sql:' prefix to the certdb directory (either the
hardcoded default /etc/pki/nssdb or the directory configured with SSL_DIR
environment variable) if a version 3.12.0 or later is detected.
To check which certdb format your distribution provides examine the default
certdb location /etc/pki/nssdb; the new certdb format can be identified by
the filenames cert9.db, key4.db, pkcs11.txt; filenames of older versions are
cert8.db, key3.db, modsec.db.
Usually these cert databases are empty; but NSS also has built-in CAs which are
provided through a shared library libnssckbi.so; if you want to use these
built-in CAs then create a symlink to libnssckbi.so in /etc/pki/nssdb:
ln -s /usr/lib[64]/libnssckbi.so /etc/pki/nssdb/libnssckbi.so

View File

@@ -4,6 +4,7 @@
If you have contributed but are missing here, please let us know! If you have contributed but are missing here, please let us know!
Aaron Oneal
Adam D. Moss Adam D. Moss
Adam Piggott Adam Piggott
Adrian Schuur Adrian Schuur
@@ -17,6 +18,7 @@ Alex Fishman
Alex Neblett Alex Neblett
Alex Suykov Alex Suykov
Alex aka WindEagle Alex aka WindEagle
Alexander Beedie
Alexander Kourakos Alexander Kourakos
Alexander Krasnostavsky Alexander Krasnostavsky
Alexander Lazic Alexander Lazic
@@ -70,10 +72,12 @@ Bas Mevissen
Ben Greear Ben Greear
Ben Madsen Ben Madsen
Ben Van Hof Ben Van Hof
Benbuck Nason
Benjamin Gerard Benjamin Gerard
Bernard Leak Bernard Leak
Bertrand Demiddelaer Bertrand Demiddelaer
Bill Egert Bill Egert
Bill Hoffman
Bjorn Reese Bjorn Reese
Bj<EFBFBD>rn Stenberg Bj<EFBFBD>rn Stenberg
Bob Schader Bob Schader
@@ -92,6 +96,7 @@ Bruce Mitchener
Bryan Henderson Bryan Henderson
Bryan Kemp Bryan Kemp
Caolan McNamara Caolan McNamara
Carsten Lange
Casey O'Donnell Casey O'Donnell
Chad Monroe Chad Monroe
Chih-Chung Chang Chih-Chung Chang
@@ -110,6 +115,7 @@ Christophe Legry
Christopher Palow Christopher Palow
Christopher R. Palmer Christopher R. Palmer
Ciprian Badescu Ciprian Badescu
Claes Jakobsson
Clarence Gardner Clarence Gardner
Clifford Wolf Clifford Wolf
Cody Jones Cody Jones
@@ -122,6 +128,7 @@ Craig A West
Craig Davison Craig Davison
Craig Markwardt Craig Markwardt
Cris Bailiff Cris Bailiff
Curt Bogmine
Cyrill Osterwalder Cyrill Osterwalder
Damien Adant Damien Adant
Dan Becker Dan Becker
@@ -136,6 +143,7 @@ Daniel Cater
Daniel Egger Daniel Egger
Daniel Fandrich Daniel Fandrich
Daniel Johnson Daniel Johnson
Daniel Steinberg
Daniel Stenberg Daniel Stenberg
Daniel at touchtunes Daniel at touchtunes
Darryl House Darryl House
@@ -145,6 +153,7 @@ Dave Hamilton
Dave May Dave May
Dave Vasilevsky Dave Vasilevsky
David Bau David Bau
David Binderman
David Byron David Byron
David Cohen David Cohen
David Eriksson David Eriksson
@@ -209,6 +218,7 @@ Eric Melville
Eric Rautman Eric Rautman
Eric Thelin Eric Thelin
Eric Vergnaud Eric Vergnaud
Eric Wong
Eric Young Eric Young
Erick Nuwendam Erick Nuwendam
Erwan Legrand Erwan Legrand
@@ -216,6 +226,7 @@ Erwin Authried
Eugene Kotlyarov Eugene Kotlyarov
Evan Jordan Evan Jordan
Eygene Ryabinkin Eygene Ryabinkin
Fabian Keil
Fabrizio Ammollo Fabrizio Ammollo
Fedor Karpelevitch Fedor Karpelevitch
Felix von Leitner Felix von Leitner
@@ -224,6 +235,7 @@ Florian Schoppmann
Forrest Cahoon Forrest Cahoon
Frank Hempel Frank Hempel
Frank Keeney Frank Keeney
Frank McGeough
Frank Ticheler Frank Ticheler
Fred Machado Fred Machado
Fred New Fred New
@@ -336,7 +348,9 @@ Joel Chen
Jofell Gallardo Jofell Gallardo
Johan Anderson Johan Anderson
Johan Nilsson Johan Nilsson
Johan van Selst
John Crow John Crow
John E. Malmberg
John Janssen John Janssen
John Kelly John Kelly
John Lask John Lask
@@ -479,6 +493,7 @@ Michele Bini
Mihai Ionescu Mihai Ionescu
Mikael Sennerholm Mikael Sennerholm
Mike Bytnar Mike Bytnar
Mike Crowe
Mike Dobbs Mike Dobbs
Mike Hommey Mike Hommey
Mike Protts Mike Protts
@@ -578,6 +593,7 @@ Renaud Chaillat
Renaud Duhaut Renaud Duhaut
Rene Bernhardt Rene Bernhardt
Rene Rebe Rene Rebe
Reuven Wachtfogel
Ricardo Cadime Ricardo Cadime
Rich Gray Rich Gray
Rich Rauenzahn Rich Rauenzahn
@@ -668,6 +684,7 @@ Sven Wegener
S<EFBFBD>bastien Willemijns S<EFBFBD>bastien Willemijns
T. Bharath T. Bharath
T. Yamada T. Yamada
Tanguy Fautre
Temprimus Temprimus
Thomas J. Moore Thomas J. Moore
Thomas Klausner Thomas Klausner

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