Browse Source

bind to the multicast address if possible

Originally committed as revision 16032 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Jindřich Makovička 17 years ago
parent
commit
36b532815c
1 changed files with 8 additions and 2 deletions
  1. +8
    -2
      libavformat/udp.c

+ 8
- 2
libavformat/udp.c View File

@@ -336,7 +336,7 @@ int udp_get_file_handle(URLContext *h)
static int udp_open(URLContext *h, const char *uri, int flags)
{
char hostname[1024];
int port, udp_fd = -1, tmp;
int port, udp_fd = -1, tmp, bind_ret = -1;
UDPContext *s = NULL;
int is_output;
const char *p;
@@ -404,7 +404,13 @@ static int udp_open(URLContext *h, const char *uri, int flags)
goto fail;

/* the bind is needed to give a port to the socket now */
if (bind(udp_fd,(struct sockaddr *)&my_addr, len) < 0)
/* if multicast, try the multicast address bind first */
if (s->is_multicast && !(h->flags & URL_WRONLY)) {
bind_ret = bind(udp_fd,(struct sockaddr *)&s->dest_addr, len);
}
/* bind to the local address if not multicast or if the multicast
* bind failed */
if (bind_ret < 0 && bind(udp_fd,(struct sockaddr *)&my_addr, len) < 0)
goto fail;

len = sizeof(my_addr);


Loading…
Cancel
Save