Check AI_NUMERICSERV is defined before using it

The AI_NUMERICSERV constant is missing from old Darwin systems, so only
use it if it's supported.

	* include/experimental/internet [AI_NUMERICSERV]
	(resolver_base::numeric_service): Define conditionally.
	* testsuite/experimental/net/internet/resolver/base.cc: Test it
	conditionally.
	* testsuite/experimental/net/internet/resolver/ops/lookup.cc:
	Likewise.

From-SVN: r267809
This commit is contained in:
Jonathan Wakely 2019-01-10 13:21:54 +00:00 committed by Jonathan Wakely
parent c3799b164f
commit cbe0bca404
4 changed files with 19 additions and 1 deletions

View File

@ -1,3 +1,12 @@
2019-01-10 Jonathan Wakely <jwakely@redhat.com>
* include/experimental/internet [AI_NUMERICSERV]
(resolver_base::numeric_service): Define conditionally.
* testsuite/experimental/net/internet/resolver/base.cc: Test it
conditionally.
* testsuite/experimental/net/internet/resolver/ops/lookup.cc:
Likewise.
2019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
Jonathan Wakely <jwakely@redhat.com>

View File

@ -1629,7 +1629,9 @@ namespace ip
__flags_passive = AI_PASSIVE,
__flags_canonical_name = AI_CANONNAME,
__flags_numeric_host = AI_NUMERICHOST,
#ifdef AI_NUMERICSERV
__flags_numeric_service = AI_NUMERICSERV,
#endif
__flags_v4_mapped = AI_V4MAPPED,
__flags_all_matching = AI_ALL,
__flags_address_configured = AI_ADDRCONFIG
@ -1637,7 +1639,9 @@ namespace ip
static constexpr flags passive = __flags_passive;
static constexpr flags canonical_name = __flags_canonical_name;
static constexpr flags numeric_host = __flags_numeric_host;
#ifdef AI_NUMERICSERV
static constexpr flags numeric_service = __flags_numeric_service;
#endif
static constexpr flags v4_mapped = __flags_v4_mapped;
static constexpr flags all_matching = __flags_all_matching;
static constexpr flags address_configured = __flags_address_configured;

View File

@ -49,7 +49,9 @@ test01()
(void) resolver::passive;
(void) resolver::canonical_name;
(void) resolver::numeric_host;
#ifdef AI_NUMERICSERV
(void) resolver::numeric_service;
#endif
(void) resolver::v4_mapped;
(void) resolver::all_matching;
(void) resolver::address_configured;

View File

@ -49,7 +49,10 @@ test02()
std::error_code ec;
io_context ctx;
ip::tcp::resolver resolv(ctx);
auto flags = ip::resolver_base::numeric_host | ip::tcp::resolver::numeric_service;
auto flags = ip::resolver_base::numeric_host;
#ifdef AI_NUMERICSERV
flags |= ip::tcp::resolver::numeric_service;
#endif
auto addrs = resolv.resolve("127.0.0.1", "42", flags, ec);
VERIFY( !ec );
VERIFY( addrs.size() > 0 );