- Brian J. Murrell found out that Negotiate proxy authentication didn't work.

It happened because the code used the struct for server-based auth all the
  time for both proxy and server auth which of course was wrong.
This commit is contained in:
Daniel Stenberg 2009-02-24 08:30:09 +00:00
Родитель 2afb88e2ce
Коммит ea6531cf32
3 изменённых файлов: 13 добавлений и 4 удалений

Просмотреть файл

@ -6,6 +6,11 @@
Changelog
Daniel Stenberg (24 Feb 2009)
- Brian J. Murrell found out that Negotiate proxy authentication didn't work.
It happened because the code used the struct for server-based auth all the
time for both proxy and server auth which of course was wrong.
Daniel Stenberg (23 Feb 2009)
- After a bug reported by James Cheng I've made curl_easy_getinfo() for
CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD return

Просмотреть файл

@ -43,6 +43,7 @@ This release includes the following bugfixes:
o ease creation of libcurl Mac OS X Framework
o CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD are -1
if unknown
o Negotiate proxy authentication
This release includes the following known bugs:
@ -55,6 +56,6 @@ advice from friends like these:
Peter Sylvester, Chad Monroe, Markus Moeller, Yang Tse, Scott Cantor,
Patrick Scott, Hidemoto Nakada, Jocelyn Jaubert, Andre Guibert de Bruet,
Kamil Dudka, Patrik Thunstrom, Linus Nielsen Feltzing, Mark Incley,
Daniel Johnson, James Cheng
Daniel Johnson, James Cheng, Brian J. Murrell
Thanks! (and sorry if I forgot to mention someone)

Просмотреть файл

@ -516,6 +516,10 @@ output_auth_headers(struct connectdata *conn,
struct SessionHandle *data = conn->data;
const char *auth=NULL;
CURLcode result = CURLE_OK;
#ifdef HAVE_GSSAPI
struct negotiatedata *negdata = proxy?
&data->state.proxyneg:&data->state.negotiate;
#endif
#ifndef CURL_DISABLE_CRYPTO_AUTH
(void)request;
@ -524,14 +528,13 @@ output_auth_headers(struct connectdata *conn,
#ifdef HAVE_GSSAPI
if((authstatus->picked == CURLAUTH_GSSNEGOTIATE) &&
data->state.negotiate.context &&
!GSS_ERROR(data->state.negotiate.status)) {
negdata->context && !GSS_ERROR(negdata->status)) {
auth="GSS-Negotiate";
result = Curl_output_negotiate(conn, proxy);
if(result)
return result;
authstatus->done = TRUE;
data->state.negotiate.state = GSS_AUTHSENT;
negdata->state = GSS_AUTHSENT;
}
else
#endif