diff options
author | George Hazan <ghazan@miranda.im> | 2020-01-13 16:48:55 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-01-13 16:48:55 +0300 |
commit | 87a2660299edd64cbb6f6c92c33683e91a6d187c (patch) | |
tree | a1b0777ec5b8afc0c49fbb66cf6a122b5ac82c6d /src/mir_app | |
parent | 21f52dbfa251d171b4cc9dc315e8736da2e2be08 (diff) |
Netlib_GetHeader() - handful utility to avoid writing cycles
Diffstat (limited to 'src/mir_app')
-rw-r--r-- | src/mir_app/src/mir_app.def | 1 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 1 | ||||
-rw-r--r-- | src/mir_app/src/netlib_http.cpp | 15 |
3 files changed, 11 insertions, 6 deletions
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); |