1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00
Commit Graph

1685 Commits

Author SHA1 Message Date
Daniel Stenberg
f232baf4d2 Dylan Ellicott added the release-libcurl-ssl-dll target 2003-10-22 11:26:41 +00:00
Daniel Stenberg
b439e8ffb7 Do the auth stuff at the end-of-headers and not at the start-of-body, as
we might not get a body when we get a 401 with a set of WWW-Authenticate:
headers. This fixes the problem Kevin Roth detected in 7.10.8-pre4 and pre5.
Verified by test case 91.
2003-10-22 11:15:48 +00:00
Daniel Stenberg
640d6a5564 updated for mingw32 2003-10-21 14:14:25 +00:00
Daniel Stenberg
d1c08e1d85 conn->user and conn->passwd will now always be set to point to something.
If not user or password is set, they will point to a "" string.
2003-10-21 06:34:15 +00:00
Daniel Stenberg
b83c7ade10 allow no user and password for proxy too, Basic 2003-10-20 20:32:08 +00:00
Daniel Stenberg
7d6584e140 allow no user and no passwd when doing basic auth 2003-10-20 20:30:40 +00:00
Daniel Stenberg
31b6bb6a41 lock the DNS cache properly before adding an entry when using asynch DNS 2003-10-20 08:45:33 +00:00
Daniel Stenberg
d9f961ed2d better error output on SSL errors when receiving data - Georg Horn patch 2003-10-19 17:38:51 +00:00
Daniel Stenberg
c7f5476416 fixed the bug my previous change introduced 2003-10-19 05:42:49 +00:00
Daniel Stenberg
381c6c5d52 minor fix to not shadow a variable 2003-10-18 20:38:18 +00:00
Daniel Stenberg
9df8f9a63d builds warning-free with -Wshadow now 2003-10-18 20:35:03 +00:00
Daniel Stenberg
5eee801d06 don't shadow 'socket' 2003-10-18 20:34:33 +00:00
Daniel Stenberg
80a06403e4 fixed gcc -Wshadow warnings 2003-10-18 20:28:53 +00:00
Daniel Stenberg
7ad69f59c7 removed gcc -Wshadow warning 2003-10-18 20:24:54 +00:00
Daniel Stenberg
83b82e4472 memory leak 2003-10-18 20:24:20 +00:00
Daniel Stenberg
65dab79ca5 gcc -Wshadow complaints fixed 2003-10-18 20:14:33 +00:00
Daniel Stenberg
f0089b6291 compiler warning fix 2003-10-18 20:14:21 +00:00
Daniel Stenberg
d10508e08c prevent compiler warnings with relly picky compiler options 2003-10-18 20:13:54 +00:00
Daniel Stenberg
630995f40a Dominick Meglio pointed out these files should be removed from here 2003-10-18 19:40:58 +00:00
Daniel Stenberg
ce5db9a86e Dominick Meglio implemented CURLOPT_MAXFILESIZE and --max-filesize. 2003-10-17 13:11:00 +00:00
Daniel Stenberg
94568f884d typecasts to prevent warnings 2003-10-17 12:44:54 +00:00
Daniel Stenberg
9935d33b8e make empty names look fine in verbose output 2003-10-17 09:29:30 +00:00
Daniel Stenberg
d42c6b7e78 make no user or no password just mean blank fields, not aborted operation 2003-10-17 09:29:06 +00:00
Daniel Stenberg
679654bd47 o the name and password arrays are 256 bytes, so let's accept that lengthy
input
o have ->passwd and ->name be NULL if no name/passwd was given
o only set default user+password for FTP if no userpwd was given
2003-10-17 09:28:00 +00:00
Daniel Stenberg
9e3f54431d made the code deal with empty name and password 2003-10-17 09:26:28 +00:00
Daniel Stenberg
260c353577 show info text (verbose) about auth type and user name in use 2003-10-17 07:05:26 +00:00
Daniel Stenberg
22adcb9cd1 password promting support removed from libcurl 2003-10-16 14:08:59 +00:00
Daniel Stenberg
597c1fe6bc rewritten alternative name check 2003-10-16 13:44:34 +00:00
Daniel Stenberg
7201a5a290 the previous fix left this compiler error 2003-10-15 20:37:00 +00:00
Daniel Stenberg
c6a0bb99af bad license situation for the altname patch 2003-10-15 14:42:11 +00:00
Daniel Stenberg
a9af971c59 Avoid doing getsockopt() on Windows to verify connects. It seems that this
hogs Windows machines when libcurl is being used multi-threaded (with > ~50
threads). Andrew Fuller helped us verify and test this.

According to a MSDN web page on connect(), it returns 0 when the connect
is done and thus we don't need the getsockopt() call anyway on Windows.
2003-10-15 11:42:57 +00:00
Daniel Stenberg
b71ca15598 Kimmo Kinnunen fixed a crash with duphandle() when CURLDEBUG was set 2003-10-14 13:10:05 +00:00
Daniel Stenberg
749f5387c1 Gisle Vanem's IPv6-on-Windows patch applied! 2003-10-14 12:00:45 +00:00
Daniel Stenberg
7d6e2a3adb added more mirrored versions of the ares 1.1.1 package 2003-10-13 13:10:05 +00:00
Daniel Stenberg
43cc844d3f Updated build instruction since I now offer a complete ares-package with all
the patches already applied. No need to apply any patches manually anymore.

ares 1.1.1 is still compatible.
2003-10-13 13:07:50 +00:00
Daniel Stenberg
8341e8e502 Clear the connection pointer after the async resolve has failed.
This cures the problem reported by Giuseppe Attardi on October 12, 2003.
2003-10-13 12:21:56 +00:00
Daniel Stenberg
c9d154ca7f Removed extra LDFLAGS assignment. Pointed out in debian bug report #212086
(http://bugs.debian.org/212086). Patch by Domenico Andreoli.
2003-10-13 00:12:06 +00:00
Daniel Stenberg
022996e5c7 Dirk Manske made the share-locking around DNS lookups a bit "looser" so that
multiple DNS lookups can run simultaneously faster. The downside is that
resolving the same host name now can be made at once from multiple threads,
but the upside is that threads now don't alwys have to wait for the others'
resolves. Test case 506 updated accordingly.
2003-10-12 13:57:41 +00:00
Daniel Stenberg
d1a3c9944e Lachlan O'Dea fixed a resume problem: "If I set CURLOPT_RESUME_FROM, perform
an HTTP download, then reset CURLOPT_RESUME_FROM to 0, the next download still
has a Range header with a garbage value." bug report #820502
2003-10-09 20:04:47 +00:00
Daniel Stenberg
e4adbf4017 Dominick Meglio fixed this to build fine on MSVC 2003-10-09 08:19:01 +00:00
Daniel Stenberg
867c189ef7 bail out hard if ipv6 and ares are both enabled at the same time 2003-10-08 19:56:44 +00:00
Daniel Stenberg
5c52cacc98 - Frank Ticheler provided a patch that fixes how libcurl connects to multiple
addresses, if one of them fails (ipv4-code).
2003-10-08 13:32:43 +00:00
Daniel Stenberg
e612f73374 include file fixes 2003-10-08 13:07:08 +00:00
Daniel Stenberg
ff5b6ff528 fixed to build fine without ssl 2003-10-08 13:06:50 +00:00
Daniel Stenberg
6494889e3b Neil Dunbar provided a patch that now makes libcurl check SSL
subjectAltNames when matching certs. This is apparently detailed in RFC2818
  as the right thing to do. I had to add configure checks for inet_pton() and
  our own (strictly speaking, code from BIND written by Paul Vixie) provided
  code for the function for platforms that miss it.
2003-10-07 21:46:47 +00:00
Daniel Stenberg
b61c25af45 make sure that a regular POST using the read callback works 2003-10-07 14:39:32 +00:00
Daniel Stenberg
17e13acd10 BeOS-adjustments, as provided by Shard 2003-10-05 15:04:09 +00:00
Daniel Stenberg
5564e9a321 weird typo removed 2003-10-05 15:03:37 +00:00
Daniel Stenberg
a0118fb390 just re-indented some code 2003-10-05 15:03:21 +00:00
Daniel Stenberg
57b6202eaa New code for BeOS-style non-blocking sockets, provided by Shard and
Jeremy Friesner.
2003-10-05 15:02:58 +00:00
Daniel Stenberg
780652e5b6 Vincent Bronner pointed out that if you set CURLOPT_COOKIE to NULL, it still
sends off the previously set cookie. This also concerns CURLOPT_REFERER.
This fix should stop this.
2003-10-04 15:48:15 +00:00
Daniel Stenberg
45ef092cc2 Jon Turner mentioned this bug fix to correct how libcurl deals with paths
after a failed transfer.
2003-10-04 15:25:02 +00:00
Daniel Stenberg
343291ce37 Based on a patch provided by Siddhartha Prakash Jain. In Curl_resolv() when
my_getaddrinfo() has been called (and wait has been set to TRUE), we check
if the name already is resolved and if so don't return wait status to the
parent. This can happen with IP-only names.
2003-10-04 14:50:45 +00:00
Daniel Stenberg
8aa2894bfb failing to resolve a name using ares must Curl_disconnect() the handle
properly or risk getting into trouble!
2003-09-21 23:10:47 +00:00
Daniel Stenberg
2297eca103 Added CURLOPT_IPRESOLVE support 2003-09-19 15:16:47 +00:00
Daniel Stenberg
09ccfcdcd4 Markus Moeller's SPNEGO patch applied, with my edits, additions and minor
cleanups.
2003-09-19 12:56:22 +00:00
Daniel Stenberg
951e2a6545 If a connection is closed down and it had some kind of NTLM involved, we
reset the authentication state to make it restart on the next connection.

This of course because NTLM is connection-oriented, whilst all other
authentication schemes are not.
2003-09-15 22:33:18 +00:00
Daniel Stenberg
58b1437cae When we issue a HTTP request, first make sure if the authentication phase
is over or not, as if it isn't we shall not begin any PUT or POST operation.

This cures bug report #805853, and test case 88 verifies it!
2003-09-15 21:11:22 +00:00
Daniel Stenberg
c611ac958e new ares patch uploaded 2003-09-14 22:42:08 +00:00
Daniel Stenberg
071fc74c0e reverted the change that blanks LIBS 2003-09-14 21:24:20 +00:00
Daniel Stenberg
14597475b1 Jeff Pohlmeyer did some marvelous debugging to track this one down. We MUST
NOT free the existing hash entry when we try to add a new one that matches
an existing entry. We now instead free the new one, and make the parent
function use the old entry's struct instead.
2003-09-14 21:17:54 +00:00
Daniel Stenberg
de3281a3a8 blank the LIBS variable, as we don't need any libs when we link the lib. 2003-09-12 20:45:39 +00:00
Daniel Stenberg
fd42247cac Tim Bartley's patch that makes the GSSNEGOTIATE option work for Microsoft's
"Negotiate" authentication as well.
2003-09-11 22:21:11 +00:00
Daniel Stenberg
0efcb57623 For easy handles within multi handles, we share the DNS cache always. 2003-09-11 22:14:29 +00:00
Daniel Stenberg
6fde147273 #ifdef 0'ed Curl_llist_insert_prev and Curl_llist_remove_next, as they are
not used by any code in libcurl!
2003-09-11 22:13:37 +00:00
Daniel Stenberg
cc497fd153 don't use a blank proxy 2003-09-11 22:05:23 +00:00
Daniel Stenberg
c1f31180a2 Curl_is_resolved(): FD_ZERO the file descriptors before we call ares_fds().
Problem tracked down by Bjorn Reese.
2003-09-11 21:27:19 +00:00
Daniel Stenberg
e8c762981a do not use 'long' to store 4 bytes, as 64bit architectures have 64bit longs. 2003-09-07 15:00:10 +00:00
Daniel Stenberg
adcbe03aeb Uses less macros. #ifdef'ed out unused functions. Edited slightly to be
more in the same style as other curl source code. The only actual code change
is an added check after a malloc() call.
2003-09-05 12:44:35 +00:00
Daniel Stenberg
df760a0a4b no user or password set, bail out 2003-09-04 13:31:49 +00:00
Daniel Stenberg
f2057eb744 ah, this change broke multiple test cases 2003-09-04 13:07:09 +00:00
Daniel Stenberg
2956fe97a0 Jörg pointed out that I did this fix wrongly, now authwant is cleared
properly if no auth is available
2003-09-04 11:34:09 +00:00
Daniel Stenberg
1f9b0e70ab Based on Joerg Mueller-Tolk's patch, this introduces support for
CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL
2003-09-04 10:55:20 +00:00
Daniel Stenberg
8fae12b2f1 1. store the httpproxycode in the loop after it is parsed
2. made Curl_http_auth_act() reset 'authavail' unconditionally
2003-09-04 10:18:12 +00:00
Daniel Stenberg
7410210f19 avoid proxy (and other) auth if no user+password is given 2003-09-04 10:08:53 +00:00
Daniel Stenberg
40e6b12cca added the missing share-functions, pointed out by Edward Chan 2003-09-04 10:04:15 +00:00
Daniel Stenberg
f2d422235b Early Ehlinger's CURLOPT_FTP_RESPONSE_TIMEOUT patch applied. 2003-09-03 22:02:40 +00:00
Daniel Stenberg
52ceab5e41 Re-arranged code to make the proxy-CONNECT loop able to do some of the
authentication negotiations needed for NTLM, Digest etc.
2003-09-03 21:51:28 +00:00
Daniel Stenberg
cafcc242e6 Joerg Mueller-Tolk's fix to better deal with user+passwords for proxies 2003-09-03 21:47:41 +00:00
Daniel Stenberg
2ad0a7d20f minor fix to make better bail-out check 2003-09-03 21:44:59 +00:00
Daniel Stenberg
481094db90 warn if no CN is available if verify is only set to 1 2003-09-03 20:47:17 +00:00
Daniel Stenberg
f7db3023a8 wrap at 80 cols 2003-09-02 07:48:58 +00:00
Daniel Stenberg
070cd2b52f Henrik Storner's update to make libcurl work with OpenLDAP 2.1.22 (current).
Also reported to work with OpenLDAP 2.0.26.
2003-09-01 08:23:31 +00:00
Daniel Stenberg
5629eeaec2 The error buffer was not getting filled when Curl_wait_for_resolv() fails.
Jeff Pohlmeyer fixed.
2003-09-01 08:21:08 +00:00
Daniel Stenberg
46c2bc4bb6 typecase to please the compiler gods 2003-08-29 08:43:21 +00:00
Daniel Stenberg
3938e0f58b typecast to prevent compiler warning 2003-08-29 08:43:06 +00:00
Daniel Stenberg
fa162e8feb CURLOPT_BUFFERSIZE must not be smaller than 0 (zero) as that is impossible
for us to deal with
2003-08-28 11:28:55 +00:00
Daniel Stenberg
8feb5110b5 only do chmod if there's a file present 2003-08-28 10:39:36 +00:00
Daniel Stenberg
32899f8309 added the strcasecmp() proto here (moved from setup.h), as this is the
only file within libcurl to use that function
2003-08-24 14:29:06 +00:00
Daniel Stenberg
dc7c6d1030 removed the strcasecmp() proto from here, and moved it to the strequal.c
file instead
2003-08-24 14:28:15 +00:00
Daniel Stenberg
4459d3b434 have cwd_and_mkd prefixed with ftp_ to make it appear as a ftp-only
function
2003-08-22 12:35:18 +00:00
Daniel Stenberg
7e7d89471a use proper type to prevent compiler warning 2003-08-22 12:25:47 +00:00
Daniel Stenberg
e67d15b50e Vincent Sanders provided a fix for name resolving when linked with uClibc. 2003-08-21 12:07:47 +00:00
Daniel Stenberg
5974309d10 CURLINFO_RESPONSE_CODE replaces CURLINFO_HTTP_CODE 2003-08-20 15:42:24 +00:00
Daniel Stenberg
d00e4a377b store the FTP response code in the httpcode variable 2003-08-20 15:41:45 +00:00
Daniel Stenberg
afc6ade2b9 removed the goto and re-indented slightly 2003-08-20 15:40:21 +00:00
Daniel Stenberg
734e8d6229 transfer fix for multi interface 2003-08-20 15:39:49 +00:00
Daniel Stenberg
61629d2c86 made curl_multi_info_read() set 'msgs_in_queue' to 0 even when it returns
NULL!
2003-08-20 13:49:46 +00:00
Daniel Stenberg
b1da98170f make sure the 'done' variable is always set to something in the
Curl_is_resolved() function
2003-08-19 23:23:45 +00:00
Daniel Stenberg
fb3eee5f0b Respect HAVE_LONGLONG to support 'long long' 2003-08-19 15:37:07 +00:00
Daniel Stenberg
a8c78cbbb0 CRYPTO_cleanup_all_ex_data() is not present in all OpenSSL versions so
we need to check for its presence in the configure script
2003-08-19 09:56:16 +00:00
Daniel Stenberg
33cf204e9a don't set done==TRUE if the host name doesn't resolve 2003-08-19 09:29:59 +00:00
Daniel Stenberg
dafc652f63 Loren Kirkby pointed out that we need to call CRYPTO_cleanup_all_ex_data()
when we cleanup the SSL stuff to not leak any memory.

I wish this was documented anywhere.
2003-08-19 07:51:09 +00:00
Daniel Stenberg
394faaeb97 setting WRITEFUNCTION or READFUNCTION to NULL will now reset the callback
pointers to the internal default functions
2003-08-17 13:32:37 +00:00
Daniel Stenberg
a10581d459 Possible code for large file support, added within #if 0 so far. 2003-08-14 22:42:18 +00:00
Daniel Stenberg
acbcd68d89 Curl_SSL_InitSessions can return error, so check the return code and bail
out if necessary
2003-08-14 15:06:36 +00:00
Daniel Stenberg
4281470fca Curl_llist_destroy() checks the input for non-NULL 2003-08-14 15:06:08 +00:00
Daniel Stenberg
68a4aa6773 new proto for Curl_hash_init 2003-08-14 15:05:25 +00:00
Daniel Stenberg
905b160097 1. check allocs
2. don't leave allocated memory behind when returning error
2003-08-14 15:05:13 +00:00
Daniel Stenberg
52596c339b return failure when the host cache creation fails 2003-08-14 15:02:25 +00:00
Daniel Stenberg
3454319c17 prevent memory leak when going out of memory 2003-08-14 14:20:03 +00:00
Daniel Stenberg
02c78ecf81 allow out-of-memory testing by setting a limit. That number of memory
allocation calls will succeed, the following will return NULL!
2003-08-14 14:19:36 +00:00
Daniel Stenberg
a3c1248214 Bugfix from Serge Semashko that fixes a bug introduced when we applied his
NTLM patch. Test case 84 and 85 verify this.
2003-08-12 08:20:16 +00:00
Daniel Stenberg
27619fc450 Added support for CURLINFO_HTTP_CONNECTCODE 2003-08-11 23:15:41 +00:00
Daniel Stenberg
96fecba190 bindlocal works for Windows! 2003-08-11 23:15:13 +00:00
Daniel Stenberg
3eb4ae031c Set the CURL_VERSION_ASYNCHDNS bit if USE_ARES is defined. 2003-08-11 23:13:09 +00:00
Daniel Stenberg
c7be232fee added include "http.h" to prevent a warning 2003-08-11 14:55:30 +00:00
Daniel Stenberg
84ed5e755a use safefree instead 2003-08-11 12:30:21 +00:00
Daniel Stenberg
acfa131c8c memory leak fixed when re-using connections with proxy user+passwd 2003-08-11 12:25:30 +00:00
Daniel Stenberg
7a19923afa Serge Semashko added CURLOPT_PROXYAUTH support, and now NTLM for proxies
work.
2003-08-11 11:47:45 +00:00
Daniel Stenberg
96e217b496 the new cookie functions that require 'data' passed in 2003-08-11 09:56:06 +00:00
Daniel Stenberg
2dd1518d63 support sending off cookies without contents 2003-08-11 09:55:48 +00:00
Daniel Stenberg
168703b7bf Added some infof() calls, that require the data pointer so now several
cookie functions need that.

I also fixed the cookie loader to properly load and deal with cookies without
contents (or rather with a blank content).
2003-08-11 09:55:11 +00:00
Daniel Stenberg
8dd069604c Dirk Manske's bugfix for the share stuff 2003-08-11 06:30:02 +00:00
Daniel Stenberg
5dadbd094e don't claim the PASV connect is connected unless it *really* is! 2003-08-10 17:11:41 +00:00
Daniel Stenberg
514a8739b6 make sure the string is long enough 2003-08-08 17:56:47 +00:00
Daniel Stenberg
9273096a8a David Byron's fix for file:// URLs with drive letters included. 2003-08-08 17:12:04 +00:00
Daniel Stenberg
686c6133f8 chmod the cabundle file before we attempt to write to it, to make
make distcheck run fine
2003-08-08 11:13:18 +00:00
Daniel Stenberg
7954eee639 re-arranged the cwd/mkd stuff a bit 2003-08-08 09:55:16 +00:00
Daniel Stenberg
f9f1f0e316 Early Ehlinger's CURLOPT_FTP_CREATE_MISSING_DIRS patch was applied 2003-08-08 09:13:19 +00:00
Daniel Stenberg
6af73f417a use 644 for the chmod 2003-08-07 06:43:11 +00:00
Daniel Stenberg
32468a0072 argh, it wasn't *that* easy to generate the ca-bundle header in the build
dir instead of the source dir, reverting that change
2003-08-06 23:59:15 +00:00
Daniel Stenberg
bbe23945e4 fix the treatment of the variable width specifier '*', which caused a bug
in the urlglobbing just now, fixed in the debian bug tracker as Bug#203827
2003-08-06 22:32:47 +00:00
Daniel Stenberg
77ba0d3686 generate the ca-bundle.h in the build dir, and also make sure to chmod
the file in the dist-hook to make distcheck run fine
2003-08-06 22:14:16 +00:00
Daniel Stenberg
c704d1545c include "share.h" for the cookie sharing 2003-08-06 15:26:24 +00:00
Daniel Stenberg
62b65a5f20 make it build without ares support
make sure it set async false even when using ipv6 (made test case 20 fail
before)
2003-08-06 15:26:02 +00:00
Daniel Stenberg
256b9f31e1 more fix 2003-08-06 13:22:29 +00:00
Daniel Stenberg
a3037e1173 updated the ares instruction 2003-08-06 13:21:19 +00:00
Daniel Stenberg
f3e7a5d755 LDFLAGS fix to make the GSSAPI build again 2003-08-05 15:22:15 +00:00
Daniel Stenberg
5f0cba7775 added README.ares 2003-08-05 14:54:15 +00:00
Daniel Stenberg
673759fe7e how to build with ares 2003-08-05 14:52:31 +00:00
Daniel Stenberg
b73612392d ares awareness/usage/support added. If configure --enable-ares is used, we
build libcurl to use ares for asynch name resolves.
2003-08-05 14:40:59 +00:00
Daniel Stenberg
1e7e53c87e clean up the dir tree hierarchy in *_done() to make persistant connection
FTP use the correct directories!

Reported in bug report #783116
2003-08-05 13:04:10 +00:00
Daniel Stenberg
98ee12bc35 Jan Sundin reported a case where curl ignored a cookie that browsers don't,
which turned up to be due to the number of dots in the 'domain'. I've now
  made curl follow the the original netscape cookie spec less strict on that
  part.
2003-08-04 23:05:57 +00:00
Daniel Stenberg
41ae97e710 Dirk Manske's patch that introduces cookie support to the share interface. 2003-08-04 15:02:42 +00:00
Daniel Stenberg
f72ba7f79d Mark Fletcher provided an excellent bug report that identified a problem
with FOLLOWLOCATION and chunked transfer-encoding, as libcurl would not
 properly ignore the body contents of 3XX response that included the
 Location: header.
2003-08-03 22:18:14 +00:00
Daniel Stenberg
db9f87f697 When proxy authentication is used in a CONNECT request (as used for all SSL
connects and otherwise enforced tunnel-thru-proxy requests), the same
authentication header is also wrongly sent to the remote host.

The name and password can then be captured by an evil host and possibly get
used for malicious purposes.
2003-08-02 23:36:35 +00:00
Daniel Stenberg
d3e512c738 Jörg Müller-Tolk updated this to build fine with 7.10.6 2003-07-30 14:19:44 +00:00
Daniel Stenberg
e3b4dd08ff Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
style like other faked HTTP headers when NOBODY and HEADER are used.
2003-07-30 07:51:33 +00:00
Daniel Stenberg
1c35cbcc07 Reverted the 'filetime' struct field back to a 'long' as time_t is sometimes
unsigned and we want this to be able to hold -1 for illegal/unset values.
2003-07-30 07:22:28 +00:00