]> git.sesse.net Git - vlc/blobdiff - modules/access/rtsp/access.c
Another time "Remove useless test before a free".
[vlc] / modules / access / rtsp / access.c
index 1d4d0ccd422da053e25c244953bb88a7fafe46eb..d6305e4af351d6207ff838b255f65d257267d461 100644 (file)
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include <vlc/vlc.h>
-#include <vlc/input.h>
+#include <vlc_access.h>
+#include <vlc_interface.h>
 
-#include "network.h"
+#include <vlc_network.h>
 #include "rtsp.h"
 #include "real.h"
 
@@ -89,6 +94,8 @@ static int RtspConnect( void *p_userdata, char *psz_server, int i_port )
     if( p_sys->fd < 0 )
     {
         msg_Err( p_access, "cannot connect to %s:%d", psz_server, i_port );
+        intf_UserFatal( p_access, VLC_FALSE, _("Connection failed"),
+                        _("VLC could not connect to \"%s:%d\"."), psz_server, i_port );
         return VLC_EGENERIC;
     }
 
@@ -124,7 +131,7 @@ static int RtspReadLine( void *p_userdata, uint8_t *p_buffer, int i_buffer )
     if( psz ) strncpy( (char *)p_buffer, psz, i_buffer );
     else *p_buffer = 0;
 
-    if( psz ) free( psz );
+    free( psz );
     return 0;
 }
 
@@ -150,7 +157,13 @@ static int Open( vlc_object_t *p_this )
     char *psz_server = 0;
     int i_result;
 
-    if( !p_access->b_force ) return VLC_EGENERIC;
+    if( !p_access->psz_access || (
+        strncmp( p_access->psz_access, "rtsp", 4 ) &&
+        strncmp( p_access->psz_access, "pnm", 3 )  &&
+        strncmp( p_access->psz_access, "realrtsp", 8 ) ))
+    {
+            return VLC_EGENERIC;
+    }
 
     p_access->pf_read = NULL;
     p_access->pf_block = BlockRead;
@@ -215,17 +228,19 @@ static int Open( vlc_object_t *p_this )
 
 
             msg_Err( p_access, "rtsp session can not be established" );
+            intf_UserFatal( p_access, VLC_FALSE, _("Session failed"),
+                    _("The requested RTSP session could not be established.") );
             goto error;
         }
 
         p_sys->p_header = block_New( p_access, 4096 );
         p_sys->p_header->i_buffer =
-            rmff_dump_header( h, p_sys->p_header->p_buffer, 1024 );
+            rmff_dump_header( h, (char *)p_sys->p_header->p_buffer, 1024 );
         rmff_free_header( h );
     }
     else
     {
-        msg_Dbg( p_access, "only real/helix rtsp servers supported for now" );
+        msg_Warn( p_access, "only real/helix rtsp servers supported for now" );
         goto error;
     }
 
@@ -233,11 +248,11 @@ static int Open( vlc_object_t *p_this )
     var_Create( p_access, "realrtsp-caching",
                 VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
 
-    if( psz_server ) free( psz_server );
+    free( psz_server );
     return VLC_SUCCESS;
 
  error:
-    if( psz_server ) free( psz_server );
+    free( psz_server );
     Close( p_this );
     return VLC_EGENERIC;
 }
@@ -251,7 +266,7 @@ static void Close( vlc_object_t * p_this )
     access_sys_t *p_sys = p_access->p_sys;
 
     if( p_sys->p_rtsp ) rtsp_close( p_sys->p_rtsp );
-    if( p_sys->p_rtsp ) free( p_sys->p_rtsp );
+    free( p_sys->p_rtsp );
     free( p_sys );
 }
 
@@ -339,6 +354,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
         case ACCESS_SET_SEEKPOINT:
         case ACCESS_SET_PRIVATE_ID_STATE:
         case ACCESS_GET_META:
+        case ACCESS_GET_CONTENT_TYPE:
             return VLC_EGENERIC;
 
         default: