]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/urllib.qc
Fix compilation with gmqcc.
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / urllib.qc
index 2f7d0ee3ab4211609c20257b0f360b0021dee1bb..9a5e0e7da274c8b1043f3f52ec838b03590919ad 100644 (file)
 .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);