]> git.sesse.net Git - vlc/commitdiff
raop: Add loop for request retry
authorMichael Hanselmann <public@hansmi.ch>
Tue, 21 Jul 2009 23:06:44 +0000 (01:06 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Wed, 29 Jul 2009 16:18:21 +0000 (19:18 +0300)
This loop will be used by authentication.

Signed-off-by: Michael Hanselmann <public@hansmi.ch>
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
modules/stream_out/raop.c

index 27d60a455fc2a92c76809fc2cdbe2c4cfdaf86a0..1e8c46779eec33e49ca361207660c34ef855aa52 100644 (file)
@@ -793,37 +793,43 @@ static int ExecRequest( vlc_object_t *p_this, const char *psz_method,
         goto error;
     }
 
-    /* Send request */
-    i_err = SendRequest( p_this, psz_method, psz_content_type, psz_body,
-                         p_req_headers);
-    if ( i_err != VLC_SUCCESS )
-        goto error;
-
-    /* Read status line */
-    i_status = ReadStatusLine( p_this );
-    if ( i_status < 0 )
+    while ( 1 )
     {
-        i_err = i_status;
-        goto error;
-    }
-
-    vlc_dictionary_clear( p_resp_headers, FreeHeader, NULL );
-
-    /* Read headers */
-    headers_done = 0;
-    while ( !headers_done )
-    {
-        i_err = ReadHeader( p_this, p_resp_headers, &headers_done );
+        /* Send request */
+        i_err = SendRequest( p_this, psz_method, psz_content_type, psz_body,
+                             p_req_headers);
         if ( i_err != VLC_SUCCESS )
             goto error;
-    }
 
-    if ( i_status != 200 )
-    {
-        msg_Err( p_this, "Request failed (%s), status is %d",
-                 p_sys->psz_last_status_line, i_status );
-        i_err = VLC_EGENERIC;
-        goto error;
+        /* Read status line */
+        i_status = ReadStatusLine( p_this );
+        if ( i_status < 0 )
+        {
+            i_err = i_status;
+            goto error;
+        }
+
+        vlc_dictionary_clear( p_resp_headers, FreeHeader, NULL );
+
+        /* Read headers */
+        headers_done = 0;
+        while ( !headers_done )
+        {
+            i_err = ReadHeader( p_this, p_resp_headers, &headers_done );
+            if ( i_err != VLC_SUCCESS )
+                goto error;
+        }
+
+        if ( i_status == 200 )
+            /* Request successful */
+            break;
+        else
+        {
+            msg_Err( p_this, "Request failed (%s), status is %d",
+                     p_sys->psz_last_status_line, i_status );
+            i_err = VLC_EGENERIC;
+            goto error;
+        }
     }
 
 error: