X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=modules%2Faccess%2Fmms%2Fmmstu.c;h=71c256047c1ab67902f57b566dc7301908049a87;hb=552e595131c5f1d66eba8e3c22c2b1c509be5153;hp=2e0641a8df23737d7cb1c5fb93fcb8620f6226d1;hpb=f7d8835aca6c438ea93e7e5f01f34bd691b0633b;p=vlc diff --git a/modules/access/mms/mmstu.c b/modules/access/mms/mmstu.c index 2e0641a8df..71c256047c 100644 --- a/modules/access/mms/mmstu.c +++ b/modules/access/mms/mmstu.c @@ -18,17 +18,16 @@ * * 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. *****************************************************************************/ /***************************************************************************** * Preamble *****************************************************************************/ -#include #include -#include -#include +#include + #include #ifdef HAVE_UNISTD_H @@ -40,14 +39,15 @@ #ifdef HAVE_SYS_TIME_H # include #endif -#ifdef HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif -#include "network.h" +#include +#include "vlc_url.h" #include "asf.h" #include "buffer.h" @@ -86,26 +86,6 @@ static int mms_HeaderMediaRead( access_t *, int ); static int mms_ReceivePacket( access_t * ); -/* - * XXX DON'T FREE MY MEMORY !!! XXX - * non mais :P - */ -/* - * Ok, ok, j'le ferai plus... - */ -/* - * Merci :)) - */ -/* - * Vous pourriez signer vos commentaires (m�e si on voit bien qui peut - * �rire ce genre de trucs :p), et �rire en anglais, bordel de - * merde :p. - */ -/* - * Alors la ouai �est fou les gens qui �rivent des commentaires sans les - * signer. Ca m�iterait un coup de pied dans le cul � :) - */ - int E_(MMSTUOpen)( access_t *p_access ) { access_sys_t *p_sys; @@ -132,6 +112,7 @@ int E_(MMSTUOpen)( access_t *p_access ) { msg_Err( p_access, "invalid server name" ); vlc_UrlClean( &p_sys->url ); + free( p_sys ); return VLC_EGENERIC; } if( p_sys->url.i_port <= 0 ) @@ -171,6 +152,7 @@ int E_(MMSTUOpen)( access_t *p_access ) { msg_Err( p_access, "cannot connect to server" ); vlc_UrlClean( &p_sys->url ); + free( p_sys ); return VLC_EGENERIC; } @@ -201,8 +183,7 @@ int E_(MMSTUOpen)( access_t *p_access ) if( MMSStart( p_access, 0xffffffff ) < 0 ) { msg_Err( p_access, "cannot start stream" ); - MMSClose( p_access ); - vlc_UrlClean( &p_sys->url ); + E_(MMSTUClose) ( p_access ); return VLC_EGENERIC; } return VLC_SUCCESS; @@ -458,7 +439,7 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto ) /* *** Open a TCP connection with server *** */ msg_Dbg( p_access, "waiting for connection..." ); - p_sys->i_handle_tcp = net_OpenTCP( p_access, p_url->psz_host, p_url->i_port ); + p_sys->i_handle_tcp = net_ConnectTCP( p_access, p_url->psz_host, p_url->i_port ); if( p_sys->i_handle_tcp < 0 ) { msg_Err( p_access, "failed to open a connection (tcp)" ); @@ -479,8 +460,8 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto ) return VLC_EGENERIC; } - p_sys->i_handle_udp = net_OpenUDP( p_access, p_sys->sz_bind_addr, - 7000, "", 0 ); + p_sys->i_handle_udp = net_ListenUDP1( (vlc_object_t *)p_access, p_sys->sz_bind_addr, + 7000 ); if( p_sys->i_handle_udp < 0 ) { msg_Err( p_access, "failed to open a connection (udp)" ); @@ -649,10 +630,10 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto ) switch( GetDWLE( p_sys->p_cmd + MMS_CMD_HEADERSIZE ) ) { case 0x0001: - msg_Dbg( p_access, "Media file name/path accepted" ); + msg_Dbg( p_access, "media file name/path accepted" ); break; case 0x0002: - msg_Dbg( p_access, "Authentication accepted" ); + msg_Dbg( p_access, "authentication accepted" ); break; case -1: default: @@ -677,10 +658,12 @@ static int MMSOpen( access_t *p_access, vlc_url_t *p_url, int i_proto ) GetDWLE( p_sys->p_cmd + MMS_CMD_HEADERSIZE + 60 ); msg_Dbg( p_access, - "answer 0x06 flags:0x%8.8x media_length:%ds packet_length:%d packet_count:%d max_bit_rate:%d header_size:%d", + "answer 0x06 flags:0x%8.8x media_length:%us " + "packet_length:%ul packet_count:%d max_bit_rate:%d " + "header_size:%d", p_sys->i_flags_broadcast, p_sys->i_media_length, - p_sys->i_packet_length, + (unsigned)p_sys->i_packet_length, p_sys->i_packet_count, p_sys->i_max_bit_rate, p_sys->i_header_size ); @@ -867,7 +850,7 @@ static int MMSStart( access_t *p_access, uint32_t i_packet ) { /* get a packet */ mms_HeaderMediaRead( p_access, MMS_PACKET_MEDIA ); - msg_Dbg( p_access, "Streaming started" ); + msg_Dbg( p_access, "streaming started" ); return( 0 ); } } @@ -911,14 +894,14 @@ static void MMSClose( access_t *p_access ) net_Close( p_sys->i_handle_udp ); } - FREE( p_sys->p_cmd ); - FREE( p_sys->p_media ); - FREE( p_sys->p_header ); + FREENULL( p_sys->p_cmd ); + FREENULL( p_sys->p_media ); + FREENULL( p_sys->p_header ); - FREE( p_sys->psz_server_version ); - FREE( p_sys->psz_tool_version ); - FREE( p_sys->psz_update_player_url ); - FREE( p_sys->psz_encryption_type ); + FREENULL( p_sys->psz_server_version ); + FREENULL( p_sys->psz_tool_version ); + FREENULL( p_sys->psz_update_player_url ); + FREENULL( p_sys->psz_encryption_type ); } /**************************************************************************** @@ -926,15 +909,13 @@ static void MMSClose( access_t *p_access ) * MMS specific functions * ****************************************************************************/ -static int mms_CommandSend( access_t *p_access, - int i_command, - uint32_t i_prefix1, uint32_t i_prefix2, - uint8_t *p_data, int i_data_old ) +static int mms_CommandSend( access_t *p_access, int i_command, + uint32_t i_prefix1, uint32_t i_prefix2, + uint8_t *p_data, int i_data_old ) { var_buffer_t buffer; - - access_sys_t *p_sys = p_access->p_sys; - int i_data_by8; + access_sys_t *p_sys = p_access->p_sys; + int i_data_by8, i_ret; int i_data = i_data_old; while( i_data & 0x7 ) i_data++; @@ -966,10 +947,9 @@ static int mms_CommandSend( access_t *p_access, var_buffer_add64( &buffer, 0 ); /* send it */ - if( send( p_sys->i_handle_tcp, - buffer.p_data, - buffer.i_data - ( 8 - ( i_data - i_data_old ) ), - 0 ) == -1 ) + i_ret = net_Write( p_access, p_sys->i_handle_tcp, NULL, buffer.p_data, + buffer.i_data - ( 8 - ( i_data - i_data_old ) ) ); + if( i_ret != buffer.i_data - ( 8 - ( i_data - i_data_old ) ) ) { msg_Err( p_access, "failed to send command" ); return VLC_EGENERIC; @@ -1062,7 +1042,7 @@ static int NetFillBuffer( access_t *p_access ) if( i_ret < 0 ) { - msg_Err( p_access, "network select error (%s)", strerror(errno) ); + msg_Err( p_access, "network select error (%m)" ); return -1; } @@ -1083,7 +1063,7 @@ static int NetFillBuffer( access_t *p_access ) i_udp + MMS_BUFFER_SIZE/2, 0 ); } -#if MMS_DEBUG +#ifdef MMS_DEBUG if( p_sys->i_proto == MMS_PROTO_UDP ) { msg_Dbg( p_access, "filling buffer TCP:%d+%d UDP:%d+%d", @@ -1238,14 +1218,15 @@ static int mms_ParsePacket( access_t *p_access, if( i_packet_seq_num != p_sys->i_packet_seq_num ) { +#if 0 /* FIXME for udp could be just wrong order ? */ msg_Warn( p_access, "detected packet lost (%d != %d)", i_packet_seq_num, p_sys->i_packet_seq_num ); - p_sys->i_packet_seq_num = i_packet_seq_num; +#endif } - p_sys->i_packet_seq_num++; + p_sys->i_packet_seq_num = i_packet_seq_num + 1; if( i_packet_id == p_sys->i_header_packet_id_type ) { @@ -1273,7 +1254,7 @@ static int mms_ParsePacket( access_t *p_access, } else { - FREE( p_sys->p_media ); + FREENULL( p_sys->p_media ); p_sys->p_media = p_packet; p_sys->i_media = i_packet_length - 8; p_sys->i_media_used = 0;