Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
34af7813
Commit
34af7813
authored
Nov 24, 2015
by
Luca Barbato
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
udp: Use the logging context
parent
98063bcf
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
14 deletions
+28
-14
udp.c
libavformat/udp.c
+28
-14
No files found.
libavformat/udp.c
View file @
34af7813
...
...
@@ -171,7 +171,8 @@ static int udp_leave_multicast_group(int sockfd, struct sockaddr *addr)
return
0
;
}
static
struct
addrinfo
*
udp_resolve_host
(
const
char
*
hostname
,
int
port
,
static
struct
addrinfo
*
udp_resolve_host
(
URLContext
*
h
,
const
char
*
hostname
,
int
port
,
int
type
,
int
family
,
int
flags
)
{
struct
addrinfo
hints
=
{
0
},
*
res
=
0
;
...
...
@@ -191,13 +192,15 @@ static struct addrinfo* udp_resolve_host(const char *hostname, int port,
hints
.
ai_flags
=
flags
;
if
((
error
=
getaddrinfo
(
node
,
service
,
&
hints
,
&
res
)))
{
res
=
NULL
;
av_log
(
NULL
,
AV_LOG_ERROR
,
"udp_resolve_host: %s
\n
"
,
gai_strerror
(
error
));
av_log
(
h
,
AV_LOG_ERROR
,
"udp_resolve_host: %s
\n
"
,
gai_strerror
(
error
));
}
return
res
;
}
static
int
udp_set_multicast_sources
(
int
sockfd
,
struct
sockaddr
*
addr
,
static
int
udp_set_multicast_sources
(
URLContext
*
h
,
int
sockfd
,
struct
sockaddr
*
addr
,
int
addr_len
,
char
**
sources
,
int
nb_sources
,
int
include
)
{
...
...
@@ -208,7 +211,7 @@ static int udp_set_multicast_sources(int sockfd, struct sockaddr *addr,
for
(
i
=
0
;
i
<
nb_sources
;
i
++
)
{
struct
group_source_req
mreqs
;
int
level
=
addr
->
sa_family
==
AF_INET
?
IPPROTO_IP
:
IPPROTO_IPV6
;
struct
addrinfo
*
sourceaddr
=
udp_resolve_host
(
sources
[
i
],
0
,
struct
addrinfo
*
sourceaddr
=
udp_resolve_host
(
h
,
sources
[
i
],
0
,
SOCK_DGRAM
,
AF_UNSPEC
,
0
);
if
(
!
sourceaddr
)
...
...
@@ -238,7 +241,7 @@ static int udp_set_multicast_sources(int sockfd, struct sockaddr *addr,
}
for
(
i
=
0
;
i
<
nb_sources
;
i
++
)
{
struct
ip_mreq_source
mreqs
;
struct
addrinfo
*
sourceaddr
=
udp_resolve_host
(
sources
[
i
],
0
,
struct
addrinfo
*
sourceaddr
=
udp_resolve_host
(
h
,
sources
[
i
],
0
,
SOCK_DGRAM
,
AF_UNSPEC
,
0
);
if
(
!
sourceaddr
)
...
...
@@ -270,13 +273,14 @@ static int udp_set_multicast_sources(int sockfd, struct sockaddr *addr,
#endif
return
0
;
}
static
int
udp_set_url
(
struct
sockaddr_storage
*
addr
,
static
int
udp_set_url
(
URLContext
*
h
,
struct
sockaddr_storage
*
addr
,
const
char
*
hostname
,
int
port
)
{
struct
addrinfo
*
res0
;
int
addr_len
;
res0
=
udp_resolve_host
(
hostname
,
port
,
SOCK_DGRAM
,
AF_UNSPEC
,
0
);
res0
=
udp_resolve_host
(
h
,
h
ostname
,
port
,
SOCK_DGRAM
,
AF_UNSPEC
,
0
);
if
(
res0
==
0
)
return
AVERROR
(
EIO
);
memcpy
(
addr
,
res0
->
ai_addr
,
res0
->
ai_addrlen
);
addr_len
=
res0
->
ai_addrlen
;
...
...
@@ -285,16 +289,18 @@ static int udp_set_url(struct sockaddr_storage *addr,
return
addr_len
;
}
static
int
udp_socket_create
(
U
DPContext
*
s
,
struct
sockaddr_storage
*
addr
,
static
int
udp_socket_create
(
U
RLContext
*
h
,
struct
sockaddr_storage
*
addr
,
socklen_t
*
addr_len
,
const
char
*
localaddr
)
{
UDPContext
*
s
=
h
->
priv_data
;
int
udp_fd
=
-
1
;
struct
addrinfo
*
res0
=
NULL
,
*
res
=
NULL
;
int
family
=
AF_UNSPEC
;
if
(((
struct
sockaddr
*
)
&
s
->
dest_addr
)
->
sa_family
)
family
=
((
struct
sockaddr
*
)
&
s
->
dest_addr
)
->
sa_family
;
res0
=
udp_resolve_host
((
localaddr
&&
localaddr
[
0
])
?
localaddr
:
NULL
,
s
->
local_port
,
res0
=
udp_resolve_host
(
h
,
(
localaddr
&&
localaddr
[
0
])
?
localaddr
:
NULL
,
s
->
local_port
,
SOCK_DGRAM
,
family
,
AI_PASSIVE
);
if
(
res0
==
0
)
goto
fail
;
...
...
@@ -361,7 +367,7 @@ int ff_udp_set_remote_url(URLContext *h, const char *uri)
av_url_split
(
NULL
,
0
,
NULL
,
0
,
hostname
,
sizeof
(
hostname
),
&
port
,
NULL
,
0
,
uri
);
/* set the destination address */
s
->
dest_addr_len
=
udp_set_url
(
&
s
->
dest_addr
,
hostname
,
port
);
s
->
dest_addr_len
=
udp_set_url
(
h
,
&
s
->
dest_addr
,
hostname
,
port
);
if
(
s
->
dest_addr_len
<
0
)
{
return
AVERROR
(
EIO
);
}
...
...
@@ -523,9 +529,9 @@ static int udp_open(URLContext *h, const char *uri, int flags)
s
->
local_port
=
port
;
if
(
localaddr
[
0
])
udp_fd
=
udp_socket_create
(
s
,
&
my_addr
,
&
len
,
localaddr
);
udp_fd
=
udp_socket_create
(
h
,
&
my_addr
,
&
len
,
localaddr
);
else
udp_fd
=
udp_socket_create
(
s
,
&
my_addr
,
&
len
,
s
->
localaddr
);
udp_fd
=
udp_socket_create
(
h
,
&
my_addr
,
&
len
,
s
->
localaddr
);
if
(
udp_fd
<
0
)
goto
fail
;
...
...
@@ -570,14 +576,22 @@ static int udp_open(URLContext *h, const char *uri, int flags)
goto
fail
;
}
if
(
num_include_sources
)
{
if
(
udp_set_multicast_sources
(
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
,
s
->
dest_addr_len
,
include_sources
,
num_include_sources
,
1
)
<
0
)
if
(
udp_set_multicast_sources
(
h
,
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
,
s
->
dest_addr_len
,
include_sources
,
num_include_sources
,
1
)
<
0
)
goto
fail
;
}
else
{
if
(
udp_join_multicast_group
(
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
)
<
0
)
goto
fail
;
}
if
(
num_exclude_sources
)
{
if
(
udp_set_multicast_sources
(
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
,
s
->
dest_addr_len
,
exclude_sources
,
num_exclude_sources
,
0
)
<
0
)
if
(
udp_set_multicast_sources
(
h
,
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
,
s
->
dest_addr_len
,
exclude_sources
,
num_exclude_sources
,
0
)
<
0
)
goto
fail
;
}
}
...
...
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