From 53666dd289e4d306b45e6b2a1c8dc0e63ea98aeb Mon Sep 17 00:00:00 2001 From: "roberto@precise64" Date: Thu, 24 May 2012 20:59:15 +0200 Subject: [PATCH] allows multicast to be used as a subscription server --- socket.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/socket.c b/socket.c index 522d923a..cf419eeb 100644 --- a/socket.c +++ b/socket.c @@ -195,6 +195,25 @@ int bind_to_udp(char *socket_name, int multicast, int broadcast) { uws_addr.sin_family = AF_INET; uws_addr.sin_port = htons(atoi(udp_port + 1)); +#ifdef UWSGI_MULTICAST + if (!broadcast && !multicast) { + char quad[4]; + char *first_part = strchr(socket_name, '.'); + if (first_part-socket_name < 4) { + memset(quad, 0, 4); + memcpy(quad, socket_name, first_part-socket_name); + if (atoi(quad) >= 224 && atoi(quad) <= 239) { + multicast = 1; + } + } +#else + if (!broadcast) { +#endif + if (!strcmp(socket_name, "255.255.255.255")) { + broadcast = 1; + } + } + if (broadcast) { uws_addr.sin_addr.s_addr = INADDR_BROADCAST; }