From 15c06a8ff1ecdd8636c04dd11125d53b15a76867 Mon Sep 17 00:00:00 2001 From: Niels Elburg Date: Thu, 13 Jan 2005 12:58:34 +0000 Subject: [PATCH] multicast server git-svn-id: svn://code.dyne.org/veejay/trunk@144 eb8d1916-c9e9-0310-b8de-cf0c9472ead5 --- veejay-current/libOSC/OSC-receive.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/veejay-current/libOSC/OSC-receive.c b/veejay-current/libOSC/OSC-receive.c index 7a21fccc..a49b787f 100644 --- a/veejay-current/libOSC/OSC-receive.c +++ b/veejay-current/libOSC/OSC-receive.c @@ -837,6 +837,13 @@ void GoMultiCast( const char *group_name ) strncpy( mcast_groupname, group_name, strlen(group_name )); } +int IsMultiCast( char *dst ) +{ + if(use_mcast_) + sprintf(dst, "%s", mcast_groupname ); + return use_mcast_; +} + Boolean NetworkStartUDPServer(OSCPacketBuffer packet, int port_id) { struct sockaddr_in my_addr; my_addr.sin_family = AF_INET; @@ -849,6 +856,7 @@ Boolean NetworkStartUDPServer(OSCPacketBuffer packet, int port_id) { { struct ip_mreq mcast_req; int on = 1; + int err= 0; memset( &mcast_req, 0, sizeof(mcast_req)); packet->returnAddr->sockfd = socket( AF_INET, SOCK_DGRAM, 0); #ifdef SO_REUSEADDR @@ -857,8 +865,10 @@ Boolean NetworkStartUDPServer(OSCPacketBuffer packet, int port_id) { #ifdef SO_REUSEPORT setsockopt( packet->returnAddr->sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)); #endif - bind( packet->returnAddr->sockfd, (struct sockaddr*) &my_addr, sizeof( my_addr )); - + err = bind( packet->returnAddr->sockfd, (struct sockaddr*) &my_addr, sizeof( my_addr )); + if( err < 0 ) + return FALSE; + mcast_req.imr_multiaddr.s_addr = inet_addr( mcast_groupname ); mcast_req.imr_interface.s_addr = htonl( INADDR_ANY ); setsockopt( packet->returnAddr->sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP,