Bug#602764: ekiga: listens to wrong ip

David Fries david at fries.net
Sun Nov 7 21:19:01 UTC 2010


Package: ekiga
Version: 3.2.7-2
Severity: important
Tags: patch


Ekiga/opal initially listens to each individual ip:port on the system.
When a call is started it is picking the first non-localhost ip
address and binding to that one, which is a very bad guess as to which
IP the remote system is going to send RPT packets to.  This means if
the system has multiple ip addresses it either works, or all the
incoming UDP packets get rejected with an ICMP error because ekiga is
listening to a different ip and port.

Capture ekiga -d 4, and search for "Initial interface list:" for the
interface order.

Also, on startup not only does ekiga bind to each ip address it sends
out the initial subscribe SIP requests from each to the remote server.
In my case only one ip address is on the network which has a default
route, the other networks are in the 192.168.0.0 and 172.20.0.0
ranges, which is causing packets to be routed to internet with local
non-routable ip addresses.  If it isn't going to look at the routing
tables to figure out which local ip addresses can get to the route
system, it should just call connect, let the kernel assign the local
ip address, and read what that local ip address is.

Until some more sane algorithm is picked, here is a hack listen to all
of them.  I'm not going to call this the right solution, but it does
let me hear the other end.

diff --git a/src/opal/rtpconn.cxx b/src/opal/rtpconn.cxx
index 499f58b..ae007d9 100644
--- a/src/opal/rtpconn.cxx
+++ b/src/opal/rtpconn.cxx
@@ -138,6 +138,11 @@ RTP_Session * OpalRTPConnection::CreateSession(const OpalTransport & transport,
 
   WORD firstPort = manager.GetRtpIpPortPair();
   WORD nextPort = firstPort;
+  // Ekiga/opal is picking the first non-localhost ip address and binding to
+  // that one, which is a very bad guess as to which ip the remote system is
+  // going to connect with.  Until some more sane algorithm is picked, listen
+  // to all of them.
+  localAddress=PIPSocket::GetDefaultIpAny();
   while (!rtpSession->Open(localAddress, nextPort, nextPort, manager.GetRtpIpTypeofService(), natMethod, rtpqos)) {
     nextPort = manager.GetRtpIpPortPair();
     if (nextPort == firstPort) {
-- 
1.7.2.3


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (x86_64)

Kernel: Linux 2.6.36-rc7+ (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=en_US.ISO-8859-15 (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/dash

Versions of packages ekiga depends on:
ii  evolution-data-server  2.30.3-2          evolution database backend server
ii  gconf2                 2.28.1-5          GNOME configuration database syste
ii  libatk1.0-0            1.30.0-1          The ATK accessibility toolkit
ii  libavahi-client3       0.6.27-2          Avahi client library
ii  libavahi-common3       0.6.27-2          Avahi common library
ii  libavahi-glib1         0.6.27-2          Avahi glib integration library
ii  libc6                  2.11.2-6+squeeze1 Embedded GNU C Library: Shared lib
ii  libdbus-glib-1-2       0.88-2            simple interprocess messaging syst
ii  libebook1.2-9          2.30.3-2          Client library for evolution addre
ii  libedataserver1.2-13   2.30.3-2          Utility library for evolution data
ii  libgcc1                1:4.4.5-4         GCC support library
ii  libgconf2-4            2.28.1-5          GNOME configuration database syste
ii  libglib2.0-0           2.24.2-1          The GLib library of C routines
ii  libgtk2.0-0            2.20.1-2          The GTK+ graphical user interface 
ii  libldap-2.4-2          2.4.23-6          OpenLDAP libraries
ii  libnotify1 [libnotify1 0.5.0-2           sends desktop notifications to a n
ii  libopal3.6.8           3.6.8~dfsg-2      Open Phone Abstraction Library - s
ii  libpango1.0-0          1.28.3-1          Layout and rendering of internatio
ii  libpt2.6.7             2.6.7-1           Portable Tools Library
ii  libsasl2-2             2.1.23.dfsg1-6    Cyrus SASL - authentication abstra
ii  libsigc++-2.0-0c2a     2.2.4.2-1         type-safe Signal Framework for C++
ii  libstdc++6             4.4.5-4           The GNU Standard C++ Library v3
ii  libx11-6               2:1.3.3-3         X11 client-side library
ii  libxext6               2:1.1.2-1         X11 miscellaneous extension librar
ii  libxml2                2.7.7.dfsg-4      GNOME XML library
ii  libxv1                 2:1.0.5-1         X11 Video extension library

Versions of packages ekiga recommends:
ii  gvfs                     1.6.4-2         userspace virtual filesystem - ser
ii  yelp                     2.30.1+webkit-1 Help browser for GNOME

Versions of packages ekiga suggests:
pn  asterisk                      <none>     (no description available)
pn  gnugk                         <none>     (no description available)
pn  mediaproxy                    <none>     (no description available)
pn  rtpproxy                      <none>     (no description available)
pn  ser                           <none>     (no description available)
pn  siproxd                       <none>     (no description available)
pn  yate                          <none>     (no description available)

-- no debconf information






More information about the pkg-gnome-maintainers mailing list