* Added more debug output.
* In handle_reply(), in case the port message code is not as expected, don't return B_OK and let the caller proceed with an uninitialized BMessage, but return an error. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10762 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
7e3ac9f35f
commit
26afdd622e
|
@ -30,6 +30,11 @@
|
||||||
|
|
||||||
#define USING_TEMPLATE_MADNESS
|
#define USING_TEMPLATE_MADNESS
|
||||||
|
|
||||||
|
// debugging
|
||||||
|
//#define DBG(x) x
|
||||||
|
#define DBG(x) ;
|
||||||
|
#define PRINT(x) DBG({ printf("[%6ld] ", find_thread(NULL)); printf x; })
|
||||||
|
|
||||||
// Standard Includes -----------------------------------------------------------
|
// Standard Includes -----------------------------------------------------------
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
@ -1778,6 +1783,8 @@ status_t BMessage::_send_(port_id port, int32 token, bool preferred,
|
||||||
bigtime_t timeout, bool reply_required,
|
bigtime_t timeout, bool reply_required,
|
||||||
BMessenger& reply_to) const
|
BMessenger& reply_to) const
|
||||||
{
|
{
|
||||||
|
PRINT(("BMessage::_send_(port: %ld, token: %ld, preferred: %d): "
|
||||||
|
"what: %lx (%.4s)\n", port, token, preferred, what, (char*)&what));
|
||||||
BMessage tmp_msg;
|
BMessage tmp_msg;
|
||||||
tmp_msg.fPreferred = fPreferred;
|
tmp_msg.fPreferred = fPreferred;
|
||||||
tmp_msg.fTarget = fTarget;
|
tmp_msg.fTarget = fTarget;
|
||||||
|
@ -1812,6 +1819,7 @@ status_t BMessage::_send_(port_id port, int32 token, bool preferred,
|
||||||
self->fReplyRequired = tmp_msg.fReplyRequired;
|
self->fReplyRequired = tmp_msg.fReplyRequired;
|
||||||
self->fReplyTo = tmp_msg.fReplyTo;
|
self->fReplyTo = tmp_msg.fReplyTo;
|
||||||
tmp_msg.init_data();
|
tmp_msg.init_data();
|
||||||
|
PRINT(("BMessage::_send_() done: %lx\n", err));
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
@ -1910,6 +1918,7 @@ static status_t handle_reply(port_id reply_port,
|
||||||
bigtime_t timeout,
|
bigtime_t timeout,
|
||||||
BMessage* reply)
|
BMessage* reply)
|
||||||
{
|
{
|
||||||
|
PRINT(("handle_reply(port: %ld)\n", reply_port));
|
||||||
status_t err;
|
status_t err;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -1917,6 +1926,7 @@ static status_t handle_reply(port_id reply_port,
|
||||||
} while (err == B_INTERRUPTED);
|
} while (err == B_INTERRUPTED);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
{
|
{
|
||||||
|
PRINT(("handle_reply() error 1: %lx\n", err));
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
// The API lied. It really isn't an error code, but the message size...
|
// The API lied. It really isn't an error code, but the message size...
|
||||||
|
@ -1939,16 +1949,20 @@ static status_t handle_reply(port_id reply_port,
|
||||||
|
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
{
|
{
|
||||||
|
PRINT(("handle_reply() error 2: %lx\n", err));
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*pCode == 'PUSH')
|
if (*pCode == 'PUSH')
|
||||||
{
|
{
|
||||||
|
PRINT(("handle_reply() error 3: %x\n", B_ERROR));
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
if (*pCode != 'pjpp')
|
if (*pCode != 'pjpp')
|
||||||
{
|
{
|
||||||
return B_OK;
|
PRINT(("handle_reply() error 4: port message code not 'pjpp' but "
|
||||||
|
"'%lx'\n", *pCode));
|
||||||
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = reply->Unflatten(pMem);
|
err = reply->Unflatten(pMem);
|
||||||
|
@ -1959,6 +1973,7 @@ static status_t handle_reply(port_id reply_port,
|
||||||
{
|
{
|
||||||
delete[] pAllocd;
|
delete[] pAllocd;
|
||||||
}
|
}
|
||||||
|
PRINT(("handle_reply() done: %lx\n", err));
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue