]> git.sesse.net Git - vlc/blobdiff - modules/access/rtsp/rtsp.c
Removes trailing spaces. Removes tabs.
[vlc] / modules / access / rtsp / rtsp.c
index 419018bfc400e8bb531646a7a64507e72f3537b4..67fbf409b7ce4d70df9922c86ee31808cfed6d8a 100644 (file)
@@ -4,7 +4,7 @@
  *****************************************************************************
  * Copyright (C) 2002-2004 the xine project
  * Copyright (C) 2005 VideoLAN
- * $Id: file.c 10310 2005-03-11 22:36:40Z anil $
+ * $Id$
  *
  * Authors: Gildas Bazin <gbazin@videolan.org>
  *          Adapted from xine which itself adapted it from joschkas real tools.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
-#include <stdio.h>
-#include <stdlib.h>
 
 #include <vlc/vlc.h>
 
@@ -89,7 +87,7 @@ static char *rtsp_get( rtsp_client_t *rtsp )
   char *psz_buffer = malloc( BUF_SIZE );
   char *psz_string = NULL;
 
-  if( rtsp->pf_read_line( rtsp->p_userdata, psz_buffer, BUF_SIZE ) >= 0 )
+  if( rtsp->pf_read_line( rtsp->p_userdata, (uint8_t*)psz_buffer, (unsigned int)BUF_SIZE ) >= 0 )
   {
     //printf( "<< '%s'\n", psz_buffer );
       psz_string = strdup( psz_buffer );
@@ -103,10 +101,10 @@ static char *rtsp_get( rtsp_client_t *rtsp )
 /*
  * rtsp_put puts a line on stream
  */
+
 static int rtsp_put( rtsp_client_t *rtsp, const char *psz_string )
 {
-    int i_buffer = strlen( psz_string );
+    unsigned int i_buffer = strlen( psz_string );
     char *psz_buffer = malloc( i_buffer + 3 );
     int i_ret;
 
@@ -114,7 +112,7 @@ static int rtsp_put( rtsp_client_t *rtsp, const char *psz_string )
     psz_buffer[i_buffer] = '\r'; psz_buffer[i_buffer+1] = '\n';
     psz_buffer[i_buffer+2] = 0;
 
-    i_ret = rtsp->pf_write( rtsp->p_userdata, psz_buffer, i_buffer + 2 );
+    i_ret = rtsp->pf_write( rtsp->p_userdata, (uint8_t*)psz_buffer, i_buffer + 2 );
 
     free( psz_buffer );
     return i_ret;
@@ -128,7 +126,7 @@ static int rtsp_get_status_code( rtsp_client_t *rtsp, const char *psz_string )
 {
     char psz_buffer[4];
     int i_code = 0;
+
     if( !strncmp( psz_string, "RTSP/1.0", sizeof("RTSP/1.0") - 1 ) )
     {
         memcpy( psz_buffer, psz_string + sizeof("RTSP/1.0"), 3 );
@@ -142,7 +140,7 @@ static int rtsp_get_status_code( rtsp_client_t *rtsp, const char *psz_string )
 
     if( i_code != 200 )
     {
-        fprintf( stderr, "librtsp: server responds: '%s'\n", psz_string );
+        //fprintf( stderr, "librtsp: server responds: '%s'\n", psz_string );
     }
 
     return i_code;
@@ -202,7 +200,7 @@ static void rtsp_schedule_standard( rtsp_client_t *rtsp )
 /*
  * get the answers, if server responses with something != 200, return NULL
  */
+
 static int rtsp_get_answers( rtsp_client_t *rtsp )
 {
     char *answer = NULL;
@@ -210,7 +208,7 @@ static int rtsp_get_answers( rtsp_client_t *rtsp )
     char **answer_ptr = rtsp->p_private->answers;
     int code;
     int ans_count = 0;
-  
+
     answer = rtsp_get( rtsp );
     if( !answer ) return 0;
     code = rtsp_get_status_code( rtsp, answer );
@@ -222,7 +220,7 @@ static int rtsp_get_answers( rtsp_client_t *rtsp )
 
       answer = rtsp_get( rtsp );
       if( !answer ) return 0;
-    
+
       if( !strncasecmp( answer, "Cseq:", 5 ) )
       {
           sscanf( answer, "%*s %u", &answer_seq );
@@ -239,8 +237,7 @@ static int rtsp_get_answers( rtsp_client_t *rtsp )
           char *buf = malloc( strlen(answer) );
           sscanf( answer, "%*s %s", buf );
           if( rtsp->p_private->server ) free( rtsp->p_private->server );
-          rtsp->p_private->server = strdup( buf );
-          free( buf );
+          rtsp->p_private->server = buf;
       }
       if( !strncasecmp( answer, "Session:", 8 ) )
       {
@@ -250,15 +247,15 @@ static int rtsp_get_answers( rtsp_client_t *rtsp )
           {
               if( strcmp( buf, rtsp->p_private->session ) )
               {
-                  fprintf( stderr, 
-                           "rtsp: warning: setting NEW session: %s\n", buf );
+                  //fprintf( stderr,
+                  //         "rtsp: warning: setting NEW session: %s\n", buf );
                   free( rtsp->p_private->session );
                   rtsp->p_private->session = strdup( buf );
               }
           }
           else
           {
-              fprintf( stderr, "setting session id to: %s\n", buf );
+              //fprintf( stderr, "setting session id to: %s\n", buf );
               rtsp->p_private->session = strdup( buf );
           }
           free( buf );
@@ -283,7 +280,7 @@ static int rtsp_get_answers( rtsp_client_t *rtsp )
 int rtsp_send_ok( rtsp_client_t *rtsp )
 {
     char cseq[16];
-  
+
     rtsp_put( rtsp, "RTSP/1.0 200 OK" );
     sprintf( cseq, "CSeq: %u", rtsp->p_private->cseq );
     rtsp_put( rtsp, cseq );
@@ -394,13 +391,13 @@ int rtsp_request_tearoff( rtsp_client_t *rtsp, const char *what )
  * read opaque data from stream
  */
 
-int rtsp_read_data( rtsp_client_t *rtsp, char *buffer, unsigned int size )
+int rtsp_read_data( rtsp_client_t *rtsp, uint8_t *buffer, unsigned int size )
 {
     int i, seq;
 
     if( size >= 4 )
     {
-        i= rtsp->pf_read( rtsp->p_userdata, buffer, 4 );
+        i = rtsp->pf_read( rtsp->p_userdata, (uint8_t*)buffer, (unsigned int) 4 );
         if( i < 4 ) return i;
 
         if( buffer[0]=='S' && buffer[1]=='E' && buffer[2]=='T' &&
@@ -418,13 +415,13 @@ int rtsp_read_data( rtsp_client_t *rtsp, char *buffer, unsigned int size )
 
                 if( !strncasecmp( rest, "Cseq:", 5 ) )
                     sscanf( rest, "%*s %u", &seq );
-            } while( strlen(rest) != 0 );
-
+            } while( *rest );
             free( rest );
+
             if( seq < 0 )
             {
-                fprintf(stderr, "warning: cseq not recognized!\n");
-                seq=1;
+                //fprintf(stderr, "warning: cseq not recognized!\n");
+                seq = 1;
             }
 
             /* lets make the server happy */
@@ -433,15 +430,16 @@ int rtsp_read_data( rtsp_client_t *rtsp, char *buffer, unsigned int size )
             sprintf( rest,"CSeq: %u", seq );
             rtsp_put( rtsp, rest );
             rtsp_put( rtsp, "" );
-            rtsp->pf_read( rtsp->p_userdata, buffer, size );
+            free( rest );
+            i = rtsp->pf_read( rtsp->p_userdata, (unsigned char*)buffer, size );
         }
         else
         {
-            i = rtsp->pf_read( rtsp->p_userdata, buffer + 4, size - 4 );
+            i = rtsp->pf_read( rtsp->p_userdata, (unsigned char*)buffer + 4, size - 4 );
             i += 4;
         }
     }
-    else i= rtsp->pf_read( rtsp->p_userdata, buffer, size );
+    else i = rtsp->pf_read( rtsp->p_userdata, (unsigned char*)buffer, size );
 
     //fprintf( stderr, "<< %d of %d bytes\n", i, size );
 
@@ -458,7 +456,7 @@ int rtsp_connect( rtsp_client_t *rtsp, const char *psz_mrl,
     rtsp_t *s;
     char *mrl_ptr;
     char *slash, *colon;
-    int hostend, pathbegin, i;
+    unsigned int hostend, pathbegin, i;
 
     if( !psz_mrl ) return -1;
     s = malloc( sizeof(rtsp_t) );
@@ -493,7 +491,7 @@ int rtsp_connect( rtsp_client_t *rtsp, const char *psz_mrl,
     colon = strchr( mrl_ptr, ':' );
 
     if( !slash ) slash = mrl_ptr + strlen(mrl_ptr) + 1;
-    if( !colon ) colon = slash; 
+    if( !colon ) colon = slash;
     if( colon > slash ) colon = slash;
 
     pathbegin = slash - mrl_ptr;
@@ -514,13 +512,14 @@ int rtsp_connect( rtsp_client_t *rtsp, const char *psz_mrl,
         if( s->port < 0 || s->port > 65535 ) s->port = 554;
     }
 
-    fprintf( stderr, "got mrl: %s %i %s\n", s->host, s->port, s->path );
+    free( mrl_ptr );
+    //fprintf( stderr, "got mrl: %s %i %s\n", s->host, s->port, s->path );
 
     s->s = rtsp->pf_connect( rtsp->p_userdata, s->host, s->port );
 
     if( s->s < 0 )
     {
-        fprintf(stderr, "rtsp: failed to connect to '%s'\n", s->host);
+        //fprintf(stderr, "rtsp: failed to connect to '%s'\n", s->host);
         rtsp_close( rtsp );
         return -1;
     }
@@ -545,7 +544,7 @@ int rtsp_connect( rtsp_client_t *rtsp, const char *psz_mrl,
 }
 
 /*
- * closes an rtsp connection 
+ * closes an rtsp connection
  */
 
 void rtsp_close( rtsp_client_t *rtsp )
@@ -561,6 +560,7 @@ void rtsp_close( rtsp_client_t *rtsp )
     if( rtsp->p_private->mrl ) free( rtsp->p_private->mrl );
     if( rtsp->p_private->session ) free( rtsp->p_private->session );
     if( rtsp->p_private->user_agent ) free( rtsp->p_private->user_agent );
+    if( rtsp->p_private->server ) free( rtsp->p_private->server );
     rtsp_free_answers( rtsp );
     rtsp_unschedule_all( rtsp );
     free( rtsp->p_private );
@@ -630,7 +630,7 @@ void rtsp_schedule_field( rtsp_client_t *rtsp, const char *string )
 }
 
 /*
- * removes the first scheduled field which prefix matches string. 
+ * removes the first scheduled field which prefix matches string.
  */
 
 void rtsp_unschedule_field( rtsp_client_t *rtsp, const char *string )