----- Original Message ----- > From: "Phil Mayers" <p.may...@imperial.ac.uk> > To: twisted-python@twistedmatrix.com > Sent: Thursday, December 12, 2013 10:33:21 PM > Subject: Re: [Twisted-Python] Queries about connecting to a XML-RPC server > over IPv6 > > On 12/12/13 12:23, Amit Saha wrote: > > > > > > ----- Original Message ----- > >> From: "Amit Saha" <as...@redhat.com> > >> To: "Twisted general discussion" <twisted-python@twistedmatrix.com> > >> Sent: Tuesday, December 10, 2013 11:59:27 AM > >> Subject: Re: [Twisted-Python] Queries about connecting to a XML-RPC server > >> over IPv6 > >> > >> > >> > >> ----- Original Message ----- > >>> From: "Phil Mayers" <p.may...@imperial.ac.uk> > >>> To: twisted-python@twistedmatrix.com > >>> Sent: Monday, December 9, 2013 7:33:17 PM > >>> Subject: Re: [Twisted-Python] Queries about connecting to a XML-RPC > >>> server > >>> over IPv6 > >>> > >>> On 09/12/13 05:28, Amit Saha wrote: > >>> > >>>> proxy = Proxy('http://localhost6:8000') > >>>> proxy.callRemote('my_proxy_method').addCallbacks(printValue, printError) > >>>> > >>>> > >>>> When I run it, i get "No route to host: 101, Network is unreachable". > >>>> > >>>> However, 'curl -6 localhost:8000' succeeds. What could be going on here? > >>> > >>> The IPv6 support in Twisted is very new - check your version even *has* > >>> it - and it's still a work in progress. You might find that you can't do > >>> this. I'd have to read the code to be sure and I don't have time right > >>> now, but my guess is that t.w.xmlrpc isn't "getaddrinfo"-ised so won't > >>> connect to IPv6 names. > >>> > >>> If your version of Twisted supports it, you could probably work around > >>> this by sub-classing Proxy and calling reactor.connectTCP('::1', 8000) > >>> to attach the protocol yourself. > >> > >> Thanks for your reply, Phil. So, I basically modified > >> twisted/web/xmlrpc.py > >> so that > >> when it was calling connectTCP(), i substituted '::1' in place of > >> self.host > >> and yes the method is called successfully. > >> > >> I will consider your other hints and see if there is an easy way to work > >> around this > >> in my particular use case. > > > > I finally ended up doing this: > > Just to point out this is obviously a pretty hackish way of doing it; > for starters, getaddrinfo() is blocking, so you should use deferToThread > at minimum.
Indeed it is very hackish. It is basically the first thing that helped me solve the problem. > > You might want to look at: > > http://twistedmatrix.com/trac/browser/tags/releases/twisted-13.2.0/twisted/internet/endpoints.py#L707 > > ...for inspiration. Thanks, I will take a look and hopefully can modify my approach. Best, Amit. -- Amit Saha <http://echorand.me> _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python