util: retry getaddrinfo if getting EAI_BADFLAGS with AI_V4MAPPED
commit340849a9ff2a246bbc9a2da3f079c9fdbd2d5852
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 4 Apr 2016 16:22:00 +0000 (4 17:22 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 5 Apr 2016 09:46:52 +0000 (5 11:46 +0200)
treedcd22ff36cded414a7ad2c4602f2d1e34b958b24
parentf0707d2e03186092f778269a9d22ec78481f12dc
util: retry getaddrinfo if getting EAI_BADFLAGS with AI_V4MAPPED

The FreeBSD header files define the AI_V4MAPPED but its
implementation of getaddrinfo() always returns an error
when that flag is set. eg

  address resolution failed for localhost:9000: Invalid value for ai_flags

There are also reports of the same problem on OS-X 10.6

Since AI_V4MAPPED is not critical functionality, if we
get an EAI_BADFLAGS error then just retry without the
AI_V4MAPPED flag set. Use a static var to cache this
status so we don't have to retry on every single call.

Also remove its use from the test suite since it serves
no useful purpose there.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <1459786920-15961-1-git-send-email-berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tests/test-io-channel-socket.c
util/qemu-sockets.c