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;
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;