X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Furllib.qc;h=9a5e0e7da274c8b1043f3f52ec838b03590919ad;hb=dbdc35464a18f62bf550a20eddac9ec16b0eacee;hp=2f7d0ee3ab4211609c20257b0f360b0021dee1bb;hpb=a8f44b0e98aedacaae872b937ee023e24fc30878;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/urllib.qc b/qcsrc/common/urllib.qc index 2f7d0ee3a..9a5e0e7da 100644 --- a/qcsrc/common/urllib.qc +++ b/qcsrc/common/urllib.qc @@ -13,6 +13,10 @@ .url_ready_func url_ready; .entity url_ready_pass; +// for multi handles +.float url_attempt; +.float url_mode; + entity url_fromid[NUM_URL_ID]; float autocvar__urllib_nextslot; @@ -335,18 +339,26 @@ void url_fputs(entity e, string s) void url_multi_ready(entity fh, entity me, float status) { float n; - if(status == URL_READY_ERROR) + if(status == URL_READY_ERROR || status < 0) { - me.cnt += 1; + if(status == -422) // Unprocessable Entity + { + print("uri_multi_ready: got HTTP error 422, data is in unusable format - not continuing\n"); + me.url_ready(fh, me.url_ready_pass, status); + strunzone(me.url_url); + remove(me); + return; + } + me.url_attempt += 1; n = tokenize_console(me.url_url); - if(n <= me.cnt) + if(n <= me.url_attempt) { me.url_ready(fh, me.url_ready_pass, status); strunzone(me.url_url); remove(me); return; } - url_single_fopen(argv(me.cnt), me.lip, url_multi_ready, me); + url_single_fopen(argv(me.url_attempt), me.url_mode, url_multi_ready, me); return; } me.url_ready(fh, me.url_ready_pass, status); @@ -366,8 +378,8 @@ void url_multi_fopen(string url, float mode, url_ready_func rdy, entity pass) me = spawn(); me.classname = "url_multi"; me.url_url = strzone(url); - me.cnt = 0; - me.lip = mode; + me.url_attempt = 0; + me.url_mode = mode; me.url_ready = rdy; me.url_ready_pass = pass; url_single_fopen(argv(0), mode, url_multi_ready, me);