|
|
|
@ -623,7 +623,7 @@ end: |
|
|
|
|
/* return non zero if error */ |
|
|
|
|
static int udp_open(URLContext *h, const char *uri, int flags) |
|
|
|
|
{ |
|
|
|
|
char hostname[1024], localaddr[1024] = ""; |
|
|
|
|
char hostname[1024]; |
|
|
|
|
int port, udp_fd = -1, tmp, bind_ret = -1, dscp = -1; |
|
|
|
|
UDPContext *s = h->priv_data; |
|
|
|
|
int is_output; |
|
|
|
@ -708,7 +708,8 @@ static int udp_open(URLContext *h, const char *uri, int flags) |
|
|
|
|
s->burst_bits = strtoll(buf, NULL, 10); |
|
|
|
|
} |
|
|
|
|
if (av_find_info_tag(buf, sizeof(buf), "localaddr", p)) { |
|
|
|
|
av_strlcpy(localaddr, buf, sizeof(localaddr)); |
|
|
|
|
av_freep(&s->localaddr); |
|
|
|
|
s->localaddr = av_strdup(buf); |
|
|
|
|
} |
|
|
|
|
if (av_find_info_tag(buf, sizeof(buf), "sources", p)) { |
|
|
|
|
if ((ret = ff_ip_parse_sources(h, buf, &s->filters)) < 0) |
|
|
|
@ -748,10 +749,7 @@ static int udp_open(URLContext *h, const char *uri, int flags) |
|
|
|
|
if ((s->is_multicast || s->local_port <= 0) && (h->flags & AVIO_FLAG_READ)) |
|
|
|
|
s->local_port = port; |
|
|
|
|
|
|
|
|
|
if (localaddr[0]) |
|
|
|
|
udp_fd = udp_socket_create(h, &my_addr, &len, localaddr); |
|
|
|
|
else |
|
|
|
|
udp_fd = udp_socket_create(h, &my_addr, &len, s->localaddr); |
|
|
|
|
udp_fd = udp_socket_create(h, &my_addr, &len, s->localaddr); |
|
|
|
|
if (udp_fd < 0) |
|
|
|
|
goto fail; |
|
|
|
|
|
|
|
|
|