(svn r7825) -Codechange: make NetworkUDPClose close a single UDP socket. Use NetworkUDPStop to close all opened udp sockets (those were called NetworkUDPClose).
authorrubidium
Thu, 04 Jan 2007 18:10:40 +0000
changeset 5772 fbb42af982b4
parent 5771 7288d4e4bfba
child 5773 6736f59c1011
(svn r7825) -Codechange: make NetworkUDPClose close a single UDP socket. Use NetworkUDPStop to close all opened udp sockets (those were called NetworkUDPClose).
src/network/core/udp.c
src/network/core/udp.h
src/network/network.c
src/network/network.h
src/network/network_udp.c
src/openttd.c
--- 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();
 			}
 		}