From 79c3a973e4a7499ce72d41a1d29d1d4d3b53171e Mon Sep 17 00:00:00 2001 From: Christophe Fergeau Date: Fri, 23 Nov 2012 20:21:47 +0100 Subject: Log actual address spice-server binds to It's not always obvious what address spice-server will bind to, in particular when the 'addr' parameter is omitted on QEMU commandline. The decision of what address to bind to is made in reds_init_socket with a call to getaddrinfo. Surprisingly, that function had a call to getnameinfo() already, but it does not seem to be using the result of that call in any way. This commit moves this call after the socket is successfully bound and add a log message to indicate which address it's bound to. --- server/reds.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/server/reds.c b/server/reds.c index 822289bc..2f8ec1b9 100644 --- a/server/reds.c +++ b/server/reds.c @@ -2977,8 +2977,6 @@ static int reds_init_socket(const char *addr, int portnr, int family) static const int on=1, off=0; struct addrinfo ai,*res,*e; char port[33]; - char uaddr[INET6_ADDRSTRLEN+1]; - char uport[33]; int slisten,rc; memset(&ai,0, sizeof(ai)); @@ -2995,9 +2993,6 @@ static int reds_init_socket(const char *addr, int portnr, int family) } for (e = res; e != NULL; e = e->ai_next) { - getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen, - uaddr,INET6_ADDRSTRLEN, uport,32, - NI_NUMERICHOST | NI_NUMERICSERV); slisten = socket(e->ai_family, e->ai_socktype, e->ai_protocol); if (slisten < 0) { continue; @@ -3012,6 +3007,16 @@ static int reds_init_socket(const char *addr, int portnr, int family) } #endif if (bind(slisten, e->ai_addr, e->ai_addrlen) == 0) { + char uaddr[INET6_ADDRSTRLEN+1]; + char uport[33]; + rc = getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen, + uaddr,INET6_ADDRSTRLEN, uport,32, + NI_NUMERICHOST | NI_NUMERICSERV); + if (rc == 0) { + spice_info("bound to %s:%s", uaddr, uport); + } else { + spice_info("cannot resolve address spice-server is bound to"); + } goto listen; } close(slisten); -- cgit v1.2.3