diff options
-rw-r--r-- | CHANGES | 7 | ||||
-rw-r--r-- | lib/http.c | 4 | ||||
-rw-r--r-- | tests/data/Makefile.am | 2 | ||||
-rw-r--r-- | tests/data/test246 | 86 |
4 files changed, 98 insertions, 1 deletions
@@ -7,6 +7,13 @@ Changelog +Daniel (4 April 2005) +- Hardeep Singh reported a problem doing HTTP POST with Digest. (It was + actually also affecting NTLM and Negotiate.) It turned out that if the + server responded with 100 Continue before the initial 401 response, libcurl + didn't take care of the response properly. Test case 245 and 246 added to + verify this. + Daniel (30 March 2005) - Andres Garcia modified the configure script to check for libgdi32 before libcrypto, to make the SSL check work fine on msys/mingw. diff --git a/lib/http.c b/lib/http.c index 308f9efc3..c689b6596 100644 --- a/lib/http.c +++ b/lib/http.c @@ -304,6 +304,10 @@ CURLcode Curl_http_auth_act(struct connectdata *conn) bool pickproxy = FALSE; CURLcode code = CURLE_OK; + if(100 == conn->keep.httpcode) + /* this is a transient response code, ignore */ + return CURLE_OK; + if(data->state.authproblem) return data->set.http_fail_on_error?CURLE_HTTP_RETURNED_ERROR:CURLE_OK; diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 16edae910..46a8465f1 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -33,7 +33,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test241 test242 test519 test214 test215 test216 test217 test218 \ test199 test225 test226 test227 test230 test231 test232 test228 \ test229 test233 test234 test235 test236 test520 test237 test238 \ - test239 test243 test245 + test239 test243 test245 test246 # The following tests have been removed from the dist since they no longer # work. We need to fix the test suite's FTPS server first, then bring them diff --git a/tests/data/test246 b/tests/data/test246 new file mode 100644 index 000000000..cfd12b0e7 --- /dev/null +++ b/tests/data/test246 @@ -0,0 +1,86 @@ +# Server-side +<reply> +<data> +HTTP/1.1 100 Continue
+Server: Microsoft-IIS/5.0
+Date: Sun, 03 Apr 2005 14:57:45 GMT
+X-Powered-By: ASP.NET
+
+HTTP/1.1 401 authentication please swsbounce
+Server: Microsoft-IIS/6.0
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 0
+
+</data> +<data1000> +HTTP/1.1 200 A OK
+Server: Microsoft-IIS/6.0
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 3
+
+ok +</data1000> + +<datacheck> +HTTP/1.1 100 Continue
+Server: Microsoft-IIS/5.0
+Date: Sun, 03 Apr 2005 14:57:45 GMT
+X-Powered-By: ASP.NET
+
+HTTP/1.1 401 authentication please swsbounce
+Server: Microsoft-IIS/6.0
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 0
+
+HTTP/1.1 200 A OK
+Server: Microsoft-IIS/6.0
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 3
+
+ok +</datacheck> + +</reply> + +# Client-side +<client> +# +<server> +http +</server> + <name> +HTTP POST --digest with server doing a 100 before 401 response + </name> + <command> +http://%HOSTIP:%HTTPPORT/246 -u auser:apasswd --digest -d "junkelijunk" +</command> +</client> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol nonewline=yes> +POST /246 HTTP/1.1
+User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
+Host: 127.0.0.1:%HTTPPORT
+Pragma: no-cache
+Accept: */*
+Content-Length: 0
+Content-Type: application/x-www-form-urlencoded
+
+POST /246 HTTP/1.1
+Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/246", response="761e6fc9a760c39d587092e8d840e740"
+User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13
+Host: 127.0.0.1:8990
+Pragma: no-cache
+Accept: */*
+Content-Length: 11
+Content-Type: application/x-www-form-urlencoded
+
+junkelijunk +</protocol> +</verify> |