Package: liborbit2
Version: 1:2.14.3-0.1
Severity: normal
Tags: patch

IPv4 communication is broken in this version of liborbit2, this is documented 
at for example:

http://www.nabble.com/Non-local-IPv4-communication-disabled-in-2.14.3-t2243013.html
and
http://bugzilla.gnome.org/show_bug.cgi?id=354950

This surfaces as a problem when trying to build for example the example orbit 
programs (echo client and server) at:

http://www.gnome.org/projects/ORBit2/orbit-docs/orbit/c264.html

But in my case I was trying to get my NFS mounted homedirectory to work with 
gconfd, by setting environemt variable GCONF_GLOBAL_LOCKS=1 and setting 
ORBIIOPIPv4=1 in /etc/orbitrc. But gconfd would not communicate over the 
network. After a lot of debug I tracked it down to this liborbit2 issue.

The following patch to liborbit2 solves this problem (grabbed from upstream and 
modified to apply on the debian package):

--- orbit2-2.14.3.orig/linc2/src/linc-connection.c
+++ orbit2-2.14.3/linc2/src/linc-connection.c
@@ -495,27 +495,6 @@
        CNX_UNLOCK (cnx);
 }

-static unsigned long
-get_inet_addr (const char *str)
-{
-        struct hostent *hp;
-        struct in_addr *addr_ptr;
-        unsigned long addr;
-
-        if (isdigit (*str)) {
-                        addr = inet_addr (str);
-                } else {
-                        if ((hp = gethostbyname (str)) != NULL) {
-
-                                addr_ptr = (struct in_addr *) hp->h_addr;
-
-                                addr = inet_addr (inet_ntoa (*addr_ptr));
-                        }
-                }
-
-        return addr;
-}
-
 static gboolean
 link_connection_do_initiate (LinkConnection        *cnx,
                             const char            *proto_name,
@@ -535,21 +514,6 @@
        if (!proto)
                return FALSE;

-       if (host && (strcmp (proto_name, "IPv4") == 0)) {
-
-               const char *local_host;
-               local_host = link_get_local_hostname ();
-
-               if (strcmp (host, local_host)) {
-                       unsigned long inet_addr_host, inet_addr_local_host;
-                       inet_addr_host = get_inet_addr (host);
-                       inet_addr_local_host = get_inet_addr (local_host);
-
-                       if (inet_addr_host != inet_addr_local_host)
-                               return FALSE;
-               }
-       }
-
        saddr = link_protocol_get_sockaddr (
                proto, host, service, &saddr_len);

Now I can run the echo-client and server programs across the network and 
finally gconfd works with global locks and communication acrosss IPv4.


-- System Information:
Debian Release: 4.0
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-smi-patch
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Versions of packages liborbit2 depends on:
ii  libc6                       2.3.6.ds1-13 GNU C Library: Shared libraries
ii  libglib2.0-0                2.12.4-2     The GLib library of C routines
ii  libidl0                     0.8.6-1      library for parsing CORBA IDL file

liborbit2 recommends no packages.

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to