Created
August 25, 2013 21:25
-
-
Save kahrl/6336428 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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