diff options
author | Christian Beier <dontmind@freeshell.org> | 2012-04-02 16:30:53 +0200 |
---|---|---|
committer | Christian Beier <dontmind@freeshell.org> | 2012-04-02 16:30:53 +0200 |
commit | efcdab50cc10ad121653bfff0da441495af461d3 (patch) | |
tree | 4a758a7c8caaf070ac14efa80411d00aac1ab3b7 /libvncserver/rfbserver.c | |
parent | ee4593425f63821280162d4e66a091479038a652 (diff) | |
parent | 2d50fc84f7ba869767ce052aa2aa9b11a104e0de (diff) | |
download | libtdevnc-efcdab50cc10ad121653bfff0da441495af461d3.tar.gz libtdevnc-efcdab50cc10ad121653bfff0da441495af461d3.zip |
Merge branch 'server-ipv6'
Diffstat (limited to 'libvncserver/rfbserver.c')
-rw-r--r-- | libvncserver/rfbserver.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c index 9be255f..23c4d77 100644 --- a/libvncserver/rfbserver.c +++ b/libvncserver/rfbserver.c @@ -50,6 +50,7 @@ #ifdef LIBVNCSERVER_HAVE_NETINET_IN_H #include <netinet/in.h> #include <netinet/tcp.h> +#include <netdb.h> #include <arpa/inet.h> #endif #endif @@ -270,8 +271,12 @@ rfbNewTCPOrUDPClient(rfbScreenInfoPtr rfbScreen, rfbProtocolVersionMsg pv; rfbClientIteratorPtr iterator; rfbClientPtr cl,cl_; +#ifdef LIBVNCSERVER_IPv6 + struct sockaddr_storage addr; +#else struct sockaddr_in addr; - socklen_t addrlen = sizeof(struct sockaddr_in); +#endif + socklen_t addrlen = sizeof(addr); rfbProtocolExtension* extension; cl = (rfbClientPtr)calloc(sizeof(rfbClientRec),1); @@ -294,7 +299,17 @@ rfbNewTCPOrUDPClient(rfbScreenInfoPtr rfbScreen, int one=1; getpeername(sock, (struct sockaddr *)&addr, &addrlen); +#ifdef LIBVNCSERVER_IPv6 + char host[1024]; + if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) { + rfbLogPerror("rfbNewClient: error in getnameinfo"); + cl->host = strdup(""); + } + else + cl->host = strdup(host); +#else cl->host = strdup(inet_ntoa(addr.sin_addr)); +#endif rfbLog(" other clients:\n"); iterator = rfbGetClientIterator(rfbScreen); |