diff options
author | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2009-12-30 21:29:30 +0000 |
---|---|---|
committer | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2009-12-30 21:29:30 +0000 |
commit | f40c8834766e41dca54947beb919e8b49c778351 (patch) | |
tree | 03d98de43eb64b3055d76f0aa24f5672780f1370 | |
parent | e87f4900c7b4801b71e47600f71e78d14f698744 (diff) | |
download | neon-f40c8834766e41dca54947beb919e8b49c778351.tar.gz |
Merge r1748 from trunk:
Clear sspi_token buffer after each request.
* src/ne_auth.c (request_sspi): Return NULL if sspi_token is not present.
* src/ne_auth.c (ah_post_send): Clear the buffered sspi_token.
Submitted by: Danil Shopyrin <danil visualsvn.com>
git-svn-id: http://svn.webdav.org/repos/projects/neon/branches/0.29.x@1772 61a7d7f5-40b7-0310-9c16-bb0ea8cb1845
-rw-r--r-- | src/ne_auth.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ne_auth.c b/src/ne_auth.c index d32d52e..ba6f0ec 100644 --- a/src/ne_auth.c +++ b/src/ne_auth.c @@ -604,7 +604,10 @@ static int verify_negotiate_response(struct auth_request *req, auth_session *ses #ifdef HAVE_SSPI static char *request_sspi(auth_session *sess, struct auth_request *request) { - return ne_concat(sess->protocol->name, " ", sess->sspi_token, "\r\n", NULL); + if (sess->sspi_token) + return ne_concat(sess->protocol->name, " ", sess->sspi_token, "\r\n", NULL); + else + return NULL; } static int sspi_challenge(auth_session *sess, int attempt, @@ -1464,6 +1467,14 @@ static int ah_post_send(ne_request *req, void *cookie, const ne_status *status) } #endif +#ifdef HAVE_SSPI + /* whatever happens: forget the SSPI token cached thus far */ + if (sess->sspi_token) { + ne_free(sess->sspi_token); + sess->sspi_token = NULL; + } +#endif + NE_DEBUG(NE_DBG_HTTPAUTH, "ah_post_send (#%d), code is %d (want %d), %s is %s\n", areq->attempt, status->code, sess->spec->status_code, |