diff options
author | Michał Cichoń <thedmd@interia.pl> | 2011-11-12 14:22:42 +0100 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2011-11-12 14:23:49 +0100 |
commit | 826f08af2e010c30063cbb29dc529cb8992b6b86 (patch) | |
tree | 2e0937b9b8b13f2a5f11790efb046415541ddad3 | |
parent | b3fcb394e5a4c927cb3e29aa9d351fa9f57c2d15 (diff) | |
download | pianobar-826f08af2e010c30063cbb29dc529cb8992b6b86.tar.gz pianobar-826f08af2e010c30063cbb29dc529cb8992b6b86.tar.bz2 pianobar-826f08af2e010c30063cbb29dc529cb8992b6b86.zip |
waitress: Add proxy authorization support again
Original patch slightly adjusted.
-rw-r--r-- | src/libwaitress/waitress.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/libwaitress/waitress.c b/src/libwaitress/waitress.c index 69c4d3a..851fa23 100644 --- a/src/libwaitress/waitress.c +++ b/src/libwaitress/waitress.c @@ -790,10 +790,18 @@ static WaitressReturn_t WaitressConnect (WaitressHandle_t *waith) { char buf[256]; size_t size; snprintf (buf, sizeof (buf), "CONNECT %s:%s HTTP/" - WAITRESS_HTTP_VERSION "\r\n\r\n", + WAITRESS_HTTP_VERSION "\r\n", waith->url.host, WaitressDefaultPort (&waith->url)); WaitressOrdinaryWrite (waith, buf, strlen (buf)); + /* write authorization headers */ + if (WaitressFormatAuthorization (waith, &waith->proxy, "Proxy-", + buf, WAITRESS_BUFFER_SIZE)) { + WaitressOrdinaryWrite (waith, buf, strlen (buf)); + } + + WaitressOrdinaryWrite (waith, "\r\n", 2); + WaitressOrdinaryRead (waith, buf, sizeof (buf)-1, &size); buf[size] = 0; if (WaitressParseStatusline (buf) != 200) { @@ -867,7 +875,9 @@ static WaitressReturn_t WaitressSendRequest (WaitressHandle_t *waith) { WAITRESS_BUFFER_SIZE)) { WRITE_RET (buf, strlen (buf)); } - if (WaitressFormatAuthorization (waith, &waith->proxy, "Proxy-", + /* don't leak proxy credentials to destination server if tls is used */ + if (!waith->url.tls && + WaitressFormatAuthorization (waith, &waith->proxy, "Proxy-", buf, WAITRESS_BUFFER_SIZE)) { WRITE_RET (buf, strlen (buf)); } |