diff options
author | rubidium <rubidium@openttd.org> | 2007-01-12 20:19:49 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-01-12 20:19:49 +0000 |
commit | 98e462e56444155a11fe92b9391c2faf1aea90d2 (patch) | |
tree | 23bff1b129004614fd68cb0c30436a14bbe240e9 /src/network/network_udp.cpp | |
parent | 473ed1d351e04b8f000325219bf80f54bd96b7f1 (diff) | |
download | openttd-98e462e56444155a11fe92b9391c2faf1aea90d2.tar.xz |
(svn r8083) -Codechange: make a NetworkSocketHandler as base for all sockets and move a little of NetworkClientState functionality to the NetworkSocketHandler. Move the rest of the NetworkClientState to the new NetworkTCPSocketHandler class/struct, which is not yet implemented in an object oriented manner. The UDP socket handler now extends the NetworkSocketHandler instead of having a reference to a NetworkClientState.
Diffstat (limited to 'src/network/network_udp.cpp')
-rw-r--r-- | src/network/network_udp.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp index 6e0ee8edc..f6ef19fe3 100644 --- a/src/network/network_udp.cpp +++ b/src/network/network_udp.cpp @@ -93,7 +93,7 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_FIND_SERVER) DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO) { - NetworkClientState *cs; + NetworkTCPSocketHandler *cs; NetworkClientInfo *ci; Packet *packet; Player *player; @@ -221,7 +221,7 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_GET_NEWGRFS) DEBUG(net, 6, "[udp] newgrf data request from %s:%d", inet_ntoa(client_addr->sin_addr), ntohs(client_addr->sin_port)); - num_grfs = NetworkRecv_uint8 (&this->cs, p); + num_grfs = NetworkRecv_uint8 (this, p); if (num_grfs > NETWORK_MAX_GRF_COUNT) return; for (i = 0; i < num_grfs; i++) { @@ -360,14 +360,15 @@ DEF_UDP_RECEIVE_COMMAND(Client, PACKET_UDP_MASTER_RESPONSE_LIST) * an uint32 (ip) and an uint16 (port) for each pair */ - ver = NetworkRecv_uint8(&this->cs, p); - - if (this->cs.has_quit) return; + ver = NetworkRecv_uint8(this, p); if (ver == 1) { - for (i = NetworkRecv_uint16(&this->cs, p); i != 0 ; i--) { - ip.s_addr = TO_LE32(NetworkRecv_uint32(&this->cs, p)); - port = NetworkRecv_uint16(&this->cs, p); + for (i = NetworkRecv_uint16(this, p); i != 0 ; i--) { + ip.s_addr = TO_LE32(NetworkRecv_uint32(this, p)); + port = NetworkRecv_uint16(this, p); + + /* Somehow we reached the end of the packet */ + if (this->HasClientQuit()) return; NetworkUDPQueryServer(inet_ntoa(ip), port); } } @@ -381,7 +382,7 @@ DEF_UDP_RECEIVE_COMMAND(Client, PACKET_UDP_SERVER_NEWGRFS) DEBUG(net, 6, "[udp] newgrf data reply from %s:%d", inet_ntoa(client_addr->sin_addr), ntohs(client_addr->sin_port)); - num_grfs = NetworkRecv_uint8 (&this->cs, p); + num_grfs = NetworkRecv_uint8 (this, p); if (num_grfs > NETWORK_MAX_GRF_COUNT) return; for (i = 0; i < num_grfs; i++) { @@ -390,7 +391,7 @@ DEF_UDP_RECEIVE_COMMAND(Client, PACKET_UDP_SERVER_NEWGRFS) GRFConfig c; this->Recv_GRFIdentifier(p, &c); - NetworkRecv_string(&this->cs, p, name, sizeof(name)); + NetworkRecv_string(this, p, name, sizeof(name)); /* An empty name is not possible under normal circumstances * and causes problems when showing the NewGRF list. */ @@ -465,7 +466,7 @@ void NetworkUDPQueryMasterServer(void) struct sockaddr_in out_addr; Packet *p; - if (!_udp_client_socket->IsListening()) { + if (!_udp_client_socket->IsConnected()) { if (!_udp_client_socket->Listen(0, 0, true)) return; } @@ -492,7 +493,7 @@ void NetworkUDPSearchGame(void) if (_network_udp_broadcast > 0) return; // No UDP-socket yet.. - if (!_udp_client_socket->IsListening()) { + if (!_udp_client_socket->IsConnected()) { if (!_udp_client_socket->Listen(0, 0, true)) return; } @@ -509,7 +510,7 @@ NetworkGameList *NetworkUDPQueryServer(const char* host, unsigned short port) NetworkGameList *item; // No UDP-socket yet.. - if (!_udp_client_socket->IsListening()) { + if (!_udp_client_socket->IsConnected()) { if (!_udp_client_socket->Listen(0, 0, true)) return NULL; } @@ -545,7 +546,7 @@ void NetworkUDPRemoveAdvertise(void) if (!_networking || !_network_server || !_network_udp_server) return; /* check for socket */ - if (!_udp_master_socket->IsListening()) { + if (!_udp_master_socket->IsConnected()) { if (!_udp_master_socket->Listen(0, 0, false)) return; } @@ -578,7 +579,7 @@ void NetworkUDPAdvertise(void) return; /* check for socket */ - if (!_udp_master_socket->IsListening()) { + if (!_udp_master_socket->IsConnected()) { if (!_udp_master_socket->Listen(0, 0, false)) return; } |