diff options
author | Frank Ch. Eigler <fche@redhat.com> | 2019-08-01 12:52:32 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@redhat.com> | 2019-08-01 12:52:32 -0400 |
commit | 2547e80bbf649b5fd2740ff55de79d2736dc6184 (patch) | |
tree | 02029b0995494809dd3a283bc9b75f755655c84c | |
parent | be9c2dbfe5f3a35798dab7baf6a70a86df3c8e29 (diff) | |
download | elfutils-2547e80bbf649b5fd2740ff55de79d2736dc6184.tar.gz |
dbgclient: use thread-safe strtok_r() for tokenizing $DBGSERVER_URLS
-rw-r--r-- | dbgserver/dbgserver-client.c | 18 |
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) |