I'm not sure, what's the right project to describe this problem. Recently I ran an upgrade on Arch Linux that updated libnice (0.1.7-1 -> 0.1.10-1). It's a dependency of farstream-0.1 (0.1.2-4) which is a depency of libpurple (2.10.11-1) which is a dependency of pidgin-sipe (1.18.5-1). After the upgrade pidgin-sipe fails to join to conferences and fails with the following error message:
Error occured
Unable to establish a call
488 Not Acceptable Here
Error parsing SDP
After downgrading libnice back to version 0.1.7-1 audio started to work again.
IMHO the first thing you should check if you also need to install the libnice gstreamer support. Other distributions have factored out the gstreamer support into own package, e.g. on Fedora:
Without it you will not be able to make any V&V calls. https://www.archlinux.org/packages/extra/x86_64/libnice/files/ shows that the file seems to be included.
Anyway if you want any fix for this, we need a --debug log from a call before and after the upgrade. Otherwise I will close this as NOTABUG.
Please also check that the nice gstreamer plugin works after the upgrade:
I have the logs now. Do you want them as copy/pasted here or should I send them in a private message or email?
I can't see any libnice-gstreamer package in Arch Linux. Instead libnice has an optional dep to gstreamer, which is installed in the system.
Please attach them here, because Jakub will need them.
Did you check the gst-inspect command?
Here are bit obfuscated fragments of the log files.
Looking at the log I see more
backend-fs2: got new candidate ...
messages with the new libnice, leading to a much longera=candidate ...
list in the INVITE SDP message. That SDP message is then rejected by the other site as not acceptable.I see some candidates with port
0
, not sure if that is the cause of the rejection.@Timo: did you try to update to SIPE 1.19.0? It has some changes for libnice, but I'm not sure if they will any affect on your problem.
@Timo: Arch Linux now has SIPE 1.19.0. Please update and retry with the newer libnice.
Unfortunately pidgin-sipe 1.19.0-1 doesn't help with the problem.
--debug
log please. git commit 7d7db58, included in 1.19.0 should have addressed the port 0 issues.Here you are.
Looks like the port 0 handling does not work in all cases, I still see them in the SDP message from the latest log. Jakub?
BTW: the part with the version information is missing from the log. Can you please include that, so that we can be sure that you are really using SIPE 1.19.0?
Yes, it's 1.19.0.
I think this is an incompatibility between libnice 0.1.10 and Farstream 0.1.2.
Since 0.1.10, libnice always generates TCP candidates and it's a responsibility of the application to filter out those candidates it doesn't want to use. However, Farstream 0.1.2 supports only UDP and thus wrongly reports the new candidates as being UDP though in fact they are TCP.
Because zero port handling in SIPE looks only at TCP candidates, it lefts your (UDP-only) candidate list untouched.
This issue is solved in Farstream 0.2.7, but updating the Arch package to that version wouldn't be a solution since 0.2.x branch requires GStreamer 1.0 which in turn is unsupported by libpurple 2.x. Farstream 0.1.x development was already abandoned so we can't expect any update there.
I'm working on a patch for SIPE that tries to filter out the incorrectly identified TCP candidates and will post it likely tomorrow.
Thanks for information, Jakub. I also informed Arch libpurple packager about farstream versions. Maybe it's be time to update libpurple dependency to farstream.
No, you can't update libpurple-2.x to farstream-0.2.x, because it is as dead as farstream-0.1.x :-)
libpurple-3.x moves to gstreamer-1.0 and farstream-0.2.x. Nobody knows when Pidgin 3.x will be released, though...
I've created a patch that tries to remove all those wrongly identified candidates.
Please fetch and try SIPE from my farstream-tcp-fix branch (current mob + the fix) and tell me whether it helps. If everything is okay, I'll push the commit upstream.
While trying to understand the patch and make sure it doesn't leak, I came up with this simplification and fixed some minor things that I noticed were missing.
Thanks Stefan, looks good and much cleaner. I had to extend it a bit though, because I noticed that for candidates other than host we have to check also base ports: 7ac05327.
Now let's give Timo chance to try it out.
I made Arch PKGBUILD to use https://github.com/xhaakon/sipe/archive/7ac053271f74f3c3d3b2d2d01dccda13237b344b.zip but it seems to miss configure script and other build-related things.
That won't work, because it is not a release package. You need to run
./git-build.sh
and the plugin will besrc/purple/.libs/libsipe.so
. If you still want to create the tarball for the PKGBUILD, then usemake dist-bzip2
.I made the PKGBUILD use git-build.sh instead of configure stuff. The pakcage was created and installed, but when I start Pidgin, the status combobox and buddy list are empty. There are also no option to join to a meeting.
Then the plugin binary
libsipe.so
can't be loaded by libpurple. You will see an error message in the --debug log that libsipe.so failed to load, maybe with a reason.