commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 21/61: libports: work around bugs in server termination


From: Samuel Thibault
Subject: [hurd] 21/61: libports: work around bugs in server termination
Date: Tue, 27 May 2014 08:32:10 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit c62117165e685beba2f210f87d7d88f578a9322e
Author: Justus Winter <address@hidden>
Date:   Thu Apr 17 15:43:11 2014 +0200

    libports: work around bugs in server termination
    
    Some servers use ports_manage_port_operations_one_thread to process
    requests and terminate when it returns. Since many of them don't detach
    before shutting down, a client may receive an error if its request
    arrived while the server is shutting down. Prevent those spurious errors
    by forcing ports_manage_port_operations_one_thread not to return.
    
    This is the same change as 235491231bdd1fd93507c835767503f047e10b91
    introduced for ports_manage_port_operations_multithread.
    
    * libports/manage-one-thread.c
    (ports_manage_port_operations_one_thread): Force timeout to 0.
---
 libports/manage-one-thread.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/libports/manage-one-thread.c b/libports/manage-one-thread.c
index 4ea740b..cbd2df7 100644
--- a/libports/manage-one-thread.c
+++ b/libports/manage-one-thread.c
@@ -85,7 +85,14 @@ ports_manage_port_operations_one_thread (struct port_bucket 
*bucket,
 
       return status;
     }
-  
+
+  /* XXX It is currently unsafe for most servers to terminate based on
+     inactivity because a request may arrive after a server has
+     started shutting down, causing the client to receive an error.
+     Prevent the service loop from terminating by setting TIMEOUT to
+     zero.  */
+  timeout = 0;
+
   do
     err = mach_msg_server_timeout (internal_demuxer, 0, bucket->portset, 
                                   timeout ? MACH_RCV_TIMEOUT : 0, timeout);

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]