From 87a2660299edd64cbb6f6c92c33683e91a6d187c Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 13 Jan 2020 16:48:55 +0300 Subject: Netlib_GetHeader() - handful utility to avoid writing cycles --- src/mir_app/src/mir_app.def | 1 + src/mir_app/src/mir_app64.def | 1 + src/mir_app/src/netlib_http.cpp | 15 +++++++++------ 3 files changed, 11 insertions(+), 6 deletions(-) (limited to 'src/mir_app') diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index a178beb036..d4d62e5f0a 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -256,6 +256,7 @@ Font_RegisterW @326 Options_AddPage @327 Options_Open @328 Options_OpenPage @329 +Netlib_GetHeader @330 Srmm_ModifyButton @331 Srmm_AddButton @332 Srmm_GetButtonState @333 diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index d6f40b51b8..bd99493d60 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -256,6 +256,7 @@ Font_RegisterW @326 Options_AddPage @327 Options_Open @328 Options_OpenPage @329 +Netlib_GetHeader @330 Srmm_ModifyButton @331 Srmm_AddButton @332 Srmm_GetButtonState @333 diff --git a/src/mir_app/src/netlib_http.cpp b/src/mir_app/src/netlib_http.cpp index 6764222929..5bd58996dd 100644 --- a/src/mir_app/src/netlib_http.cpp +++ b/src/mir_app/src/netlib_http.cpp @@ -105,10 +105,13 @@ static int RecvWithTimeoutTime(NetlibConnection *nlc, unsigned dwTimeoutTime, ch return Netlib_Recv(nlc, buf, len, flags); } -static char* NetlibHttpFindHeader(NETLIBHTTPREQUEST *nlhrReply, const char *hdr) +MIR_APP_DLL(char *) Netlib_GetHeader(const NETLIBHTTPREQUEST *nlhr, const char *hdr) { - for (int i=0; i < nlhrReply->headersCount; i++) { - NETLIBHTTPHEADER &p = nlhrReply->headers[i]; + if (nlhr == nullptr || hdr == nullptr) + return nullptr; + + for (int i=0; i < nlhr->headersCount; i++) { + NETLIBHTTPHEADER &p = nlhr->headers[i]; if (_stricmp(p.szName, hdr) == 0) return p.szValue; } @@ -552,7 +555,7 @@ MIR_APP_DLL(int) Netlib_SendHttpRequest(HNETLIBCONN nlc, NETLIBHTTPREQUEST *nlhr nlhrReply = NetlibHttpRecv(nlc, hflags, dflags); if (nlhrReply) { - char* tmpUrl = NetlibHttpFindHeader(nlhrReply, "Location"); + auto *tmpUrl = Netlib_GetHeader(nlhrReply, "Location"); if (tmpUrl) { size_t rlen = 0; if (tmpUrl[0] == '/') { @@ -825,8 +828,8 @@ MIR_APP_DLL(NETLIBHTTPREQUEST*) Netlib_HttpTransaction(HNETLIBUSER nlu, NETLIBHT NETLIBHTTPREQUEST nlhrSend = *nlhr; nlhrSend.flags |= NLHRF_SMARTREMOVEHOST; - bool doneUserAgentHeader = NetlibHttpFindHeader(nlhr, "User-Agent") != nullptr; - bool doneAcceptEncoding = NetlibHttpFindHeader(nlhr, "Accept-Encoding") != nullptr; + bool doneUserAgentHeader = Netlib_GetHeader(nlhr, "User-Agent") != nullptr; + bool doneAcceptEncoding = Netlib_GetHeader(nlhr, "Accept-Encoding") != nullptr; if (!doneUserAgentHeader || !doneAcceptEncoding) { nlhrSend.headers = (NETLIBHTTPHEADER*)mir_alloc(sizeof(NETLIBHTTPHEADER) * (nlhrSend.headersCount + 2)); memcpy(nlhrSend.headers, nlhr->headers, sizeof(NETLIBHTTPHEADER) * nlhr->headersCount); -- cgit v1.2.3