summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Fergeau <cfergeau@redhat.com>2012-11-23 20:21:47 +0100
committerChristophe Fergeau <cfergeau@redhat.com>2013-05-19 16:04:31 +0200
commitfd18dbaa02d45108f56dce173e4068082e250f40 (patch)
tree62c05b1262e418f3f93f33fd4e4cedf43a52ee05
parent59ff2f9221f3d78d4a12b7da6d8d6e2fb499ca10 (diff)
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.
-rw-r--r--server/reds.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/server/reds.c b/server/reds.c
index f6a1ce93..ae02e098 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2994,8 +2994,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));
@@ -3012,9 +3010,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;
@@ -3029,6 +3024,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);