summaryrefslogtreecommitdiff
path: root/plugins/SmileyAdd/src
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-01-13 16:48:55 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-01-13 16:48:55 +0300
commit87a2660299edd64cbb6f6c92c33683e91a6d187c (patch)
treea1b0777ec5b8afc0c49fbb66cf6a122b5ac82c6d /plugins/SmileyAdd/src
parent21f52dbfa251d171b4cc9dc315e8736da2e2be08 (diff)
Netlib_GetHeader() - handful utility to avoid writing cycles
Diffstat (limited to 'plugins/SmileyAdd/src')
-rw-r--r--plugins/SmileyAdd/src/download.cpp31
1 files changed, 14 insertions, 17 deletions
diff --git a/plugins/SmileyAdd/src/download.cpp b/plugins/SmileyAdd/src/download.cpp
index ac9cefff92..e66b5ec069 100644
--- a/plugins/SmileyAdd/src/download.cpp
+++ b/plugins/SmileyAdd/src/download.cpp
@@ -87,24 +87,21 @@ bool InternetDownloadFile(const char *szUrl, char *szDest, HNETLIBCONN &hHttpDwn
else if (nlhrReply->resultCode == 302 || nlhrReply->resultCode == 301 || nlhrReply->resultCode == 307) { // page moved
// get the url for the new location and save it to szInfo
// look for the reply header "Location"
- for (int i = 0; i < nlhrReply->headersCount; i++) {
- if (!mir_strcmp(nlhrReply->headers[i].szName, "Location")) {
- size_t rlen = 0;
- if (nlhrReply->headers[i].szValue[0] == '/') {
- const char *szPref = strstr(szUrl, "://");
- szPref = szPref ? szPref + 3 : szUrl;
- const char *szPath = strchr(szPref, '/');
- rlen = szPath != nullptr ? szPath - szUrl : mir_strlen(szUrl);
- }
-
- szRedirUrl = (char*)mir_realloc(szRedirUrl, rlen + mir_strlen(nlhrReply->headers[i].szValue) * 3 + 1);
-
- strncpy(szRedirUrl, szUrl, rlen);
- mir_strcpy(szRedirUrl + rlen, nlhrReply->headers[i].szValue);
-
- nlhr.szUrl = szRedirUrl;
- break;
+ if (auto *pszUrl = Netlib_GetHeader(nlhrReply, "Location")) {
+ size_t rlen = 0;
+ if (pszUrl[0] == '/') {
+ const char *szPref = strstr(szUrl, "://");
+ szPref = szPref ? szPref + 3 : szUrl;
+ const char *szPath = strchr(szPref, '/');
+ rlen = szPath != nullptr ? szPath - szUrl : mir_strlen(szUrl);
}
+
+ szRedirUrl = (char *)mir_realloc(szRedirUrl, rlen + mir_strlen(pszUrl) * 3 + 1);
+
+ strncpy(szRedirUrl, szUrl, rlen);
+ mir_strcpy(szRedirUrl + rlen, pszUrl);
+
+ nlhr.szUrl = szRedirUrl;
}
}
else result = 1;