Skip to content

Commit 663abe0

Browse files
committed
libvncclient/sockets: convert multicast code to crossplatform sockets
1 parent 9455b83 commit 663abe0

1 file changed

Lines changed: 22 additions & 25 deletions

File tree

libvncclient/sockets.c

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,17 +1056,14 @@ int WaitForMessage(rfbClient* client,unsigned int usecs)
10561056
}
10571057

10581058

1059-
int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recvbuf)
1059+
rfbSocket CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recvbuf)
10601060
{
1061-
int sock;
1061+
rfbSocket sock;
10621062
struct sockaddr_storage localAddr;
10631063
int optval;
10641064
socklen_t optval_len = sizeof(optval);
10651065
int dfltrcvbuf;
10661066

1067-
if (!initSockets())
1068-
return -1;
1069-
10701067
localAddr = multicastSockAddr;
10711068
/* set source addr of localAddr to ANY,
10721069
the rest is the same as in multicastSockAddr */
@@ -1078,7 +1075,7 @@ int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recv
10781075
else
10791076
{
10801077
rfbClientErr("CreateMulticastSocket: neither IPv4 nor IPv6 address received\n");
1081-
return -1;
1078+
return RFB_INVALID_SOCKET;
10821079
}
10831080

10841081

@@ -1089,7 +1086,7 @@ int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recv
10891086
errno=WSAGetLastError();
10901087
#endif
10911088
rfbClientErr("CreateMulticastSocket: error creating socket: %s\n", strerror(errno));
1092-
return -1;
1089+
return RFB_INVALID_SOCKET;
10931090
}
10941091

10951092
optval = 1;
@@ -1099,8 +1096,8 @@ int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recv
10991096
errno=WSAGetLastError();
11001097
#endif
11011098
rfbClientErr("CreateMulticastSocket: error setting reuse addr: %s\n", strerror(errno));
1102-
close(sock);
1103-
return -1;
1099+
rfbCloseSocket(sock);
1100+
return RFB_INVALID_SOCKET;
11041101
}
11051102

11061103
/* get/set socket receive buffer */
@@ -1110,8 +1107,8 @@ int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recv
11101107
errno=WSAGetLastError();
11111108
#endif
11121109
rfbClientErr("CreateMulticastSocket: error getting rcv buf size: %s\n", strerror(errno));
1113-
close(sock);
1114-
return -1;
1110+
rfbCloseSocket(sock);
1111+
return RFB_INVALID_SOCKET;
11151112
}
11161113
dfltrcvbuf = optval;
11171114
optval = so_recvbuf;
@@ -1121,17 +1118,17 @@ int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recv
11211118
errno=WSAGetLastError();
11221119
#endif
11231120
rfbClientErr("CreateMulticastSocket: error setting rcv buf size: %s\n", strerror(errno));
1124-
close(sock);
1125-
return -1;
1121+
rfbCloseSocket(sock);
1122+
return RFB_INVALID_SOCKET;
11261123
}
11271124
if(getsockopt(sock, SOL_SOCKET, SO_RCVBUF,(char*)&optval, &optval_len) <0)
11281125
{
11291126
#ifdef WIN32
11301127
errno=WSAGetLastError();
11311128
#endif
11321129
rfbClientErr("CreateMulticastSocket: error getting set rcv buf size: %s\n", strerror(errno));
1133-
close(sock);
1134-
return -1;
1130+
rfbCloseSocket(sock);
1131+
return RFB_INVALID_SOCKET;
11351132
}
11361133
rfbClientLog("MulticastVNC: tried to set socket receive buffer from %d to %d, got %d\n",
11371134
dfltrcvbuf, so_recvbuf, optval);
@@ -1143,8 +1140,8 @@ int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recv
11431140
errno=WSAGetLastError();
11441141
#endif
11451142
rfbClientErr("CreateMulticastSocket: error binding socket: %s\n", strerror(errno));
1146-
close(sock);
1147-
return -1;
1143+
rfbCloseSocket(sock);
1144+
return RFB_INVALID_SOCKET;
11481145
}
11491146

11501147

@@ -1165,8 +1162,8 @@ int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recv
11651162
errno=WSAGetLastError();
11661163
#endif
11671164
rfbClientErr("CreateMulticastSocket: error joining IPv4 multicast group: %s\n", strerror(errno));
1168-
close(sock);
1169-
return -1;
1165+
rfbCloseSocket(sock);
1166+
return RFB_INVALID_SOCKET;
11701167
}
11711168
}
11721169
else
@@ -1186,21 +1183,21 @@ int CreateMulticastSocket(struct sockaddr_storage multicastSockAddr, int so_recv
11861183
errno=WSAGetLastError();
11871184
#endif
11881185
rfbClientErr("CreateMulticastSocket: error joining IPv6 multicast group: %s\n", strerror(errno));
1189-
close(sock);
1190-
return -1;
1186+
rfbCloseSocket(sock);
1187+
return RFB_INVALID_SOCKET;
11911188
}
11921189
}
11931190
else
11941191
{
11951192
rfbClientErr("CreateMulticastSocket: neither IPv6 nor IPv6 specified");
1196-
close(sock);
1197-
return -1;
1193+
rfbCloseSocket(sock);
1194+
return RFB_INVALID_SOCKET;
11981195
}
11991196

12001197
/* this is important for ReadFromRFBServerMulticast() */
12011198
if(!SetNonBlocking(sock)) {
1202-
close(sock);
1203-
return -1;
1199+
rfbCloseSocket(sock);
1200+
return RFB_INVALID_SOCKET;
12041201
}
12051202

12061203
return sock;

0 commit comments

Comments
 (0)