[Pidgin] #12629: bonjour, ipv6 and link-local addresses: Unable to send the message, the conversation couldn't be started.

Pidgin trac at pidgin.im
Tue Sep 14 10:19:17 EDT 2010


#12629: bonjour, ipv6 and link-local addresses: Unable to send the message, the
conversation couldn't be started.
-----------------------------+----------------------------------------------
 Reporter:  ao2              |     Owner:  datallah
     Type:  defect           |    Status:  new     
Component:  Bonjour          |   Version:  2.7.3   
 Keywords:  ipv6 link-local  |  
-----------------------------+----------------------------------------------
 Hi,

 when trying to start a new conversation with a buddy on the local network
 with bonjour, I get the message "''Unable to send the message, the
 conversation couldn't be started.''" in the conversation window.

 Grasping through the log I can see that pidgin (purple) is trying to
 connect via IPv6, as avahi advertised this address first via the presence
 service.
 {{{
 (15:57:47) bonjour: Starting conversation with ao2 at tp0
 (15:57:47) dns: DNS query for 'fe80::290:27ff:fe97:xxxx' queued
 (15:57:47) dns: Created new DNS child 20286, there are now 1 children.
 (15:57:47) dns: Successfully sent DNS request to child 20286
 (15:57:47) dns: Got response for 'fe80::290:27ff:fe97:xxxx'
 (15:57:47) dnsquery: IP resolved for fe80::290:27ff:fe97:xxxx
 (15:57:47) proxy: Attempting connection to fe80::290:27ff:fe97:xxxx
 (15:57:47) proxy: Connecting to fe80::290:27ff:fe97:xxxx:5298 with no
 proxy
 (15:57:47) proxy: Connection attempt failed: Invalid argument
 (15:57:47) bonjour: Error connecting to buddy ao2 at tp0 at
 fe80::290:27ff:fe97:xxxx:5298 error: Invalid argument
 }}}

 If I try ping6 on the address it does not work as is:
 {{{
 $ ping6 fe80::290:27ff:fe97:xxxx
 connect: Invalid argument
 }}}
 But I expected this because link-local IPv6 addresses need a scope
 identifier to be considered unique, if I add it, then ping6 works:
 {{{
 $ ping6 fe80::290:27ff:fe97:xxxx%2
 PING fe80::290:27ff:fe97:xxxx%2(fe80::290:27ff:fe97:xxxx) 56 data bytes
 64 bytes from fe80::290:27ff:fe97:xxxx: icmp_seq=1 ttl=64 time=5.50 ms
 64 bytes from fe80::290:27ff:fe97:xxxx: icmp_seq=2 ttl=64 time=1.68 ms
 }}}
 the "%2" does it, I could also have used "%eth1" with ping6.

 So I think this is the cause of the problem: the network code in purple is
 not setting the correct scope id (see "man ipv6" in linux, look for
 scope_id) when using the ipv6 protocol, this is OK for global and site
 address but not for link-local addresses.

 I also tried telepathy-salut and it works, and looking at its code the
 scope_id is handled there.

 Any hint about where in the purple code this could be fixed? I don't know
 it yet. Ah, the scope_id value could very well be taken from the
 _AvahiIfIndex_ value from the mDNS resolution.

 Thanks,
    Antonio Ospite
    http://ao2.it

-- 
Ticket URL: <http://developer.pidgin.im/ticket/12629>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list