From 470ca87e4d121c297edc9bdf2e66d04cd42b46a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 4 Jul 2007 16:47:20 +0000 Subject: [PATCH] * _Update() was called too early in the constructor of class Service; that caused incorrect values in fSet, and fMinSocket which also resulted in select() never to return (in would only work for settings you changed after the net_server was run). * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21551 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/net/Services.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/servers/net/Services.cpp b/src/servers/net/Services.cpp index df17f633d2..e2ce5215e3 100644 --- a/src/servers/net/Services.cpp +++ b/src/servers/net/Services.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2006, Haiku, Inc. All Rights Reserved. + * Copyright 2006-2007, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -126,8 +126,6 @@ Services::Services(const BMessage& services) fUpdate(0), fMaxSocket(0) { - _Update(services); - // setup pipe to communicate with the listener thread - as the listener // blocks on select(), we need a mechanism to interrupt it if (pipe(&fReadPipe) < 0) { @@ -144,6 +142,8 @@ Services::Services(const BMessage& services) fMinSocket = fWritePipe + 1; fMaxSocket = fWritePipe + 1; + _Update(services); + fListener = spawn_thread(_Listener, "services listener", B_NORMAL_PRIORITY, this); if (fListener >= B_OK) resume_thread(fListener); @@ -237,7 +237,7 @@ Services::_StartService(struct service& service) } _NotifyListener(); -printf("Starting service '%s'\n", service.name.c_str()); + printf("Starting service '%s'\n", service.name.c_str()); return B_OK; } @@ -256,7 +256,8 @@ Services::_StopService(struct service& service) for (; iterator != service.addresses.end(); iterator++) { const service_address& address = *iterator; - ServiceSocketMap::iterator socketIterator = fSocketMap.find(address.socket); + ServiceSocketMap::iterator socketIterator + = fSocketMap.find(address.socket); if (socketIterator != fSocketMap.end()) fSocketMap.erase(socketIterator); @@ -440,7 +441,8 @@ Services::_LaunchService(struct service& service, int socket) pid_t child = fork(); if (child == 0) { setsid(); - // make sure we're in our own session, and don't accidently quit the net_server + // make sure we're in our own session, and don't accidently quit + // the net_server // We're the child, replace standard input/output dup2(socket, STDIN_FILENO); @@ -480,7 +482,6 @@ Services::_Listener() snooze(1000000LL); } -printf("select returned!\n"); if (FD_ISSET(fReadPipe, &set)) { char command; if (read(fReadPipe, &command, 1) == 1 && command == 'q')