On 06/11/2014 05:46 PM, Stefan Baur wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Package: x2goagent
severity: normal
version: 3.5.0.24
Note: Crossposting and Reply-To'ing to X2Go-Dev due to the need for a
C/C++ coder, also, turning it into a bug so we can keep track of this.
Here's the output the user gets as the connection refuses to establish
itself:
quoting Sebastien Chabrolles:
running as X2Go Agent
NXAGENT - Version 3.5.0
Copyright (C) 2001, 2011 NoMachine. See http://www.nomachine.com/
for more information.
Info: Agent running with pid '24808'. Session: Starting session at
'Sat Jun 7 15:37:37 2014'. Info: Proxy running in server mode with
pid '24808'. Info: Waiting for connection from 'localhost' on port
'30003'. Warning: Refusing connection from '225.3.10.80'. .80' on
port '30003'. I don't know what is this IP address !!!!!
And at a later attempt, Sebastien received this output:
running as X2Go Agent
NXAGENT - Version 3.5.0
Copyright (C) 2001, 2011 NoMachine.
See http://www.nomachine.com/ for more information.
Info: Agent running with pid '10710'.
Session: Starting session at 'Wed Jun 11 23:02:09 2014'.
Info: Proxy running in server mode with pid '10710'.
Info: Waiting for connection from 'localhost' on port '30006'.
Warning: Refusing connection from '141.168.10.80'.
Info: Aborting the procedure due to signal '1'.
Error: Aborting session with 'Unable to open display
'nx/nx,options=/root/.x2go/C-root-51-1402520526_stRWWWBROWSER_dp24/options:51''.
Session: Aborting session at 'Wed Jun 11 23:02:19 2014'.
Session: Session aborted at 'Wed Jun 11 23:02:19 2014'.
My first guess is/was that there's something endianess-related going
wrong, as he's running X2Go on a ppc64 architecture instead of x86/x64.
However, the fact that the two "wrong" IPs change at random speak
against that, so I may be totally wrong with this and there's a much
simpler reason and solution.
quoting myself, replying to Mike Gabriel there:
Do you think you could at least give him a hint as to where that
message is pulling the IP from and how it is being
mangled/processed before that?
My guess is that there's some self-made conversion routine
somewhere that only works on little-endian architectures like x86
and x64.
PPC64 is big-endian by default.
quoting Mike Gabriel:
you can get the nx-libs sources from git.x2go.org [1] and grep
through the sources.
I am currently doing the same to get NX fixed on systems with
poly-instantiated /tmp directories.
Here's what I was able to find out so far:
I was able to locate the message in Loop.cpp.
It uses the variable "connectedHost".
So "connectedHost" contains the wrong IP.
connectedHost gets populated (also in Loop.cpp) like this:
char *connectedHost = inet_ntoa(newAddr.sin_addr);
so either newAddr.sin_addr already contains a wrong value (I'm not sure
how to check that, though), or inet_ntoa does something wrong, or both.
I haven't touched C/C++ code since the year 2002 or so, so debugging
this further is way beyond my ken.
Any one of the more experienced coders willing to jump in?
Here's some more info about the X2Go server system as provided by
Sebastien Chabrolles:
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4
::1 localhost localhost.localdomain localhost6
localhost6.localdomain6
10.7.19.161 fc20-161
# cat /etc/resolv.conf
nameserver 129.35.160.4
#cat /etc/nsswitch.conf
passwd: files
shadow: files
group: files
###
#this strange-looking entry was present during the first tries.
#
#hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
#
# it was changed to the one below for the last try, which gave
# the result with the different, but still wrong, IP.
###
hosts: files dns
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: files
publickey: nisplus
automount: files
aliases: files nisplus
# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.7.19.161 netmask 255.255.255.0 broadcast 10.7.19.255
inet6 fe80::f816:3eff:feec:ecb8 prefixlen 64 scopeid
0x20<link>
ether fa:16:3e:ec:ec:b8 txqueuelen 1000 (Ethernet)
RX packets 90677 bytes 5717673 (5.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 89102 bytes 32828059 (31.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 76 bytes 5248 (5.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 76 bytes 5248 (5.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref
Use Iface
0.0.0.0 10.7.19.254 0.0.0.0 UG 0 0
0 eth0
10.7.19.0 0.0.0.0 255.255.255.0 U 0 0
0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0
0 eth0
- -Stefan
I'm far from being any type of coder. Looks like it could be an endian
issue though.
inet_aton() converts the Internet host address cp from the IPv4
numbers-and-dots notation into binary form (in network byte order) and
stores it in the structure that inp points to.
http://linux.die.net/man/3/inet_ntoa
Mike
_______________________________________________
x2go-dev mailing list
[email protected]
http://lists.x2go.org/listinfo/x2go-dev