You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@thrift.apache.org by C Bergström <cb...@pathscale.com> on 2019/03/21 09:38:30 UTC

Thrift Python vs C# Bi-Directional difference

Hi

I've reviewed the C# code as best as I can and it looks standard and I
can't figure out the difference below.

I will explain what I mean by "not working".

The client Python code is able to auth and establish a connection.
However, when the server pushes a message and it's received, I think
we are not doing a reply it expects and then closes the connection.
The only difference I can see between working and non-working is the
reply (captured via pcap). This seems to be the last error before the
core my Python port is complete. (I've tried for over a week to fix
this, but without luck.)

As Jens was kind enough to help decode my problem before he said
>> \x80\x01\x00\x01
>Thrift message header

However the working example has a lot before the Thrift message
header. What is this?

Working C#:
load      = '\x00\x00\x00#\x0f\xff\x00\t\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x80\x01\x00\x02\x00\x00\x00\x08push_msg\x00\x00\x00\x00\x00'


Not working Python:
load      = '\x80\x01\x00\x03\x80\x01\x00\x02\x00\x00\x00\x08push_msg\x00\x00\x00\x00'

Thanks kindly,

Christopher

Re: Thrift Python vs C# Bi-Directional difference

Posted by Jens Geyer <je...@hotmail.com>.
I noticed that as well and made a comment in my post about this. I have no 
idea what that could be. As I ses it, one would need to crawl through at 
least the last one or two messages before the one where it went bust. Its 
probably impossible to tell just from this snippet.

Have fun,
JensG

-----Ursprüngliche Nachricht----- 
From: C Bergström
Sent: Thursday, March 21, 2019 10:38 AM
To: user@thrift.apache.org
Subject: Thrift Python vs C# Bi-Directional difference

Hi

I've reviewed the C# code as best as I can and it looks standard and I
can't figure out the difference below.

I will explain what I mean by "not working".

The client Python code is able to auth and establish a connection.
However, when the server pushes a message and it's received, I think
we are not doing a reply it expects and then closes the connection.
The only difference I can see between working and non-working is the
reply (captured via pcap). This seems to be the last error before the
core my Python port is complete. (I've tried for over a week to fix
this, but without luck.)

As Jens was kind enough to help decode my problem before he said
>> \x80\x01\x00\x01
>Thrift message header

However the working example has a lot before the Thrift message
header. What is this?

Working C#:
load      = 
'\x00\x00\x00#\x0f\xff\x00\t\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x80\x01\x00\x02\x00\x00\x00\x08push_msg\x00\x00\x00\x00\x00'


Not working Python:
load      = 
'\x80\x01\x00\x03\x80\x01\x00\x02\x00\x00\x00\x08push_msg\x00\x00\x00\x00'

Thanks kindly,

Christopher