diff options
author | Rickard Green <[email protected]> | 2019-02-05 20:34:59 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2019-02-05 20:34:59 +0100 |
commit | 320a02e522085fe5eec141d7bf18631e4ef74f0a (patch) | |
tree | 6f9ca128ea1a81d3c1be6e18bc7b59aa370d2e8e /lib/erl_interface/src/connect/ei_resolve.c | |
parent | a4641c5b3469d2e3cb9b0937ed941748fbbf2036 (diff) | |
parent | dbeaca78bc6c0d4719a522e447fa59d7a1006ae0 (diff) | |
download | otp-320a02e522085fe5eec141d7bf18631e4ef74f0a.tar.gz otp-320a02e522085fe5eec141d7bf18631e4ef74f0a.tar.bz2 otp-320a02e522085fe5eec141d7bf18631e4ef74f0a.zip |
Merge branch 'rickard/ei-ext/OTP-15442' into rickard/ei-ext-maint/OTP-15442
* rickard/ei-ext/OTP-15442:
Introduce ei_init()
Fix bug in ei_accept_tmo
Fix build of erl_interface on BSD
Diffstat (limited to 'lib/erl_interface/src/connect/ei_resolve.c')
-rw-r--r-- | lib/erl_interface/src/connect/ei_resolve.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/erl_interface/src/connect/ei_resolve.c b/lib/erl_interface/src/connect/ei_resolve.c index 022a43d255..225fddc784 100644 --- a/lib/erl_interface/src/connect/ei_resolve.c +++ b/lib/erl_interface/src/connect/ei_resolve.c @@ -57,9 +57,9 @@ #ifdef HAVE_GETHOSTBYNAME_R -void ei_init_resolve(void) +int ei_init_resolve(void) { - return; /* Do nothing */ + return 0; /* Do nothing */ } #else /* !HAVE_GETHOSTBYNAME_R */ @@ -103,7 +103,7 @@ static int verify_dns_configuration(void); * our own, which are just wrappers around hostGetByName() and * hostGetByAddr(). Here we look up the functions. */ -void ei_init_resolve(void) +int ei_init_resolve(void) { #ifdef VXWORKS @@ -134,9 +134,12 @@ void ei_init_resolve(void) #ifdef _REENTRANT ei_gethost_sem = ei_mutex_create(); + if (!ei_gethost_sem) + return ENOMEM; #endif /* _REENTRANT */ ei_resolve_initialized = 1; + return 0; } #ifdef VXWORKS @@ -312,9 +315,11 @@ static struct hostent *my_gethostbyname_r(const char *name, struct hostent *src; struct hostent *rval = NULL; - /* FIXME this should have been done in 'erl'_init()? */ - if (!ei_resolve_initialized) ei_init_resolve(); - + if (!ei_resolve_initialized) { + *h_errnop = NO_RECOVERY; + return NULL; + } + #ifdef _REENTRANT /* === BEGIN critical section === */ if (ei_mutex_lock(ei_gethost_sem,0) != 0) { @@ -377,7 +382,10 @@ static struct hostent *my_gethostbyaddr_r(const char *addr, struct hostent *rval = NULL; /* FIXME this should have been done in 'erl'_init()? */ - if (!ei_resolve_initialized) ei_init_resolve(); + if (!ei_resolve_initialized) { + *h_errnop = NO_RECOVERY; + return NULL; + } #ifdef _REENTRANT /* === BEGIN critical section === */ |