From 3e0d298dfa998ffc0ea3b6687f8f04fba67c5e04 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 14 Jun 2023 18:45:33 +0300 Subject: Netlib: we don't change the "Connection" header if it's specified outside --- src/mir_app/src/netlib_http.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/mir_app/src/netlib_http.cpp b/src/mir_app/src/netlib_http.cpp index 260d3a6199..de6cf39c91 100644 --- a/src/mir_app/src/netlib_http.cpp +++ b/src/mir_app/src/netlib_http.cpp @@ -371,7 +371,6 @@ MIR_APP_DLL(int) Netlib_SendHttpRequest(HNETLIBCONN nlc, NETLIBHTTPREQUEST *nlhr char *szHost = nullptr, *szNewUrl = nullptr; char *pszProxyAuthHdr = nullptr, *pszAuthHdr = nullptr; - int i, doneHostHeader, doneContentLengthHeader, doneProxyAuthHeader, doneAuthHeader; int bytesSent = 0; bool lastFirstLineFail = false; @@ -475,14 +474,14 @@ MIR_APP_DLL(int) Netlib_SendHttpRequest(HNETLIBCONN nlc, NETLIBHTTPREQUEST *nlhr CMStringA httpRequest(FORMAT, "%s %s HTTP/1.%d\r\n", pszRequest, pszUrl, (nlhr->flags & NLHRF_HTTP11) != 0); // HTTP headers - doneHostHeader = doneContentLengthHeader = doneProxyAuthHeader = doneAuthHeader = 0; - for (i = 0; i < nlhr->headersCount; i++) { + bool doneHostHeader = false, doneContentLengthHeader = false, doneProxyAuthHeader = false, doneAuthHeader = false, doneConnection = false; + for (int i = 0; i < nlhr->headersCount; i++) { NETLIBHTTPHEADER &p = nlhr->headers[i]; - if (!mir_strcmpi(p.szName, "Host")) doneHostHeader = 1; - else if (!mir_strcmpi(p.szName, "Content-Length")) doneContentLengthHeader = 1; - else if (!mir_strcmpi(p.szName, "Proxy-Authorization")) doneProxyAuthHeader = 1; - else if (!mir_strcmpi(p.szName, "Authorization")) doneAuthHeader = 1; - else if (!mir_strcmpi(p.szName, "Connection")) continue; + if (!mir_strcmpi(p.szName, "Host")) doneHostHeader = true; + else if (!mir_strcmpi(p.szName, "Content-Length")) doneContentLengthHeader = true; + else if (!mir_strcmpi(p.szName, "Proxy-Authorization")) doneProxyAuthHeader = true; + else if (!mir_strcmpi(p.szName, "Authorization")) doneAuthHeader = true; + else if (!mir_strcmpi(p.szName, "Connection")) doneConnection = true; if (p.szValue == nullptr) continue; httpRequest.AppendFormat("%s: %s\r\n", p.szName, p.szValue); } @@ -492,7 +491,8 @@ MIR_APP_DLL(int) Netlib_SendHttpRequest(HNETLIBCONN nlc, NETLIBHTTPREQUEST *nlhr httpRequest.AppendFormat("%s: %s\r\n", "Proxy-Authorization", pszProxyAuthHdr); if (pszAuthHdr && !doneAuthHeader) httpRequest.AppendFormat("%s: %s\r\n", "Authorization", pszAuthHdr); - httpRequest.AppendFormat("%s: %s\r\n", "Connection", "Keep-Alive"); + if (!doneConnection) + httpRequest.AppendFormat("%s: %s\r\n", "Connection", "Keep-Alive"); httpRequest.AppendFormat("%s: %s\r\n", "Proxy-Connection", "Keep-Alive"); // Add Sticky Headers -- cgit v1.2.3