* http.c
*****************************************************************************
* Copyright (C) 2001-2003 VideoLAN
- * $Id: http.c,v 1.11 2004/02/03 20:12:53 fenrir Exp $
+ * $Id: http.c,v 1.12 2004/03/03 13:25:53 fenrir Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
#include <vlc/input.h>
#include <vlc/sout.h>
-#include "httpd.h"
+#include "vlc_httpd.h"
#define FREE( p ) if( p ) { free( p); (p) = NULL; }
struct sout_access_out_sys_t
{
- httpd_t *p_httpd;
-
/* host */
httpd_host_t *p_httpd_host;
vlc_bool_t b_header_complete;
};
+#if 0
static struct
{
char *psz_ext;
}
return( "application/octet-stream" );
}
+#endif
+
/*****************************************************************************
* Open: open the file
*****************************************************************************/
int i_bind_port;
char *psz_file_name;
- char *psz_mime;
+ char *psz_mime = NULL;
if( !( p_sys = p_access->p_sys =
malloc( sizeof( sout_access_out_sys_t ) ) ) )
psz_file_name = strdup( psz_file_name );
}
- p_sys->p_httpd = httpd_Find( VLC_OBJECT(p_access), VLC_TRUE );
- if( !p_sys->p_httpd )
- {
- msg_Err( p_access, "cannot start httpd daemon" );
-
- free( psz_name );
- free( psz_file_name );
- free( p_sys );
- return( VLC_EGENERIC );
- }
-
- p_sys->p_httpd_host =
- p_sys->p_httpd->pf_register_host( p_sys->p_httpd,
- psz_bind_addr, i_bind_port );
-
- if( !p_sys->p_httpd_host )
+ p_sys->p_httpd_host = httpd_HostNew( VLC_OBJECT(p_access), psz_bind_addr, i_bind_port );
+ if( p_sys->p_httpd_host == NULL )
{
msg_Err( p_access, "cannot listen on %s:%d", psz_bind_addr, i_bind_port );
- httpd_Release( p_sys->p_httpd );
free( psz_name );
free( psz_file_name );
free( p_sys );
- return( VLC_EGENERIC );
+ return VLC_EGENERIC;
}
if( p_access->psz_access && !strcmp( p_access->psz_access, "mmsh" ) )
{
psz_mime = "video/x-ms-asf-stream";
}
- else
- {
- psz_mime = GetMime( psz_file_name );
- }
- p_sys->p_httpd_stream =
- p_sys->p_httpd->pf_register_stream( p_sys->p_httpd,
- psz_file_name,
- psz_mime,
- sout_cfg_find_value( p_access->p_cfg, "user" ),
- sout_cfg_find_value( p_access->p_cfg, "pwd" ) );
-
- if( !p_sys->p_httpd_stream )
+
+ p_sys->p_httpd_stream = httpd_StreamNew( p_sys->p_httpd_host,
+ psz_file_name, psz_mime,
+ sout_cfg_find_value( p_access->p_cfg, "user" ),
+ sout_cfg_find_value( p_access->p_cfg, "pwd" ) );
+ if( p_sys->p_httpd_stream == NULL )
{
msg_Err( p_access, "cannot add stream %s", psz_file_name );
- p_sys->p_httpd->pf_unregister_host( p_sys->p_httpd, p_sys->p_httpd_host );
- httpd_Release( p_sys->p_httpd );
+ httpd_HostDelete( p_sys->p_httpd_host );
free( psz_name );
free( psz_file_name );
free( p_sys );
-
- return( VLC_EGENERIC );
+ return VLC_EGENERIC;
}
free( psz_file_name );
sout_access_out_t *p_access = (sout_access_out_t*)p_this;
sout_access_out_sys_t *p_sys = p_access->p_sys;
- p_sys->p_httpd->pf_unregister_stream( p_sys->p_httpd, p_sys->p_httpd_stream );
- p_sys->p_httpd->pf_unregister_host( p_sys->p_httpd, p_sys->p_httpd_host );
-
- httpd_Release( p_sys->p_httpd );
+ httpd_StreamDelete( p_sys->p_httpd_stream );
+ httpd_HostDelete( p_sys->p_httpd_host );
FREE( p_sys->p_header );
- msg_Info( p_access, "Close" );
+ msg_Dbg( p_access, "Close" );
free( p_sys );
}
{
p_sys->b_header_complete = VLC_TRUE;
- p_sys->p_httpd->pf_header_stream( p_sys->p_httpd,
- p_sys->p_httpd_stream,
- p_sys->p_header, p_sys->i_header_size );
+ httpd_StreamHeader( p_sys->p_httpd_stream, p_sys->p_header, p_sys->i_header_size );
}
- /* send data */
- i_err = p_sys->p_httpd->pf_send_stream( p_sys->p_httpd, p_sys->p_httpd_stream,
- p_buffer->p_buffer, p_buffer->i_size );
+
+ /* send data */
+ i_err = httpd_StreamSend( p_sys->p_httpd_stream, p_buffer->p_buffer, p_buffer->i_size );
p_next = p_buffer->p_next;
sout_BufferDelete( p_access->p_sout, p_buffer );