Mit, 30 Aug 2000 wrote Dirk Mueller: > On Mit, 30 Aug 2000, Matthias Elter wrote: > > > Kicker sometimes hangs in a DCOP call when it loads multiple applets external (via the appletproxy) on startup. I'm a bit clueless about what is happening. > > this also happened with the old API. For some reason there application name > was already registered, but the process itself died. then the dcop call > hangs forever. This is strange, because the dcopserver is supposed to handle that. If a connection dies, everybody who's waiting for a reply receives a replyFailed. There may be something wrong with the order, though. I just applied the following patch: --- dcopserver.cpp 2000/08/08 08:13:45 1.98 +++ dcopserver.cpp 2000/08/30 16:15:01 @@ -795,7 +795,8 @@ // Send DCOPReplyFailed to all in conn->waitingForReply while (!conn->waitingForReply.isEmpty()) { - IceConn iceConn = conn->waitingForReply.take(0); + IceConn iceConn = conn->waitingForReply.getLast(); + conn->waitingForReply.removeLast(); if (iceConn) { DCOPConnection* target = clients.find( iceConn ); qWarning("DCOP aborting call from '%s' to '%s'", target ? target->appId.data() : "" , conn->appId.data() ); @@ -811,7 +812,8 @@ // Send DCOPReplyFailed to all in conn->waitingForDelayedReply while (!conn->waitingForDelayedReply.isEmpty()) { - IceConn iceConn = conn->waitingForDelayedReply.take(); + IceConn iceConn = conn->waitingForDelayedReply.getLast(); + conn->waitingForDelayedReply.removeLast(); if (iceConn) { DCOPConnection* target = clients.find( iceConn ); qWarning("DCOP aborting (delayed) call from '%s' to '%s'", target ? target->appId.data() : "", conn->appId.data() ); I don't believe it makes a difference for the particular problem, though. When it hangs, we need to find out where exactly. Maybe the server keeps rejecting the call and DCOPClient::call tries over and over again? Matthias