From c39ecc608fa5c0494f64f0977fd451ad45490003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Apr 2009 19:07:38 +0000 Subject: [PATCH] * If getting a new port message failed, we must release the port's write sem again, or else the port loses capacity. * This fixes bug #2720. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30517 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/port.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/port.cpp b/src/system/kernel/port.cpp index 700fd10fb5..fc39248446 100644 --- a/src/system/kernel/port.cpp +++ b/src/system/kernel/port.cpp @@ -1192,8 +1192,12 @@ writev_port_etc(port_id id, int32 msgCode, const iovec *msgVecs, return status; msg = get_port_msg(msgCode, bufferSize); - if (msg == NULL) + if (msg == NULL) { + // Give up our slot in the queue again, and let someone else try and fail + // TODO: try to free some resources and try again? + release_sem(cachedSem); return B_NO_MEMORY; + } // sender credentials msg->sender = geteuid();