]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9658: [mod_verto] windows fixes for mod_verto
authorMichael Jerris <mike@jerris.com>
Mon, 14 Dec 2015 20:23:31 +0000 (14:23 -0600)
committerMichael Jerris <mike@jerris.com>
Mon, 14 Dec 2015 20:23:31 +0000 (14:23 -0600)
src/mod/endpoints/mod_verto/mcast/mcast.c
src/mod/endpoints/mod_verto/mcast/mcast.h
src/mod/endpoints/mod_verto/mcast/mcast_cpp.cpp
src/mod/endpoints/mod_verto/mcast/mcast_cpp.h
src/mod/endpoints/mod_verto/mod_verto.c

index 722a3d75ca370dde81e42bfb8634a256e9130f9a..915c831df40889999e859005368566a75935a315 100644 (file)
@@ -51,6 +51,7 @@
 #endif
 #ifndef WIN32
 #include <poll.h>
+#define closesocket(x) close(x)
 #endif
 #include <switch_utils.h>
 #include "mcast.h"
@@ -67,7 +68,7 @@ int mcast_socket_create(const char *host, int16_t port, mcast_handle_t *handle,
                family = AF_INET6;
        }
        
-       if ((!(flags & MCAST_SEND) && !(flags & MCAST_RECV)) || (handle->sock = (int)socket(family, SOCK_DGRAM, 0)) <= 0 ) {
+       if ((!(flags & MCAST_SEND) && !(flags & MCAST_RECV)) || (handle->sock = (mcast_socket_t)socket(family, SOCK_DGRAM, 0)) != mcast_sock_invalid ) {
                return -1;
        }
 
@@ -84,7 +85,7 @@ int mcast_socket_create(const char *host, int16_t port, mcast_handle_t *handle,
        }
        
        if ( setsockopt(handle->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(one)) != 0 ) {
-               close(handle->sock);
+               mcast_socket_close(handle);
                return -1;
        }
        
@@ -101,14 +102,12 @@ int mcast_socket_create(const char *host, int16_t port, mcast_handle_t *handle,
                        mreq.imr_interface.s_addr = htonl(INADDR_ANY);
 
                        if (setsockopt(handle->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void *)&mreq, sizeof(mreq)) < 0) {
-                               close(handle->sock);
-                               handle->sock = -1;
+                               mcast_socket_close(handle);
                                return -1;
                        }
 
                        if (bind(handle->sock, (struct sockaddr *) &handle->recv_addr, sizeof(handle->recv_addr)) < 0) {
-                               close(handle->sock);
-                               handle->sock = -1;
+                               mcast_socket_close(handle);
                                return -1;
                        }
 
@@ -139,9 +138,7 @@ int mcast_socket_create(const char *host, int16_t port, mcast_handle_t *handle,
                        setsockopt(handle->sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, (const char *)&mreq, sizeof(mreq));
 
                        if (bind(handle->sock, (struct sockaddr *) &handle->recv_addr6, sizeof(handle->recv_addr6)) < 0) {
-                               printf("FUCK (%s) %s\n", host, strerror(errno));
-                               close(handle->sock);
-                               handle->sock = -1;
+                               mcast_socket_close(handle);
                                return -1;
                        }
                }
@@ -185,15 +182,15 @@ int mcast_socket_create(const char *host, int16_t port, mcast_handle_t *handle,
 
 void mcast_socket_close(mcast_handle_t *handle)
 {
-       if (handle->sock > -1) {
-               close(handle->sock);
-               handle->sock = -1;
+       if (handle->sock != mcast_sock_invalid) {
+               closesocket(handle->sock);
+               handle->sock = mcast_sock_invalid;
        }
 }
 
 ssize_t mcast_socket_send(mcast_handle_t *handle, void *data, size_t datalen)
 {
-       if (handle->sock <= -1) {
+       if (handle->sock != mcast_sock_invalid) {
                return -1;
        }
 
index 8d400b613b4b138163f358fac64d3c04bbb1c474..2bc1dfa6d487819996cb92a61efe00703e666600 100644 (file)
@@ -69,8 +69,15 @@ extern "C" {
 typedef WS_SSIZE_T ssize_t;
 #endif
 
+#ifndef WIN32
+typedef int mcast_socket_t;
+#else
+typedef SOCKET mcast_socket_t;
+#endif
+#define mcast_sock_invalid (mcast_socket_t)-1
+
 typedef struct {
-       int sock;
+       mcast_socket_t sock;
        unsigned char ttl;
        struct sockaddr_in send_addr;
        struct sockaddr_in recv_addr;
index f4b3d74f30683fcdcfa3a9082d8fc2a98eb84e5a..a2793fa8519bf7bddffbf671aa311f9edbd035ec 100644 (file)
@@ -65,7 +65,7 @@ char *McastHandle::recv(int ms)
        return NULL;
 }
 
-int McastHandle::filenum(void)
+mcast_socket_t McastHandle::filenum(void)
 {
        return handle.sock;
 }
index 0d289e755a5dfee62d63d7fa054e9bc2b052ba91..07062162f221e64ef2e8cfa35432560f11b81966 100644 (file)
@@ -36,6 +36,7 @@
 
 #ifdef __cplusplus
 extern "C" {
+#include "mcast.h"
 #endif /* defined(__cplusplus) */
 #if EMACS_WORKS
 }
@@ -49,7 +50,7 @@ class McastHandle {
        virtual ~McastHandle();
        int send(const char *data);
        char *recv(int ms = 0);
-       int filenum(void);
+       mcast_socket_t filenum(void);
 };
 
 #ifdef __cplusplus
index 255e95702ba4df77db9961428a5536915494cb19..ba1e78752fc212a5a5b220a047d8caddebd97031 100644 (file)
@@ -1889,7 +1889,7 @@ static void client_run(jsock_t *jsock)
                                        
                                                        if (s[0] != '#') goto nm;
 
-                                                       switch_snprintf(repl, sizeof(repl), "#SPU %ld", (b - a) / 1000);
+                                                       switch_snprintf(repl, sizeof(repl), "#SPU %ld", (long)((b - a) / 1000));
                                                        ws_write_frame(&jsock->ws, WSOC_TEXT, repl, strlen(repl));
                                                        loops = size / 1024;
                                                        rem = size % 1024;
@@ -1906,7 +1906,7 @@ static void client_run(jsock_t *jsock)
                                                                        ws_write_frame(&jsock->ws, WSOC_TEXT, repl, rem);
                                                                }
                                                                b = switch_time_now();
-                                                               ddur += ((b - a) / 1000);
+                                                               ddur += (int)((b - a) / 1000);
                                                                dur += ddur;
 
                                                        }