Tobias Mundt created THRIFT-3000:
------------------------------------

             Summary: .NET implementation has troupble with mixed IP modes
                 Key: THRIFT-3000
                 URL: https://issues.apache.org/jira/browse/THRIFT-3000
             Project: Thrift
          Issue Type: Bug
          Components: C# - Library
    Affects Versions: 0.9.2, 0.9.3
         Environment: Windows 7 / Windows 8 / Windows 8.1 / .NET 3.5 / .NET 4.0 
/ .NET 4.5
            Reporter: Tobias Mundt
            Priority: Minor
             Fix For: 0.9.3


The .NET implementation of TSocket and TServerSocket use the .NET class 
TcpClient and TcpListener. When creating instances of theses classes the .NET 
framework estabiles either an IPv4 or an IPv6 lsitener/client depending on the 
order of network protocols set in the control center for the network adapter. 
Mention that only the first type of protocol is used not both. Microsoft 
switched the default order og ipv4 over ipv6 in windows 7 to ipv6 over ipv4 in 
windows 8  and 8.1. That means that a thrift component on a win 7 machine can 
not talk to the same component on a win 8 machine since they fired of different 
listeners. 

When upgrading to .NET 4.5 this can be solved by setting the DualMode=true flag 
on the TcpListener.Server and the TcpClient.Client sockets. Since DualMode is 
not supported in Mono as of February 2015. The patch can not be applied.

Another possible solutions would be to get the configuration of the network 
protocol order manually and apply the approvriate ip protocol by hand.

Yet a third possibility would by to add a parameter to the TSocket and 
TServerSocket constructors to let the user choose the behaviour of the 
TcpListener and TcpClient

This problem was attmepted to be solved in the pull request 
https://github.com/apache/thrift/pull/377 which was rejected due to mono 
incompatibility



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to