/*****************************************************************************
* http.c
*****************************************************************************
- * Copyright (C) 2001-2005 the VideoLAN team
+ * Copyright (C) 2001-2009 the VideoLAN team
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
#include <vlc_input.h>
#include <vlc_playlist.h>
-#ifdef HAVE_AVAHI_CLIENT
+#if 0 //def HAVE_AVAHI_CLIENT
#include "bonjour.h"
#if defined( WIN32 )
#define BONJOUR_LONGTEXT N_( "Advertise the stream with the Bonjour protocol." )
-vlc_module_begin();
- set_description( N_("HTTP stream output") );
- set_capability( "sout access", 0 );
- set_shortname( "HTTP" );
- add_shortcut( "http" );
- add_shortcut( "https" );
- add_shortcut( "mmsh" );
- set_category( CAT_SOUT );
- set_subcategory( SUBCAT_SOUT_ACO );
+vlc_module_begin ()
+ set_description( N_("HTTP stream output") )
+ set_capability( "sout access", 0 )
+ set_shortname( "HTTP" )
+ add_shortcut( "http" )
+ add_shortcut( "https" )
+ add_shortcut( "mmsh" )
+ set_category( CAT_SOUT )
+ set_subcategory( SUBCAT_SOUT_ACO )
add_string( SOUT_CFG_PREFIX "user", "", NULL,
- USER_TEXT, USER_LONGTEXT, true );
+ USER_TEXT, USER_LONGTEXT, true )
add_string( SOUT_CFG_PREFIX "pwd", "", NULL,
- PASS_TEXT, PASS_LONGTEXT, true );
+ PASS_TEXT, PASS_LONGTEXT, true )
add_string( SOUT_CFG_PREFIX "mime", "", NULL,
- MIME_TEXT, MIME_LONGTEXT, true );
+ MIME_TEXT, MIME_LONGTEXT, true )
add_string( SOUT_CFG_PREFIX "cert", "vlc.pem", NULL,
- CERT_TEXT, CERT_LONGTEXT, true );
+ CERT_TEXT, CERT_LONGTEXT, true )
add_string( SOUT_CFG_PREFIX "key", NULL, NULL,
- KEY_TEXT, KEY_LONGTEXT, true );
+ KEY_TEXT, KEY_LONGTEXT, true )
add_string( SOUT_CFG_PREFIX "ca", NULL, NULL,
- CA_TEXT, CA_LONGTEXT, true );
+ CA_TEXT, CA_LONGTEXT, true )
add_string( SOUT_CFG_PREFIX "crl", NULL, NULL,
- CRL_TEXT, CRL_LONGTEXT, true );
+ CRL_TEXT, CRL_LONGTEXT, true )
+#if 0 //def HAVE_AVAHI_CLIENT
add_bool( SOUT_CFG_PREFIX "bonjour", false, NULL,
BONJOUR_TEXT, BONJOUR_LONGTEXT, true);
- set_callbacks( Open, Close );
-vlc_module_end();
+#endif
+ set_callbacks( Open, Close )
+vlc_module_end ()
/*****************************************************************************
static ssize_t Write( sout_access_out_t *, block_t * );
static int Seek ( sout_access_out_t *, off_t );
+static int Control( sout_access_out_t *, int, va_list );
struct sout_access_out_sys_t
{
uint8_t *p_header;
bool b_header_complete;
-#ifdef HAVE_AVAHI_CLIENT
+#if 0 //def HAVE_AVAHI_CLIENT
void *p_bonjour;
#endif
};
psz_bind_addr = psz_parser = strdup( p_access->psz_path );
i_bind_port = 0;
- psz_file_name = NULL;
-
- while( *psz_parser && *psz_parser != ':' && *psz_parser != '/' )
- {
- psz_parser++;
- }
- if( *psz_parser == ':' )
- {
- *psz_parser = '\0';
- psz_parser++;
- i_bind_port = atoi( psz_parser );
- while( *psz_parser && *psz_parser != '/' )
- {
- psz_parser++;
- }
- }
- if( *psz_parser == '/' )
+ psz_parser = strchr( psz_bind_addr, '/' );
+ if( psz_parser )
{
+ psz_file_name = strdup( psz_parser );
*psz_parser = '\0';
- psz_parser++;
- psz_file_name = psz_parser;
}
-
- if( psz_file_name == NULL )
- {
+ else
psz_file_name = strdup( "/" );
- }
- else if( *psz_file_name != '/' )
- {
- char *p = psz_file_name;
- psz_file_name = malloc( strlen( p ) + 2 );
- strcpy( psz_file_name, "/" );
- strcat( psz_file_name, p );
+ if( psz_bind_addr[0] == '[' )
+ {
+ psz_bind_addr++;
+ psz_parser = strstr( psz_bind_addr, "]:" );
+ if( psz_parser )
+ {
+ *psz_parser = '\0';
+ i_bind_port = atoi( psz_parser + 2 );
+ }
+ psz_parser = psz_bind_addr - 1;
}
else
{
- psz_file_name = strdup( psz_file_name );
+ psz_parser = strrchr( psz_bind_addr, ':' );
+ if( psz_parser )
+ {
+ *psz_parser = '\0';
+ i_bind_port = atoi( psz_parser + 1 );
+ }
+ psz_parser = psz_bind_addr;
}
/* SSL support */
if( p_sys->p_httpd_host == NULL )
{
- msg_Err( p_access, "cannot listen on %s:%d",
+ msg_Err( p_access, "cannot listen on %s port %d",
psz_bind_addr, i_bind_port );
free( psz_file_name );
- free( psz_bind_addr );
+ free( psz_parser );
free( p_sys );
return VLC_EGENERIC;
}
- free( psz_bind_addr );
+ free( psz_parser );
if( p_access->psz_access && !strcmp( p_access->psz_access, "mmsh" ) )
{
return VLC_EGENERIC;
}
-#ifdef HAVE_AVAHI_CLIENT
+#if 0 //def HAVE_AVAHI_CLIENT
if( config_GetInt(p_this, SOUT_CFG_PREFIX "bonjour") )
{
char *psz_txt, *psz_name;
- playlist_t *p_playlist = pl_Yield( p_access );
+ playlist_t *p_playlist = pl_Hold( p_access );
char *psz_uri = input_item_GetURI( p_playlist->status.p_item->p_input );
char *psz_newuri = psz_uri;
? "_vlc-http._tcp" : "_vlc-https._tcp",
psz_name, i_bind_port, psz_txt );
free( psz_uri );
- free( (void *)psz_txt );
+ free( psz_txt );
if( p_sys->p_bonjour == NULL )
msg_Err( p_access, "unable to start requested Bonjour announce" );
p_access->pf_write = Write;
p_access->pf_seek = Seek;
-
-
- /* update p_sout->i_out_pace_nocontrol */
- p_access->p_sout->i_out_pace_nocontrol++;
+ p_access->pf_control = Control;
return VLC_SUCCESS;
}
sout_access_out_t *p_access = (sout_access_out_t*)p_this;
sout_access_out_sys_t *p_sys = p_access->p_sys;
-#ifdef HAVE_AVAHI_CLIENT
+#if 0 //def HAVE_AVAHI_CLIENT
if( p_sys->p_bonjour != NULL )
bonjour_stop_service( p_sys->p_bonjour );
#endif
- /* update p_sout->i_out_pace_nocontrol */
- p_access->p_sout->i_out_pace_nocontrol--;
-
httpd_StreamDelete( p_sys->p_httpd_stream );
httpd_HostDelete( p_sys->p_httpd_host );
free( p_sys );
}
+static int Control( sout_access_out_t *p_access, int i_query, va_list args )
+{
+ (void)p_access;
+
+ switch( i_query )
+ {
+ case ACCESS_OUT_CONTROLS_PACE:
+ *va_arg( args, bool * ) = false;
+ break;
+
+ default:
+ return VLC_EGENERIC;
+ }
+ return VLC_SUCCESS;
+}
+
/*****************************************************************************
* Write:
*****************************************************************************/
*****************************************************************************/
static int Seek( sout_access_out_t *p_access, off_t i_pos )
{
+ (void)i_pos;
msg_Warn( p_access, "HTTP sout access cannot seek" );
return VLC_EGENERIC;
}