Menu

#258 V&V call gets rejected when IPv6 is enabled

OBSOLETE_(1.18.x)
closed-fixed
None
Protocol/Other
5
2016-04-23
2014-07-07
acran
No

Abstract

When the client has support for IPv6 the generated session description for initializing a audio call also includes IPv6 addresses in the candidate-attributes and in the session name and origin fields which is (most probably) the cause for the rejection with an "Unsupported session description" error.

How to reproduce

With IPv6 enabled on the client try to start an audio call, but it gets rejected with "SIP/2.0 488 Not Acceptable Here" => 52063;reason="Unsupported session description" (see log excerpts).

Workaround

Disable IPv6 on the (linux) client e.g. with

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6

Retry an audio call and it works.

Versions used

  • pidgin-sipe: 1.18.2
  • pidgin: 2.10.9-r1
  • OS: gentoo linux (amd64/stable)
  • Lync server: Lync 2013 (Lync online/Office 365)

Debugging so far

I tried to find the cause (and a fix as well) by inspecting the debug logs. Comparing the logs of incoming (=from a MS lync client) and outgoing (=to a MS lync client) calls the only major difference I could spot was the handling of IPv6 addresses in the sip session description.

I noticed that the MS lync client used "a=x-candidate-ipv6" as attribute for IPv6 addresses instead of just "a=candidate" (see also http://msdn.microsoft.com/en-us/library/hh642615(v=office.12).aspx).
Then I saw that the session name and origin fields also used an IPv6 address in them but as "IP4", which is obviously wrong. Therefore I tried disabling IPv6 on my host which then worked (see above).

Then I patched src/core/sdpmsg.c to use "x-candidate-ipv6"/"IP6" in the corresponding fields when dealing with a IPv6 address. But unfortunately that didn't help so I assume that either there needs to be some more modification to be done or (our) lync server doesn't support IPv6 properly.

But as the IPv6 addresses in the session descriptions are the only major differences I'm now quite sure that's the root cause for this problem (although the bug title now sounds more like voodoo...).

4 Attachments

Related

Release Notes: 2014/08/pidgin-sipe-release-1183

Discussion

  • Stefan Becker

    Stefan Becker - 2014-07-07
    • assigned_to: Jakub Adam
     
  • Stefan Becker

    Stefan Becker - 2014-07-07

    My guess is that that farstream/gstreamer/libnice/libpurple also need to support IPv6 to get this to work.

    If they don't then the only possible work around in the code would be to detect IPv6 addresses and leave them out from the SDP message completely.

     
  • Stefan Becker

    Stefan Becker - 2014-07-07
    • summary: Audio call gets rejected with "Unsupported session description" when client has IPv6 enabled --> V&V call gets rejected when IPv6 is enabled
     
  • David Woodhouse

    David Woodhouse - 2014-07-29

    This was working in 1.17.0. The IPv6 candidate addresses were sent there but not the obviously bogus session name and origin fields. A quick hack to fix the latter by sending a hardcoded Legacy IP address instead of msg->ip doesn't work, though. I'll attempt to bisect and find where the regression was introduced.

     
  • David Woodhouse

    David Woodhouse - 2014-07-29
    $ git bisect bad
    1556f377ecc7c3d4887f8e9f2805a4e7f7e60660 is the first bad commit
    commit 1556f377ecc7c3d4887f8e9f2805a4e7f7e60660
    Author: Jakub Adam <jakub.adam@ktknet.cz>
    Date:   Wed Mar 26 10:56:31 2014 +0100
    
        media: sort candidates in sipe-media.c
    
        With this change we have only a single place where we do the sorting and
        can avoid unnecessary list copies.
    
     
  • Stefan Becker

    Stefan Becker - 2014-07-30

    Moving from an unsorted list, that is sorted when it is dumped, to a sorted candidate list changed the value of msg->ip in sipe_media_to_sdpmsg(). IMHO the code only happened to work by luck before, i.e. candidates with IPv4 addresses were added to the list first.

    This regression was introduced in 1.18.1.

    This should be fixed in git commit 3966130 which updates the code to reject any IPv6 address strings.

    @reporters: please verify the fix, because I never had any account where V&V worked.

     
    • acran

      acran - 2014-07-30

      Hey Stefan,

      I tested [396613] with IPv6 enabled on the host and it worked for me and the call got successfully established.

      So from my side this bug is now fixed, thank you very much! =)

       
  • Stefan Becker

    Stefan Becker - 2014-08-01
    • status: open --> closed-fixed
    • assigned_to: Jakub Adam --> Stefan Becker
     
  • Stefan Becker

    Stefan Becker - 2014-08-01

    Thanks for the feedback. CLOSING

     
  • David Woodhouse

    David Woodhouse - 2014-08-04

    Works here too. Apologies for the delayed response; I don't seem to be receiving all update emails from SourceForce for some reason.

    Thanks.

     

Log in to post a comment.