(svn r7825) -Codechange: make NetworkUDPClose close a single UDP socket. Use NetworkUDPStop to close all opened udp sockets (those were called NetworkUDPClose).
--- a/src/network/core/udp.c Thu Jan 04 17:23:55 2007 +0000
+++ b/src/network/core/udp.c Thu Jan 04 18:10:40 2007 +0000
@@ -19,25 +19,6 @@
*/
/**
- * Send a packet over UDP
- * @param udp the socket to send over
- * @param p the packet to send
- * @param recv the receiver (target) of the packet
- */
-void NetworkSendUDP_Packet(SOCKET udp, Packet *p, struct sockaddr_in *recv)
-{
- int res;
-
- NetworkSend_FillPacketSize(p);
-
- /* Send the buffer */
- res = sendto(udp, p->buffer, p->size, 0, (struct sockaddr *)recv, sizeof(*recv));
-
- /* Check for any errors, but ignore it otherwise */
- if (res == -1) DEBUG(net, 1, "[udp] sendto failed with: %i", GET_LAST_ERROR());
-}
-
-/**
* Start listening on the given host and port.
* @param udp the place where the (references to the) UDP are stored
* @param host the host (ip) to listen on
@@ -92,6 +73,38 @@
}
/**
+ * Close the given UDP socket
+ * @param udp the socket to close
+ */
+void NetworkUDPClose(SOCKET *udp)
+{
+ if (*udp == INVALID_SOCKET) return;
+
+ closesocket(*udp);
+ *udp = INVALID_SOCKET;
+}
+
+
+/**
+ * Send a packet over UDP
+ * @param udp the socket to send over
+ * @param p the packet to send
+ * @param recv the receiver (target) of the packet
+ */
+void NetworkSendUDP_Packet(SOCKET udp, Packet *p, struct sockaddr_in *recv)
+{
+ int res;
+
+ NetworkSend_FillPacketSize(p);
+
+ /* Send the buffer */
+ res = sendto(udp, p->buffer, p->size, 0, (struct sockaddr *)recv, sizeof(*recv));
+
+ /* Check for any errors, but ignore it otherwise */
+ if (res == -1) DEBUG(net, 1, "[udp] sendto failed with: %i", GET_LAST_ERROR());
+}
+
+/**
* Receive a packet at UDP level
* @param udp the socket to receive the packet on
*/
--- a/src/network/core/udp.h Thu Jan 04 17:23:55 2007 +0000
+++ b/src/network/core/udp.h Thu Jan 04 18:10:40 2007 +0000
@@ -11,8 +11,10 @@
///** Sending/receiving of UDP packets **////
+bool NetworkUDPListen(SOCKET *udp, uint32 host, uint16 port, bool broadcast);
+void NetworkUDPClose(SOCKET *udp);
+
void NetworkSendUDP_Packet(SOCKET udp, Packet *p, struct sockaddr_in *recv);
-bool NetworkUDPListen(SOCKET *udp, uint32 host, uint16 port, bool broadcast);
void NetworkUDPReceive(SOCKET udp);
/**
--- a/src/network/network.c Thu Jan 04 17:23:55 2007 +0000
+++ b/src/network/network.c Thu Jan 04 18:10:40 2007 +0000
@@ -833,7 +833,7 @@
closesocket(_listensocket);
_listensocket = INVALID_SOCKET;
DEBUG(net, 1, "Closed listener");
- NetworkUDPClose();
+ NetworkUDPStop();
}
}
@@ -949,7 +949,7 @@
_network_last_port = port;
NetworkDisconnect();
- NetworkUDPClose();
+ NetworkUDPStop();
NetworkInitialize();
// Try to connect
@@ -1426,7 +1426,7 @@
void NetworkShutDown(void)
{
NetworkDisconnect();
- NetworkUDPClose();
+ NetworkUDPStop();
DEBUG(net, 3, "[core] shutting down network");
--- a/src/network/network.h Thu Jan 04 17:23:55 2007 +0000
+++ b/src/network/network.h Thu Jan 04 18:10:40 2007 +0000
@@ -179,7 +179,7 @@
void CheckMinPlayers(void);
void NetworkStartUp(void);
-void NetworkUDPClose(void);
+void NetworkUDPStop(void);
void NetworkShutDown(void);
void NetworkGameLoop(void);
void NetworkUDPGameLoop(void);
--- a/src/network/network_udp.c Thu Jan 04 17:23:55 2007 +0000
+++ b/src/network/network_udp.c Thu Jan 04 18:10:40 2007 +0000
@@ -446,30 +446,19 @@
// Close UDP connection
-void NetworkUDPClose(void)
+void NetworkUDPStop(void)
{
DEBUG(net, 1, "[udp] closed listeners");
if (_network_udp_server) {
- if (_udp_server_socket != INVALID_SOCKET) {
- closesocket(_udp_server_socket);
- _udp_server_socket = INVALID_SOCKET;
- }
+ NetworkUDPClose(&_udp_server_socket);
+ NetworkUDPClose(&_udp_master_socket);
+ } else {
+ NetworkUDPClose(&_udp_client_socket);
+ }
- if (_udp_master_socket != INVALID_SOCKET) {
- closesocket(_udp_master_socket);
- _udp_master_socket = INVALID_SOCKET;
- }
-
- _network_udp_server = false;
- _network_udp_broadcast = 0;
- } else {
- if (_udp_client_socket != INVALID_SOCKET) {
- closesocket(_udp_client_socket);
- _udp_client_socket = INVALID_SOCKET;
- }
- _network_udp_broadcast = 0;
- }
+ _network_udp_server = false;
+ _network_udp_broadcast = 0;
}
// Broadcast to all ips
--- a/src/openttd.c Thu Jan 04 17:23:55 2007 +0000
+++ b/src/openttd.c Thu Jan 04 18:10:40 2007 +0000
@@ -747,10 +747,10 @@
if (_networking) {
if (_network_server && (new_mode == SM_LOAD || new_mode == SM_NEWGAME)) {
NetworkReboot();
- NetworkUDPClose();
+ NetworkUDPStop();
} else {
NetworkDisconnect();
- NetworkUDPClose();
+ NetworkUDPStop();
}
}