From 54840039f6b365f6c5d86d1394f3b520dd83a89a Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 17 Feb 2009 11:56:27 +0000 Subject: [http] Send authentication information whenever username is present Send authentication information if the username is present, even if the password is empty. --- src/net/tcp/http.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/net/tcp/http.c b/src/net/tcp/http.c index 0191750b..93ccfd3b 100644 --- a/src/net/tcp/http.c +++ b/src/net/tcp/http.c @@ -391,10 +391,10 @@ static void http_step ( struct process *process ) { const char *host = http->uri->host; const char *query = http->uri->query; const char *user = http->uri->user; - const char *password = http->uri->password; - size_t user_pw_len = ( ( user && password ) ? - ( strlen ( user ) + 1 /* ":" */ + - strlen ( password ) ) : 0 ); + const char *password = + ( http->uri->password ? http->uri->password : "" ); + size_t user_pw_len = ( user ? ( strlen ( user ) + 1 /* ":" */ + + strlen ( password ) ) : 0 ); size_t user_pw_base64_len = base64_encoded_len ( user_pw_len ); char user_pw[ user_pw_len + 1 /* NUL */ ]; char user_pw_base64[ user_pw_base64_len + 1 /* NUL */ ]; @@ -406,7 +406,7 @@ static void http_step ( struct process *process ) { process_del ( &http->process ); /* Construct authorisation, if applicable */ - if ( user_pw_len ) { + if ( user ) { char *buf = user_pw; ssize_t remaining = sizeof ( user_pw ); size_t len; @@ -435,11 +435,10 @@ static void http_step ( struct process *process ) { ( path ? path : "/" ), ( query ? "?" : "" ), ( query ? query : "" ), - ( user_pw_len ? + ( user ? "Authorization: Basic " : "" ), - ( user_pw_len ? - user_pw_base64 : "" ), - ( user_pw_len ? "\r\n" : "" ), + ( user ? user_pw_base64 : "" ), + ( user ? "\r\n" : "" ), host ) ) != 0 ) { http_done ( http, rc ); } -- cgit v1.2.3-55-g7522