X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/record-dvb/blobdiff_plain/fbc24ab023eb1ae6572fccff3fa1140c3e01c8b7..1e3fa14af893f0e51d2a30b8b2e9d37669dc6257:/mcast.c diff --git a/mcast.c b/mcast.c index 5f7dadc..fd88569 100644 --- 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;