]> git.zerfleddert.de Git - record-dvb/blobdiff - mcast.c
handle IPv6 sources
[record-dvb] / mcast.c
diff --git a/mcast.c b/mcast.c
index 5f7dadc5d66bbbea98ef1a733e8695ebababb805..fd88569f2b09521026644934892b1864092c1a74 100644 (file)
--- a/mcast.c
+++ b/mcast.c
@@ -22,18 +22,17 @@ int is_mcast(char *url)
 
 int open_mcast(char *url)
 {
-       static struct dvb_host *dvbhost = NULL;
+       struct dvb_host *dvbhost = NULL;
        struct sockaddr_in server;
        struct ip_mreq mreq;
+       int val;
        int fd;
 
        if(!is_mcast(url))
                return -1;
 
-       if (!dvbhost) {
-               dvbhost = parse(&(url[6]), "2000");
-               dvbhost->socktype = SOCK_DGRAM;
-       }
+       dvbhost = parse(&(url[6]), "2000");
+       dvbhost->socktype = SOCK_DGRAM;
 
        if (resolve(dvbhost, &server) < 0) {
                return -1;
@@ -48,6 +47,12 @@ int open_mcast(char *url)
                return -1;
        }
 
+       val = 1;
+       if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)) < 0) {
+               perror("setsockopt");
+               return -1;
+       }
+
        if (bind(fd, (struct sockaddr*)&server, sizeof(server)) < 0) {
                perror("bind");
                return -1;
Impressum, Datenschutz