changeset 5521:828ab694b0d0 draft

(svn r7825) -Codechange: make NetworkUDPClose close a single UDP socket. Use NetworkUDPStop to close all opened udp sockets (those were called NetworkUDPClose).
author rubidium <rubidium@openttd.org>
date Thu, 04 Jan 2007 18:10:40 +0000
parents 1cc3e04ea88b
children 8252fe7fa067
files 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
diffstat 6 files changed, 49 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/core/udp.c
+++ b/src/network/core/udp.c
@@ -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
+++ b/src/network/core/udp.h
@@ -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
+++ b/src/network/network.c
@@ -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
+++ b/src/network/network.h
@@ -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
+++ b/src/network/network_udp.c
@@ -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;
-		}
-
-		if (_udp_master_socket != INVALID_SOCKET) {
-			closesocket(_udp_master_socket);
-			_udp_master_socket = INVALID_SOCKET;
-		}
+		NetworkUDPClose(&_udp_server_socket);
+		NetworkUDPClose(&_udp_master_socket);
+	} else {
+		NetworkUDPClose(&_udp_client_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
+++ b/src/openttd.c
@@ -747,10 +747,10 @@
 		if (_networking) {
 			if (_network_server && (new_mode == SM_LOAD || new_mode == SM_NEWGAME)) {
 				NetworkReboot();
-				NetworkUDPClose();
+				NetworkUDPStop();
 			} else {
 				NetworkDisconnect();
-				NetworkUDPClose();
+				NetworkUDPStop();
 			}
 		}