2024-11-30 22:03:01 +01:00

93 lines
2.8 KiB
Diff

diff --git a/libjaylink/discovery_tcp.c b/libjaylink/discovery_tcp.c
index 4079169..c3a6a1e 100644
--- a/libjaylink/discovery_tcp.c
+++ b/libjaylink/discovery_tcp.c
@@ -229,7 +229,11 @@ static struct jaylink_device *probe_device(struct jaylink_context *ctx,
JAYLINK_PRIV int discovery_tcp_scan(struct jaylink_context *ctx)
{
int ret;
+#ifdef _WIN32
+ SOCKET sock;
+#else
int sock;
+#endif
int opt_value;
fd_set rfds;
struct sockaddr_in addr;
@@ -242,7 +246,11 @@ JAYLINK_PRIV int discovery_tcp_scan(struct jaylink_context *ctx)
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+#ifdef _WIN32
+ if (sock == INVALID_SOCKET) {
+#else
if (sock < 0) {
+#endif
log_err(ctx, "Failed to create discovery socket");
return JAYLINK_ERR;
}
diff --git a/libjaylink/libjaylink-internal.h b/libjaylink/libjaylink-internal.h
index d24ea7c..088abbd 100644
--- a/libjaylink/libjaylink-internal.h
+++ b/libjaylink/libjaylink-internal.h
@@ -255,8 +255,13 @@ JAYLINK_PRIV void log_dbgio(const struct jaylink_context *ctx,
/*--- socket.c --------------------------------------------------------------*/
+#ifdef _WIN32
+JAYLINK_PRIV int socket_connect(SOCKET sock, const struct sockaddr *address,
+ size_t address_length, size_t timeout);
+#else
JAYLINK_PRIV int socket_connect(int sock, const struct sockaddr *address,
size_t address_length, size_t timeout);
+#endif
JAYLINK_PRIV bool socket_close(int sock);
JAYLINK_PRIV bool socket_bind(int sock, const struct sockaddr *address,
size_t length);
diff --git a/libjaylink/socket.c b/libjaylink/socket.c
index 6a9fdd7..8882fe3 100644
--- a/libjaylink/socket.c
+++ b/libjaylink/socket.c
@@ -49,8 +49,13 @@
* @retval JAYLINK_ERR_TIMEOUT A timeout occurred.
* @retval JAYLINK_ERR Other error conditions.
*/
+#ifdef _WIN32
+JAYLINK_PRIV int socket_connect(SOCKET sock, const struct sockaddr *address,
+ size_t address_length, size_t timeout)
+#else
JAYLINK_PRIV int socket_connect(int sock, const struct sockaddr *address,
size_t address_length, size_t timeout)
+#endif
{
int ret;
fd_set fds;
diff --git a/libjaylink/transport_tcp.c b/libjaylink/transport_tcp.c
index dc38d8f..ebdb522 100644
--- a/libjaylink/transport_tcp.c
+++ b/libjaylink/transport_tcp.c
@@ -266,7 +266,11 @@ JAYLINK_PRIV int transport_tcp_open(struct jaylink_device_handle *devh)
for (struct addrinfo *rp = info; rp != NULL; rp = rp->ai_next) {
sock = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
+#ifdef _WIN32
+ if (sock == SOCKET_ERROR)
+#else
if (sock < 0)
+#endif
continue;
ret = socket_connect(sock, info->ai_addr, info->ai_addrlen,
@@ -286,7 +290,11 @@ JAYLINK_PRIV int transport_tcp_open(struct jaylink_device_handle *devh)
freeaddrinfo(info);
+#ifdef _WIN32
+ if (sock == SOCKET_ERROR) {
+#else
if (sock < 0) {
+#endif
log_err(ctx, "Failed to open device");
cleanup_handle(devh);
return JAYLINK_ERR;