#include <vlc_input.h>
#include <vlc_playlist.h>
-
-#if 0 //def HAVE_AVAHI_CLIENT
- #include "bonjour.h"
-
- #if defined( WIN32 )
- #define DIRECTORY_SEPARATOR '\\'
- #else
- #define DIRECTORY_SEPARATOR '/'
- #endif
-#endif
-
#include <vlc_httpd.h>
/*****************************************************************************
#define MIME_TEXT N_("Mime")
#define MIME_LONGTEXT N_("MIME returned by the server (autodetected " \
"if not specified)." )
-#define BONJOUR_TEXT N_( "Advertise with Bonjour")
-#define BONJOUR_LONGTEXT N_( "Advertise the stream with the Bonjour protocol." )
vlc_module_begin ()
PASS_TEXT, PASS_LONGTEXT, true )
add_string( SOUT_CFG_PREFIX "mime", "",
MIME_TEXT, MIME_LONGTEXT, true )
-#if 0 //def HAVE_AVAHI_CLIENT
- add_bool( SOUT_CFG_PREFIX "bonjour", false,
- BONJOUR_TEXT, BONJOUR_LONGTEXT, true);
-#endif
set_callbacks( Open, Close )
vlc_module_end ()
int i_header_size;
uint8_t *p_header;
bool b_header_complete;
-
-#if 0 //def HAVE_AVAHI_CLIENT
- void *p_bonjour;
-#endif
};
/*****************************************************************************
config_ChainParse( p_access, SOUT_CFG_PREFIX, ppsz_sout_options, p_access->p_cfg );
const char *path = p_access->psz_path;
-#if 1
- /* Skip everything before / - backward compatibiltiy with VLC 1.1 */
path += strcspn( path, "/" );
if( path > p_access->psz_path )
{
port = NULL; /* IPv6 numeral */
if( port != p_access->psz_path )
{
- int len = port ? (port - p_access->psz_path)
- : (int)strlen( p_access->psz_path );
- msg_Err( p_access, "\"%.*s\" HTTP host ignored", len,
- p_access->psz_path );
- msg_Info( p_access,
- "Pass --http-host=IP on the command line instead." );
+ int len = (port ? port : path) - p_access->psz_path;
+ msg_Warn( p_access, "\"%.*s\" HTTP host might be ignored in "
+ "multiple-host configurations, use at your own risks.",
+ len, p_access->psz_path );
+ msg_Info( p_access, "Consider passing --http-host=IP on the "
+ "command line instead." );
+
+ char host[len + 1];
+ strncpy( host, p_access->psz_path, len );
+ host[len] = '\0';
+
+ var_Create( p_access, "http-host", VLC_VAR_STRING );
+ var_SetString( p_access, "http-host", host );
}
if( port != NULL )
{
- int len = path - ++port;
- msg_Err( p_access, "\"%.*s\" HTTP port ignored", len, port );
- msg_Info( p_access, "Pass --%s-port=%.*s on the command line "
- "instead.", strcasecmp( p_access->psz_access, "https" )
- ? "http" : "https", len, port );
+ /* int len = path - ++port;
+ msg_Info( p_access, "Consider passing --%s-port=%.*s on the "
+ "command line instead.",
+ strcasecmp( p_access->psz_access, "https" )
+ ? "http" : "https", len, port ); */
+ port++;
+
+ int bind_port = atoi( port );
+ if( bind_port > 0 )
+ {
+ const char *var = strcasecmp( p_access->psz_access, "https" )
+ ? "http-port" : "https-port";
+ var_Create( p_access, var, VLC_VAR_INTEGER );
+ var_SetInteger( p_access, var, bind_port );
+ }
}
}
-#endif
if( !*path )
path = "/";
p_sys->p_httpd_stream =
httpd_StreamNew( p_sys->p_httpd_host, path, psz_mime,
- psz_user, psz_pwd, NULL );
+ psz_user, psz_pwd );
free( psz_user );
free( psz_pwd );
free( psz_mime );
return VLC_EGENERIC;
}
-#if 0 //def HAVE_AVAHI_CLIENT
- if( var_InheritBool(p_this, SOUT_CFG_PREFIX "bonjour") )
- {
- char *psz_txt, *psz_name;
- playlist_t *p_playlist = pl_Get( p_access );
-
- char *psz_uri = input_item_GetURI( p_playlist->status.p_item->p_input );
- char *psz_newuri = psz_uri;
- psz_name = strrchr( psz_newuri, DIRECTORY_SEPARATOR );
- if( psz_name != NULL ) psz_name++;
- else psz_name = psz_newuri;
-
- if( asprintf( &psz_txt, "path=%s", path ) == -1 )
- {
- free( psz_uri );
- return VLC_ENOMEM;
- }
-
- p_sys->p_bonjour = bonjour_start_service( (vlc_object_t *)p_access,
- strcmp( p_access->psz_access, "https" )
- ? "_vlc-http._tcp" : "_vlc-https._tcp",
- psz_name, i_bind_port, psz_txt );
- free( psz_uri );
- free( psz_txt );
-
- if( p_sys->p_bonjour == NULL )
- msg_Err( p_access, "unable to start requested Bonjour announce" );
- }
- else
- p_sys->p_bonjour = NULL;
-#endif
-
p_sys->i_header_allocated = 1024;
p_sys->i_header_size = 0;
p_sys->p_header = xmalloc( p_sys->i_header_allocated );
sout_access_out_t *p_access = (sout_access_out_t*)p_this;
sout_access_out_sys_t *p_sys = p_access->p_sys;
-#if 0 //def HAVE_AVAHI_CLIENT
- if( p_sys->p_bonjour != NULL )
- bonjour_stop_service( p_sys->p_bonjour );
-#endif
-
httpd_StreamDelete( p_sys->p_httpd_stream );
httpd_HostDelete( p_sys->p_httpd_host );