Skip to content

Instantly share code, notes, and snippets.

@kahrl
Created August 25, 2013 21:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kahrl/6336428 to your computer and use it in GitHub Desktop.
Save kahrl/6336428 to your computer and use it in GitHub Desktop.
diff --git a/src/client.cpp b/src/client.cpp
index 380c25f..eaf578f 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -1672,9 +1672,14 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
file_requests.push_back(MediaRequest(name));
}
- std::string remote_media = "";
+ std::vector<std::string> remote_media;
try {
- remote_media = deSerializeString(is);
+ Strfnd sf(deSerializeString(is));
+ while (!sf.atend()) {
+ std::string baseurl = trim(sf.next(","));
+ if (baseurl != "")
+ remote_media.push_back(baseurl);
+ }
}
catch(SerializationError) {
// not supported by server or turned off
@@ -1687,18 +1692,21 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
// notify server we received everything
received_media();
}
- else if (remote_media == "" || !USE_CURL) {
+ else if (remote_media.empty() || !USE_CURL) {
request_media(file_requests);
}
else {
+ size_t j = 0;
for(std::list<MediaRequest>::iterator i = file_requests.begin();
i != file_requests.end(); ++i) {
HTTPFetchRequest fetchrequest;
- fetchrequest.url = remote_media + i->name;
+ fetchrequest.url = remote_media[j] + i->name;
fetchrequest.caller = HTTPFETCH_CALLER_CLIENTMEDIA;
fetchrequest.request_name = i->name;
fetchrequest.timeout = 0; // never times out
httpfetch_async(fetchrequest);
+ // Switch to next server in list
+ j = (j + 1) % remote_media.size();
}
}
ClientEvent event;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment