summaryrefslogtreecommitdiff
path: root/src/network/network.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-04-03 01:24:52 +0000
committerrubidium <rubidium@openttd.org>2009-04-03 01:24:52 +0000
commit632d74c6b1a17f3bc3419158dfc1bb5a2e5f77b5 (patch)
tree3d2dcf19488a31930bdb82d46f8ddc4b53aba59a /src/network/network.cpp
parentba5aafb9bba4887b502dba32e56747fe10af604e (diff)
downloadopenttd-632d74c6b1a17f3bc3419158dfc1bb5a2e5f77b5.tar.xz
(svn r15922) -Codechange: unify the ways to listen on a socket
Diffstat (limited to 'src/network/network.cpp')
-rw-r--r--src/network/network.cpp37
1 files changed, 9 insertions, 28 deletions
diff --git a/src/network/network.cpp b/src/network/network.cpp
index 74e0dadc1..88206ae0c 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -556,39 +556,20 @@ static void NetworkAcceptClients()
/* Set up the listen socket for the server */
static bool NetworkListen()
{
- SOCKET ls;
- struct sockaddr_in sin;
+ NetworkAddress address(_settings_client.network.server_bind_ip, _settings_client.network.server_port);
- DEBUG(net, 1, "Listening on %s:%d", _settings_client.network.server_bind_ip, _settings_client.network.server_port);
+ DEBUG(net, 1, "Listening on %s", address.GetAddressAsString());
- ls = socket(AF_INET, SOCK_STREAM, 0);
+ SOCKET ls = address.Listen(AF_INET, SOCK_STREAM);
if (ls == INVALID_SOCKET) {
- ServerStartError("socket() on listen socket failed");
- return false;
- }
-
- { // reuse the socket
- int reuse = 1;
- /* The (const char*) cast is needed for windows!! */
- if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuse, sizeof(reuse)) == -1) {
- ServerStartError("setsockopt() on listen socket failed");
- return false;
- }
- }
-
- if (!SetNonBlocking(ls)) DEBUG(net, 0, "Setting non-blocking mode failed"); // XXX should this be an error?
-
- sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = _network_server_bind_ip;
- sin.sin_port = htons(_settings_client.network.server_port);
-
- if (bind(ls, (struct sockaddr*)&sin, sizeof(sin)) != 0) {
- ServerStartError("bind() failed");
+ ServerStartError("Could not create listening socket");
return false;
}
- if (listen(ls, 1) != 0) {
- ServerStartError("listen() failed");
+ int reuse = 1;
+ /* The (const char*) cast is needed for windows!! */
+ if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuse, sizeof(reuse)) == -1) {
+ ServerStartError("setsockopt() on listen socket failed");
return false;
}
@@ -795,7 +776,7 @@ bool NetworkServerStart()
/* Try to start UDP-server */
_network_udp_server = true;
- _network_udp_server = _udp_server_socket->Listen(_network_server_bind_ip, _settings_client.network.server_port, false);
+ _network_udp_server = _udp_server_socket->Listen(NetworkAddress(_network_server_bind_ip, _settings_client.network.server_port), false);
_network_company_states = CallocT<NetworkCompanyState>(MAX_COMPANIES);
_network_server = true;