Ver Fonte

LibCore: Make TCPServer::listen() report failure instead of asserting

Andreas Kling há 4 anos atrás
pai
commit
f88a7cd4e1

+ 8 - 5
Libraries/LibCore/TCPServer.cpp

@@ -61,14 +61,17 @@ bool TCPServer::listen(const IPv4Address& address, u16 port)
     if (m_listening)
         return false;
 
-    int rc;
     auto socket_address = SocketAddress(address, port);
     auto in = socket_address.to_sockaddr_in();
-    rc = ::bind(m_fd, (const sockaddr*)&in, sizeof(in));
-    ASSERT(rc == 0);
+    if (::bind(m_fd, (const sockaddr*)&in, sizeof(in)) < 0) {
+        perror("TCPServer::listen: bind");
+        return false;
+    }
 
-    rc = ::listen(m_fd, 5);
-    ASSERT(rc == 0);
+    if (::listen(m_fd, 5) < 0) {
+        perror("TCPServer::listen: listen");
+        return false;
+    }
     m_listening = true;
 
     m_notifier = Notifier::construct(m_fd, Notifier::Event::Read, this);

+ 1 - 1
Services/TelnetServer/main.cpp

@@ -126,7 +126,7 @@ int main(int argc, char** argv)
     }
 
     if (!server->listen({}, port)) {
-        perror("listen");
+        warnf("Listening on 0.0.0.0:{} failed", port);
         exit(1);
     }
 

+ 6 - 2
Services/WebServer/main.cpp

@@ -73,8 +73,12 @@ int main(int argc, char** argv)
         client->start();
     };
 
-    server->listen({}, port);
-    printf("Listening on 0.0.0.0:%d\n", port);
+    if (!server->listen({}, port)) {
+        warnf("Failed to listen on 0.0.0.0:{}", port);
+        return 1;
+    }
+
+    outf("Listening on 0.0.0.0:{}", port);
 
     if (unveil("/res/icons", "r") < 0) {
         perror("unveil");