Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
54b9a46e
Commit
54b9a46e
authored
Dec 08, 2007
by
Jean-Paul Saman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Check malloc return value and cleanup.
parent
29ec3042
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
31 deletions
+40
-31
modules/access/mms/mmsh.c
modules/access/mms/mmsh.c
+40
-31
No files found.
modules/access/mms/mmsh.c
View file @
54b9a46e
...
@@ -88,7 +88,11 @@ int E_(MMSHOpen)( access_t *p_access )
...
@@ -88,7 +88,11 @@ int E_(MMSHOpen)( access_t *p_access )
p_access
->
info
.
b_eof
=
VLC_FALSE
;
p_access
->
info
.
b_eof
=
VLC_FALSE
;
p_access
->
info
.
i_title
=
0
;
p_access
->
info
.
i_title
=
0
;
p_access
->
info
.
i_seekpoint
=
0
;
p_access
->
info
.
i_seekpoint
=
0
;
p_access
->
p_sys
=
p_sys
=
malloc
(
sizeof
(
access_sys_t
)
);
p_access
->
p_sys
=
p_sys
=
malloc
(
sizeof
(
access_sys_t
)
);
if
(
!
p_sys
)
return
VLC_ENOMEM
;
memset
(
p_sys
,
0
,
sizeof
(
access_sys_t
)
);
memset
(
p_sys
,
0
,
sizeof
(
access_sys_t
)
);
p_sys
->
i_proto
=
MMS_PROTO_HTTP
;
p_sys
->
i_proto
=
MMS_PROTO_HTTP
;
p_sys
->
fd
=
-
1
;
p_sys
->
fd
=
-
1
;
...
@@ -115,6 +119,7 @@ int E_(MMSHOpen)( access_t *p_access )
...
@@ -115,6 +119,7 @@ int E_(MMSHOpen)( access_t *p_access )
free
(
psz_http_proxy
);
free
(
psz_http_proxy
);
}
}
}
}
if
(
*
psz_proxy
)
if
(
*
psz_proxy
)
{
{
p_sys
->
b_proxy
=
VLC_TRUE
;
p_sys
->
b_proxy
=
VLC_TRUE
;
...
@@ -135,13 +140,15 @@ int E_(MMSHOpen)( access_t *p_access )
...
@@ -135,13 +140,15 @@ int E_(MMSHOpen)( access_t *p_access )
if
(
p_sys
->
b_proxy
)
if
(
p_sys
->
b_proxy
)
{
{
if
(
p_sys
->
proxy
.
psz_host
==
NULL
||
*
p_sys
->
proxy
.
psz_host
==
'\0'
)
if
(
(
p_sys
->
proxy
.
psz_host
==
NULL
)
||
(
*
p_sys
->
proxy
.
psz_host
==
'\0'
)
)
{
{
msg_Warn
(
p_access
,
"invalid proxy host"
);
msg_Warn
(
p_access
,
"invalid proxy host"
);
vlc_UrlClean
(
&
p_sys
->
proxy
);
vlc_UrlClean
(
&
p_sys
->
proxy
);
free
(
p_sys
);
free
(
p_sys
);
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
if
(
p_sys
->
proxy
.
i_port
<=
0
)
if
(
p_sys
->
proxy
.
i_port
<=
0
)
p_sys
->
proxy
.
i_port
=
80
;
p_sys
->
proxy
.
i_port
=
80
;
msg_Dbg
(
p_access
,
"Using http proxy %s:%d"
,
msg_Dbg
(
p_access
,
"Using http proxy %s:%d"
,
...
@@ -150,7 +157,8 @@ int E_(MMSHOpen)( access_t *p_access )
...
@@ -150,7 +157,8 @@ int E_(MMSHOpen)( access_t *p_access )
/* open a tcp connection */
/* open a tcp connection */
vlc_UrlParse
(
&
p_sys
->
url
,
p_access
->
psz_path
,
0
);
vlc_UrlParse
(
&
p_sys
->
url
,
p_access
->
psz_path
,
0
);
if
(
p_sys
->
url
.
psz_host
==
NULL
||
*
p_sys
->
url
.
psz_host
==
'\0'
)
if
(
(
p_sys
->
url
.
psz_host
==
NULL
)
||
(
*
p_sys
->
url
.
psz_host
==
'\0'
)
)
{
{
msg_Err
(
p_access
,
"invalid host"
);
msg_Err
(
p_access
,
"invalid host"
);
vlc_UrlClean
(
&
p_sys
->
proxy
);
vlc_UrlClean
(
&
p_sys
->
proxy
);
...
@@ -249,11 +257,6 @@ static int Control( access_t *p_access, int i_query, va_list args )
...
@@ -249,11 +257,6 @@ static int Control( access_t *p_access, int i_query, va_list args )
case
ACCESS_CAN_CONTROL_PACE
:
case
ACCESS_CAN_CONTROL_PACE
:
pb_bool
=
(
vlc_bool_t
*
)
va_arg
(
args
,
vlc_bool_t
*
);
pb_bool
=
(
vlc_bool_t
*
)
va_arg
(
args
,
vlc_bool_t
*
);
#if 0 /* Disable for now until we have a clock synchro algo
* which works with something else than MPEG over UDP */
*pb_bool = VLC_FALSE;
#endif
*
pb_bool
=
VLC_TRUE
;
*
pb_bool
=
VLC_TRUE
;
break
;
break
;
...
@@ -272,7 +275,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
...
@@ -272,7 +275,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
i_int
=
(
int
)
va_arg
(
args
,
int
);
i_int
=
(
int
)
va_arg
(
args
,
int
);
pb_bool
=
(
vlc_bool_t
*
)
va_arg
(
args
,
vlc_bool_t
*
);
pb_bool
=
(
vlc_bool_t
*
)
va_arg
(
args
,
vlc_bool_t
*
);
if
(
i_int
<
0
||
i_int
>
127
)
if
(
(
i_int
<
0
)
||
(
i_int
>
127
)
)
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
*
pb_bool
=
p_sys
->
asfh
.
stream
[
i_int
].
i_selected
?
VLC_TRUE
:
VLC_FALSE
;
*
pb_bool
=
p_sys
->
asfh
.
stream
[
i_int
].
i_selected
?
VLC_TRUE
:
VLC_FALSE
;
break
;
break
;
...
@@ -336,7 +339,7 @@ static int Seek( access_t *p_access, int64_t i_pos )
...
@@ -336,7 +339,7 @@ static int Seek( access_t *p_access, int64_t i_pos )
*****************************************************************************/
*****************************************************************************/
static
int
ReadRedirect
(
access_t
*
p_access
,
uint8_t
*
p
,
int
i_len
)
static
int
ReadRedirect
(
access_t
*
p_access
,
uint8_t
*
p
,
int
i_len
)
{
{
return
0
;
return
VLC_SUCCESS
;
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -349,14 +352,15 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
...
@@ -349,14 +352,15 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
size_t
i_data
=
0
;
size_t
i_data
=
0
;
if
(
p_access
->
info
.
b_eof
)
if
(
p_access
->
info
.
b_eof
)
return
0
;
return
VLC_SUCCESS
;
while
(
i_data
<
(
size_t
)
i_len
)
while
(
i_data
<
(
size_t
)
i_len
)
{
{
if
(
p_access
->
info
.
i_pos
<
p_sys
->
i_start
+
p_sys
->
i_header
)
if
(
p_access
->
info
.
i_pos
<
(
p_sys
->
i_start
+
p_sys
->
i_header
)
)
{
{
int
i_offset
=
p_access
->
info
.
i_pos
-
p_sys
->
i_start
;
int
i_offset
=
p_access
->
info
.
i_pos
-
p_sys
->
i_start
;
i_copy
=
__MIN
(
p_sys
->
i_header
-
i_offset
,
(
int
)((
size_t
)
i_len
-
i_data
)
);
i_copy
=
__MIN
(
p_sys
->
i_header
-
i_offset
,
(
int
)((
size_t
)
i_len
-
i_data
)
);
memcpy
(
&
p_buffer
[
i_data
],
&
p_sys
->
p_header
[
i_offset
],
i_copy
);
memcpy
(
&
p_buffer
[
i_data
],
&
p_sys
->
p_header
[
i_offset
],
i_copy
);
i_data
+=
i_copy
;
i_data
+=
i_copy
;
...
@@ -366,7 +370,6 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
...
@@ -366,7 +370,6 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
{
{
i_copy
=
__MIN
(
p_sys
->
i_packet_length
-
p_sys
->
i_packet_used
,
i_copy
=
__MIN
(
p_sys
->
i_packet_length
-
p_sys
->
i_packet_used
,
i_len
-
i_data
);
i_len
-
i_data
);
memcpy
(
&
p_buffer
[
i_data
],
memcpy
(
&
p_buffer
[
i_data
],
&
p_sys
->
p_packet
[
p_sys
->
i_packet_used
],
&
p_sys
->
p_packet
[
p_sys
->
i_packet_used
],
i_copy
);
i_copy
);
...
@@ -380,7 +383,6 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
...
@@ -380,7 +383,6 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
{
{
i_copy
=
__MIN
(
p_sys
->
asfh
.
i_min_data_packet_size
-
p_sys
->
i_packet_used
,
i_copy
=
__MIN
(
p_sys
->
asfh
.
i_min_data_packet_size
-
p_sys
->
i_packet_used
,
i_len
-
i_data
);
i_len
-
i_data
);
memset
(
&
p_buffer
[
i_data
],
0
,
i_copy
);
memset
(
&
p_buffer
[
i_data
],
0
,
i_copy
);
i_data
+=
i_copy
;
i_data
+=
i_copy
;
...
@@ -395,7 +397,7 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
...
@@ -395,7 +397,7 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
int
i_ret
=
-
1
;
int
i_ret
=
-
1
;
if
(
p_sys
->
b_broadcast
)
if
(
p_sys
->
b_broadcast
)
{
{
if
(
ck
.
i_type
==
0x4524
&&
ck
.
i_sequence
!=
0
)
if
(
(
ck
.
i_type
==
0x4524
)
&&
(
ck
.
i_sequence
!=
0
)
)
i_ret
=
Restart
(
p_access
);
i_ret
=
Restart
(
p_access
);
else
if
(
ck
.
i_type
==
0x4324
)
else
if
(
ck
.
i_type
==
0x4324
)
i_ret
=
Reset
(
p_access
);
i_ret
=
Reset
(
p_access
);
...
@@ -435,15 +437,15 @@ static int Restart( access_t *p_access )
...
@@ -435,15 +437,15 @@ static int Restart( access_t *p_access )
if
(
Describe
(
p_access
,
&
psz_location
)
)
if
(
Describe
(
p_access
,
&
psz_location
)
)
{
{
msg_Err
(
p_access
,
"describe failed"
);
msg_Err
(
p_access
,
"describe failed"
);
return
-
1
;
return
VLC_ENGENERIC
;
}
}
/* */
/* */
if
(
Start
(
p_access
,
0
)
)
if
(
Start
(
p_access
,
0
)
)
{
{
msg_Err
(
p_access
,
"Start failed"
);
msg_Err
(
p_access
,
"Start failed"
);
return
-
1
;
return
VLC_ENGENERIC
;
}
}
return
0
;
return
VLC_SUCCESS
;
}
}
static
int
Reset
(
access_t
*
p_access
)
static
int
Reset
(
access_t
*
p_access
)
{
{
...
@@ -463,7 +465,7 @@ static int Reset( access_t *p_access )
...
@@ -463,7 +465,7 @@ static int Reset( access_t *p_access )
/* Get the next header FIXME memory loss ? */
/* Get the next header FIXME memory loss ? */
GetHeader
(
p_access
);
GetHeader
(
p_access
);
if
(
p_sys
->
i_header
<=
0
)
if
(
p_sys
->
i_header
<=
0
)
return
-
1
;
return
VLC_ENGENERIC
;
E_
(
asf_HeaderParse
)(
&
p_sys
->
asfh
,
E_
(
asf_HeaderParse
)(
&
p_sys
->
asfh
,
p_sys
->
p_header
,
p_sys
->
i_header
);
p_sys
->
p_header
,
p_sys
->
i_header
);
...
@@ -495,7 +497,7 @@ static int Reset( access_t *p_access )
...
@@ -495,7 +497,7 @@ static int Reset( access_t *p_access )
/* */
/* */
p_sys
->
i_packet_used
=
0
;
p_sys
->
i_packet_used
=
0
;
p_sys
->
i_packet_length
=
0
;
p_sys
->
i_packet_length
=
0
;
return
0
;
return
VLC_SUCCESS
;
}
}
static
int
OpenConnection
(
access_t
*
p_access
)
static
int
OpenConnection
(
access_t
*
p_access
)
...
@@ -516,7 +518,9 @@ static int OpenConnection( access_t *p_access )
...
@@ -516,7 +518,9 @@ static int OpenConnection( access_t *p_access )
net_Printf
(
VLC_OBJECT
(
p_access
),
p_sys
->
fd
,
NULL
,
net_Printf
(
VLC_OBJECT
(
p_access
),
p_sys
->
fd
,
NULL
,
"GET http://%s:%d%s HTTP/1.0
\r\n
"
,
"GET http://%s:%d%s HTTP/1.0
\r\n
"
,
p_sys
->
url
.
psz_host
,
p_sys
->
url
.
i_port
,
p_sys
->
url
.
psz_host
,
p_sys
->
url
.
i_port
,
(
p_sys
->
url
.
psz_path
==
NULL
||
*
p_sys
->
url
.
psz_path
==
'\0'
)
?
"/"
:
p_sys
->
url
.
psz_path
);
(
(
p_sys
->
url
.
psz_path
==
NULL
)
||
(
*
p_sys
->
url
.
psz_path
==
'\0'
)
)
?
"/"
:
p_sys
->
url
.
psz_path
);
/* Proxy Authentication */
/* Proxy Authentication */
if
(
p_sys
->
proxy
.
psz_username
&&
*
p_sys
->
proxy
.
psz_username
)
if
(
p_sys
->
proxy
.
psz_username
&&
*
p_sys
->
proxy
.
psz_username
)
...
@@ -540,7 +544,9 @@ static int OpenConnection( access_t *p_access )
...
@@ -540,7 +544,9 @@ static int OpenConnection( access_t *p_access )
net_Printf
(
VLC_OBJECT
(
p_access
),
p_sys
->
fd
,
NULL
,
net_Printf
(
VLC_OBJECT
(
p_access
),
p_sys
->
fd
,
NULL
,
"GET %s HTTP/1.0
\r\n
"
"GET %s HTTP/1.0
\r\n
"
"Host: %s:%d
\r\n
"
,
"Host: %s:%d
\r\n
"
,
(
p_sys
->
url
.
psz_path
==
NULL
||
*
p_sys
->
url
.
psz_path
==
'\0'
)
?
"/"
:
p_sys
->
url
.
psz_path
,
(
(
p_sys
->
url
.
psz_path
==
NULL
)
||
(
*
p_sys
->
url
.
psz_path
==
'\0'
)
)
?
"/"
:
p_sys
->
url
.
psz_path
,
p_sys
->
url
.
psz_host
,
p_sys
->
url
.
i_port
);
p_sys
->
url
.
psz_host
,
p_sys
->
url
.
i_port
);
}
}
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
...
@@ -589,6 +595,7 @@ static int Describe( access_t *p_access, char **ppsz_location )
...
@@ -589,6 +595,7 @@ static int Describe( access_t *p_access, char **ppsz_location )
msg_Err
(
p_access
,
"failed to read answer"
);
msg_Err
(
p_access
,
"failed to read answer"
);
goto
error
;
goto
error
;
}
}
if
(
strncmp
(
psz
,
"HTTP/1."
,
7
)
)
if
(
strncmp
(
psz
,
"HTTP/1."
,
7
)
)
{
{
msg_Err
(
p_access
,
"invalid HTTP reply '%s'"
,
psz
);
msg_Err
(
p_access
,
"invalid HTTP reply '%s'"
,
psz
);
...
@@ -664,8 +671,8 @@ static int Describe( access_t *p_access, char **ppsz_location )
...
@@ -664,8 +671,8 @@ static int Describe( access_t *p_access, char **ppsz_location )
}
}
/* Handle the redirection */
/* Handle the redirection */
if
(
(
i_code
==
301
||
i_code
==
302
||
if
(
(
(
i_code
==
301
)
||
(
i_code
==
302
)
||
i_code
==
303
||
i_code
==
307
)
&&
(
i_code
==
303
)
||
(
i_code
==
307
)
)
&&
psz_location
&&
*
psz_location
)
psz_location
&&
*
psz_location
)
{
{
msg_Dbg
(
p_access
,
"redirection to %s"
,
psz_location
);
msg_Dbg
(
p_access
,
"redirection to %s"
,
psz_location
);
...
@@ -683,7 +690,8 @@ static int Describe( access_t *p_access, char **ppsz_location )
...
@@ -683,7 +690,8 @@ static int Describe( access_t *p_access, char **ppsz_location )
goto
error
;
goto
error
;
}
}
/* close this connection */
/* close this connection */
net_Close
(
p_sys
->
fd
);
p_sys
->
fd
=
-
1
;
net_Close
(
p_sys
->
fd
);
p_sys
->
fd
=
-
1
;
/* *** parse header and get stream and their id *** */
/* *** parse header and get stream and their id *** */
/* get all streams properties,
/* get all streams properties,
...
@@ -740,7 +748,7 @@ static void GetHeader( access_t *p_access )
...
@@ -740,7 +748,7 @@ static void GetHeader( access_t *p_access )
/*****************************************************************************
/*****************************************************************************
*
*
Start stream
*****************************************************************************/
*****************************************************************************/
static
int
Start
(
access_t
*
p_access
,
off_t
i_pos
)
static
int
Start
(
access_t
*
p_access
,
off_t
i_pos
)
{
{
...
@@ -748,7 +756,7 @@ static int Start( access_t *p_access, off_t i_pos )
...
@@ -748,7 +756,7 @@ static int Start( access_t *p_access, off_t i_pos )
int
i_streams
=
0
;
int
i_streams
=
0
;
int
i_streams_selected
=
0
;
int
i_streams_selected
=
0
;
int
i
;
int
i
;
char
*
psz
;
char
*
psz
=
NULL
;
msg_Dbg
(
p_access
,
"starting stream"
);
msg_Dbg
(
p_access
,
"starting stream"
);
...
@@ -803,7 +811,6 @@ static int Start( access_t *p_access, off_t i_pos )
...
@@ -803,7 +811,6 @@ static int Start( access_t *p_access, off_t i_pos )
{
{
i_select
=
0
;
i_select
=
0
;
}
}
net_Printf
(
VLC_OBJECT
(
p_access
),
p_sys
->
fd
,
NULL
,
net_Printf
(
VLC_OBJECT
(
p_access
),
p_sys
->
fd
,
NULL
,
"ffff:%d:%d "
,
i
,
i_select
);
"ffff:%d:%d "
,
i
,
i_select
);
}
}
...
@@ -818,11 +825,13 @@ static int Start( access_t *p_access, off_t i_pos )
...
@@ -818,11 +825,13 @@ static int Start( access_t *p_access, off_t i_pos )
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
if
(
(
psz
=
net_Gets
(
VLC_OBJECT
(
p_access
),
p_sys
->
fd
,
NULL
)
)
==
NULL
)
psz
=
net_Gets
(
VLC_OBJECT
(
p_access
),
p_sys
->
fd
,
NULL
);
if
(
psz
==
NULL
)
{
{
msg_Err
(
p_access
,
"cannot read data"
);
msg_Err
(
p_access
,
"cannot read data"
);
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
if
(
atoi
(
&
psz
[
9
]
)
>=
400
)
if
(
atoi
(
&
psz
[
9
]
)
>=
400
)
{
{
msg_Err
(
p_access
,
"error: %s"
,
psz
);
msg_Err
(
p_access
,
"error: %s"
,
psz
);
...
@@ -857,7 +866,7 @@ static int Start( access_t *p_access, off_t i_pos )
...
@@ -857,7 +866,7 @@ static int Start( access_t *p_access, off_t i_pos )
}
}
/*****************************************************************************
/*****************************************************************************
*
*
closing stream
*****************************************************************************/
*****************************************************************************/
static
void
Stop
(
access_t
*
p_access
)
static
void
Stop
(
access_t
*
p_access
)
{
{
...
@@ -872,7 +881,7 @@ static void Stop( access_t *p_access )
...
@@ -872,7 +881,7 @@ static void Stop( access_t *p_access )
}
}
/*****************************************************************************
/*****************************************************************************
*
*
get packet
*****************************************************************************/
*****************************************************************************/
static
int
GetPacket
(
access_t
*
p_access
,
chunk_t
*
p_ck
)
static
int
GetPacket
(
access_t
*
p_access
,
chunk_t
*
p_ck
)
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment