From 05b4b0d7ce55e971021f39195f50fb122b7c0732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 23 Jan 2006 13:30:17 +0000 Subject: [PATCH] Node monitoring didn't work because unflattening KMessages didn't take the message header into account. It worked before at some point as BLooper was letting the looper handle messages to invalid targets - they are now just dropped. This fixes bug #93. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16045 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/app/MessagePrivate.h | 8 ++++++++ src/kits/app/Message.cpp | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/headers/private/app/MessagePrivate.h b/headers/private/app/MessagePrivate.h index 2d51270aaf..be1ae2aff0 100644 --- a/headers/private/app/MessagePrivate.h +++ b/headers/private/app/MessagePrivate.h @@ -26,6 +26,14 @@ class BMessage::Private { fMessage->fPreferred = token == B_PREFERRED_TOKEN; } + inline void SetReply(team_id team, port_id port, int32 token) + { + fMessage->fReplyTo.port = port; + fMessage->fReplyTo.target = token; + fMessage->fReplyTo.team = team; + fMessage->fReplyTo.preferred = token == B_PREFERRED_TOKEN; + } + inline void SetReply(BMessenger messenger) { BMessenger::Private mp(messenger); diff --git a/src/kits/app/Message.cpp b/src/kits/app/Message.cpp index 5da3f341ac..435f9f1e28 100644 --- a/src/kits/app/Message.cpp +++ b/src/kits/app/Message.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -2171,9 +2172,14 @@ convert_message(const KMessage *fromMessage, BMessage *toMessage) if (!fromMessage || !toMessage) return B_BAD_VALUE; - // make empty and init what of the target message + // make empty and init the header of the target message toMessage->MakeEmpty(); toMessage->what = fromMessage->What(); + + BMessage::Private toPrivate(toMessage); + toPrivate.SetTarget(fromMessage->TargetToken()); + toPrivate.SetReply(B_SYSTEM_TEAM, fromMessage->ReplyPort(), + fromMessage->ReplyToken()); // iterate through the fields and import them in the target message KMessageField field;