From 632d74c6b1a17f3bc3419158dfc1bb5a2e5f77b5 Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 3 Apr 2009 01:24:52 +0000 Subject: (svn r15922) -Codechange: unify the ways to listen on a socket --- src/network/network.cpp | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) (limited to 'src/network/network.cpp') 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(MAX_COMPANIES); _network_server = true; -- cgit v1.2.3-70-g09d2