[omniORB] wstring corruption, omniOrb -> Orbacus

Duncan Grisby dgrisby@uk.research.att.com
Fri, 15 Mar 2002 11:07:24 +0000


On Thursday 14 March, brk@jenkon.com wrote:

> omniORB: inputMessage: from giop:tcp:209.210.37.31:4504 24 bytes
> 4749 4f50 0102 0104 0c00 0000 0200 0000 GIOP............
> 0100 0000 0000 0000                     ........

This is a LocateReply message. Splitting it up, we find why omniORB
was unhappy...

GIOP 1.2 MessageHeader

  4749 4f50  GIOP
  0102       version 1.2
  01         flags: little-endian, no more fragments follow
  04         message type: LocateReply
  0c00 0000  message size: 12 bytes

LocateReply message

  0200 0000  request id (matching the id in the LocateRequest)
  0100 0000  locate status: OBJECT_HERE

That should be the end of the message, but Visibroker sent an extra 4
zero bytes. I don't think there's anything in the spec that says that
sending extra data is illegal, but it's still a sign of bad things
happening. If it happens in the context of an request or reply, it's
probably a sign that the two sides are using different IDL. So,
omniORB's default behaviour is to kill the connection if it receives a
message that's too long.

If you run with -ORBstrictIIOP 0, omniORB will ignore the error, and
you should be OK.

Cheers,

Duncan.

-- 
 -- Duncan Grisby  \  Research Engineer  --
  -- AT&T Laboratories Cambridge          --
   -- http://www.uk.research.att.com/~dpg1 --