summaryrefslogtreecommitdiff
path: root/dbgserver
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@redhat.com>2019-08-01 12:52:32 -0400
committerFrank Ch. Eigler <fche@redhat.com>2019-08-01 12:52:32 -0400
commit2547e80bbf649b5fd2740ff55de79d2736dc6184 (patch)
tree02029b0995494809dd3a283bc9b75f755655c84c /dbgserver
parentbe9c2dbfe5f3a35798dab7baf6a70a86df3c8e29 (diff)
downloadelfutils-2547e80bbf649b5fd2740ff55de79d2736dc6184.tar.gz
dbgclient: use thread-safe strtok_r() for tokenizing $DBGSERVER_URLS
Diffstat (limited to 'dbgserver')
-rw-r--r--dbgserver/dbgserver-client.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/dbgserver/dbgserver-client.c b/dbgserver/dbgserver-client.c
index 27d463cc..9c2cebd3 100644
--- a/dbgserver/dbgserver-client.c
+++ b/dbgserver/dbgserver-client.c
@@ -313,8 +313,9 @@ dbgclient_query_server (const unsigned char *build_id_bytes,
goto out1;
}
/* thereafter, goto out2 on error */
-
- char *server_url = strtok(server_urls, url_delim);
+
+ char *strtok_saveptr;
+ char *server_url = strtok_r(server_urls, url_delim, &strtok_saveptr);
/* Try the various servers sequentially. XXX: in parallel instead. */
while (server_url != NULL)
{
@@ -337,23 +338,18 @@ dbgclient_query_server (const unsigned char *build_id_bytes,
CURLcode curl_res = curl_easy_perform(session);
if (curl_res != CURLE_OK)
{
- server_url = strtok(NULL, url_delim);
+ server_url = strtok_r(NULL, url_delim,&strtok_saveptr);
continue; /* fail over to next server */
}
long resp_code = 500;
curl_res = curl_easy_getinfo(session, CURLINFO_RESPONSE_CODE, &resp_code);
- if (curl_res != CURLE_OK)
+ if ((curl_res != CURLE_OK) || (resp_code != 200))
{
- server_url = strtok(NULL, url_delim);
+ server_url = strtok_r(NULL, url_delim,&strtok_saveptr);
continue;
}
- if (resp_code != 200)
- {
- server_url = strtok(NULL, url_delim);
- continue; /* fail over to next server */
- }
-
+
time_t mtime;
curl_res = curl_easy_getinfo(session, CURLINFO_FILETIME, (void*) &mtime);
if (curl_res != CURLE_OK)