FS-9658: [mod_verto] windows fixes for mod_verto

This commit is contained in:
Michael Jerris 2015-12-14 14:23:31 -06:00
parent ebda34e1d9
commit b1206d0b50
5 changed files with 23 additions and 18 deletions

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

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

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

View 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

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