Commit 89fc7435 authored by Laurent Aimar's avatar Laurent Aimar

* http: Added 'Connection: Close' in the request. (Help with some http

         servers).
         Use atoll. (always defined).
parent c4c497c7
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* http.c: HTTP access plug-in * http.c: HTTP access plug-in
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2001, 2002 VideoLAN
* $Id: http.c,v 1.45 2003/09/10 15:50:25 zorglub Exp $ * $Id: http.c,v 1.46 2003/09/10 21:03:56 fenrir Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/input.h> #include <vlc/input.h>
...@@ -151,6 +150,7 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell ) ...@@ -151,6 +150,7 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
"Range: bytes="I64Fd"-\r\n" "Range: bytes="I64Fd"-\r\n"
HTTP_USERAGENT HTTP_USERAGENT
"%s" "%s"
"Connection: Close\r\n"
HTTP_END, HTTP_END,
p_access_data->psz_buffer, i_tell, p_access_data->psz_auth_string ); p_access_data->psz_buffer, i_tell, p_access_data->psz_auth_string );
} }
...@@ -160,6 +160,7 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell ) ...@@ -160,6 +160,7 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
"%s" "%s"
HTTP_USERAGENT HTTP_USERAGENT
"%s" "%s"
"Connection: Close\r\n"
HTTP_END, HTTP_END,
p_access_data->psz_buffer, p_access_data->psz_auth_string ); p_access_data->psz_buffer, p_access_data->psz_auth_string );
} }
...@@ -214,7 +215,6 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell ) ...@@ -214,7 +215,6 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
psz_parser += strlen("HTTP/1.x"); psz_parser += strlen("HTTP/1.x");
i_size -= strlen("HTTP/1.x"); i_size -= strlen("HTTP/1.x");
} }
else if( ( (size_t)i_size >= strlen("ICY") && else if( ( (size_t)i_size >= strlen("ICY") &&
!strncmp( psz_parser, "ICY", strlen("ICY") ) ) ) !strncmp( psz_parser, "ICY", strlen("ICY") ) ) )
...@@ -234,7 +234,7 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell ) ...@@ -234,7 +234,7 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
msg_Err( p_input, "invalid HTTP reply '%s'", psz_parser ); msg_Err( p_input, "invalid HTTP reply '%s'", psz_parser );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
/* Check for buggy Icecast servers */ /* Check for buggy Icecast servers */
if( strstr( psz_parser , "x-audiocast") ) if( strstr( psz_parser , "x-audiocast") )
{ {
...@@ -245,7 +245,7 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell ) ...@@ -245,7 +245,7 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
p_input->psz_demux = "mp3"; // FIXME strdup ? p_input->psz_demux = "mp3"; // FIXME strdup ?
} }
} }
/* Check the HTTP return code */ /* Check the HTTP return code */
i_code = atoi( (char*)psz_parser ); i_code = atoi( (char*)psz_parser );
msg_Dbg( p_input, "%s server replied: %i", msg_Dbg( p_input, "%s server replied: %i",
...@@ -325,18 +325,8 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell ) ...@@ -325,18 +325,8 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
if( !strcasecmp( psz_line, "Content-Length" ) ) if( !strcasecmp( psz_line, "Content-Length" ) )
{ {
off_t i_size = 0; off_t i_size = 0;
#ifdef HAVE_ATOLL
i_size = i_tell + atoll( psz_value );
#else
int sign = 1;
if( *psz_value == '-' ) sign = -1; i_size = i_tell + atoll( psz_value );
while( *psz_value >= '0' && *psz_value <= '9' )
{
i_size = i_size * 10 + *psz_value++ - '0';
}
i_size = i_tell + ( i_size * sign );
#endif
msg_Dbg( p_input, "stream size is "I64Fd, i_size ); msg_Dbg( p_input, "stream size is "I64Fd, i_size );
vlc_mutex_lock( &p_input->stream.stream_lock ); vlc_mutex_lock( &p_input->stream.stream_lock );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment