From 777aef50973bc3a20db8d9545494e8abb86a692e Mon Sep 17 00:00:00 2001 From: Alexander Komyagin Date: Wed, 4 Apr 2012 12:58:37 +0400 Subject: getaddrinfo(): avoid call to __check_pf() when not needed __check_pf() function is called from getaddrinfo() and it calls getifaddrs(), which is too much overhead especially if RSBAC-Net is enabled. So with this patch __check_pf() is being called only when AI_ADDRCONFIG hint flag is specified - just when we really need that check. Signed-off-by: Alexander Komyagin Signed-off-by: Bernhard Reutner-Fischer --- libc/inet/getaddrinfo.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libc') diff --git a/libc/inet/getaddrinfo.c b/libc/inet/getaddrinfo.c index fe0d942d9..88bd745a9 100644 --- a/libc/inet/getaddrinfo.c +++ b/libc/inet/getaddrinfo.c @@ -401,7 +401,13 @@ gaih_inet(const char *name, const struct gaih_service *service, int rc; int v4mapped = (req->ai_family == PF_UNSPEC || req->ai_family == PF_INET6) && (req->ai_flags & AI_V4MAPPED); - unsigned seen = __check_pf(); + unsigned seen = 0; + if (req->ai_flags & AI_ADDRCONFIG) { + /* "seen" is only used when AI_ADDRCONFIG is specified. + Avoid unnecessary call to __check_pf() otherwise + since it can be costly especially when RSBAC-Net is enabled. */ + seen = __check_pf(); + } memset(&nullserv, 0, sizeof(nullserv)); -- cgit v1.2.3