Ok! I'm a bit rusty on the C++ side of things, but I'll do my best.

On Fri, Jan 12, 2018 at 5:00 PM, Chet Murthy <murthy.c...@gmail.com> wrote:

> Andre',
>
> OK, let's go with C++.  Can you write a C++ program that demarshals the
> flat string you showed us, intro an object and prints the object out (to
> verify that it's correctly demarshalled)?  A standalone C++ program?  Then
> a standalone Python program that does the same thing, and fails (of
> course).  This would be a working testcase, that we could use to diagnose
> your prroblem.
>
> --chet--
>
>
> On Fri, Jan 12, 2018 at 6:05 AM, André Lemos <ale...@plux.info> wrote:
>
> > Hi,
> >
> >
> > 1) Not quite sure which language generates the message, but I'm thinking
> > possibly C++. Not Python, for sure. I do not have access to the source
> > file, although I do have access to examples in C++ and C# for consumers,
> > that do work.
> >
> > 2) You mean the .thrift file?
> >
> >
> >
> > Thank you!
> >
> >
> > On Thu, Jan 11, 2018 at 8:42 PM, Chet Murthy <murthy.c...@gmail.com>
> > wrote:
> >
> > > Andre',
> > >
> > > (1) The message is generated in which language?  Python?
> > >
> > > (2) Can you supply the IDL for the message payload and message itself?
> > >
> > > On Thu, Jan 11, 2018 at 10:35 AM, André Lemos <ale...@plux.info>
> wrote:
> > >
> > > > On Thu, Jan 11, 2018 at 5:32 PM, Kevin Clark <kevin.cl...@gmail.com>
> > > > wrote:
> > > >
> > > > > On Thu, Jan 11, 2018 at 8:41 AM André Lemos <ale...@plux.info>
> > wrote:
> > > > >
> > > > > > On Thu, Jan 11, 2018 at 4:34 PM, Kevin Clark <
> > kevin.cl...@gmail.com>
> > > > > > wrote:
> > > > > >
> > > > > > > On Thu, Jan 11, 2018 at 8:19 AM André Lemos <ale...@plux.info>
> > > > wrote:
> > > > > > >
> > > > > > > > On Thu, Jan 11, 2018 at 4:13 PM, Kevin Clark <
> > > > kevin.cl...@gmail.com>
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > > > On Thu, Jan 11, 2018 at 7:40 AM André Lemos <
> > ale...@plux.info>
> > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Hi,
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > When parsing through a TBinaryProtocol, trying to get the
> > > > > > > > > readMessageBegin,
> > > > > > > > > > readI32, returns 16777216, which will raise an EOFError,
> > > > because
> > > > > > it's
> > > > > > > > > just
> > > > > > > > > > a too big of a value. If I use something like 25, I do
> get
> > > > > > something
> > > > > > > > > pretty
> > > > > > > > > > closer to what I am trying to get, although I still get
> the
> > > > > initial
> > > > > > > bit
> > > > > > > > > of
> > > > > > > > > > the protocol, and not just the name I am trying to get.
> > > > > > > > > >
> > > > > > > > > > Any hints as to where I should be looking?
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Providing the language of the lib you’re using, the code,
> and
> > > the
> > > > > > > message
> > > > > > > > > you expect to be on the wire would make it easier for
> someone
> > > to
> > > > > help
> > > > > > > > you.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I am using Python 2, I've sent the code. The message I am
> > trying
> > > to
> > > > > > > parse,
> > > > > > > > looks like this:
> > > > > > > >
> > > > > > > >
> > > > > > > > \x01\x00\x00\x00\xed\x00\x00\x00\x80\x01\x00\x04\x00\x00\
> > > > > > > x00\x15RequestProcessListing\x00\x00\x00\x00\x0c\x00\x01\
> > > > > > > x0b\x00\x01\x00\x00\x00\x10\xfe\x8e\xc3F\xed\\\x8aG\x97+\
> > > > > > > x0cp\x0eY\x05U\x0b\x00\x02\x00\x00\x00\x0fThe
> > > > > > > > Observer XT\x08\x00\x03\x00\x00\x00\
> > x02\x0b\x00\x04\x00\x00\x00\
> > > > > x12The
> > > > > > > > Observer XT
> > > > > > > >
> > > > > > > > 14\x0b\x00\x05\x00\x00\x00\x08LEMOS-PC\x0b\x00\x06\x00\
> > > > > > > x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
> > > > > > > x00\x00\x00\x00\x00\x0c\x00\x07\x08\x00\x01\x00\x00\x00\
> > > > > > > x01\x0c\x00\x02\x0c\x00\x01\x0b\x00\x01\x00\x00\x00\x00\
> > > > > > > x08\x00\x02\x00\x00\x00\x00\x0f\x00\x03\x0c\x00\x00\x00\
> > > > > > > x00\x0f\x00\x04\x0c\x00\x00\x00\x00\x00\x00\x0c\x00\x03\
> > > > > > > x02\x00\x01\x01\x02\x00\x02\x01\x0b\x00\x03\x00\x00\x00\
> > > > > > > x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
> > > > > > > x00\x00\x00\x00\x00\x00\x00
> > > > > > >
> > > > > > >
> > > > > > > Well the number you’ve pasted looks like it’s 1 << 24, so it
> > should
> > > > fit
> > > > > > in
> > > > > > > a 32 bit int just fine. I’m not seeing actual code anywhere,
> just
> > > > > > > descriptions of method calls. I suspect this is a simple
> > oversight
> > > > but
> > > > > > it’s
> > > > > > > hard to tell you more without the actual code and the precise
> > error
> > > > > > > message.
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > here's the code (Python 2):
> > > > > >
> > > > > >     trans1 = TTransport.TMemoryBuffer()
> > > > > >     trans1.open()
> > > > > >     trans = TTransport.TMemoryBuffer(body)
> > > > > >     trans.open()
> > > > > >     iprot = TBinaryProtocol.TBinaryProtocol(trans)
> > > > > >     oprot = TBinaryProtocol.TBinaryProtocol(trans1,
> > > strictWrite=False)
> > > > > >     tr = Processor(CommonService.CommonService.Iface())
> > > > > >     tr.process(iprot, oprot)
> > > > > >
> > > > > >
> > > > > > issue is that readI32() gets me a EOFError as it tries to read
> way
> > > past
> > > > > the
> > > > > > full message.
> > > > >
> > > > >
> > > > > Ah! Issue looks like it’s youre using strictWrite=False in one of
> the
> > > > > protocols. That’s going to skip writing the version which the read
> > side
> > > > is
> > > > > looking for. Been too long since I touched the code to remember the
> > > > > intended purpose of those args, but that should at least tell you
> why
> > > > it’s
> > > > > blowing up - it expects more data because a 32 bit version should
> be
> > > > there
> > > > > in the header.
> > > > >
> > > > > Hope that helps.
> > > >
> > > >
> > > >
> > > > Still the same problem...
> > > >
> > > >
> > > >   File "thrift/protocol/TBinaryProtocol.py", line 153, in
> > > readMessageBegin
> > > >     name = self.trans.readAll(sz)
> > > >   File "thrift/transport/TTransport.py", line 65, in readAll
> > > >     raise EOFError()
> > > > EOFError
> > > >
> > > >
> > > >
> > > > :\
> > > >
> > >
> >
>

Reply via email to