.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;
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);
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);