diff options
Diffstat (limited to 'mail/libspf2/files/patch-src_libspf2_spf__dns__resolv.c')
-rw-r--r-- | mail/libspf2/files/patch-src_libspf2_spf__dns__resolv.c | 95 |
1 files changed, 9 insertions, 86 deletions
diff --git a/mail/libspf2/files/patch-src_libspf2_spf__dns__resolv.c b/mail/libspf2/files/patch-src_libspf2_spf__dns__resolv.c index 896f0f60158f..71e4f39d452e 100644 --- a/mail/libspf2/files/patch-src_libspf2_spf__dns__resolv.c +++ b/mail/libspf2/files/patch-src_libspf2_spf__dns__resolv.c @@ -1,15 +1,8 @@ Index: src/libspf2/spf_dns_resolv.c diff -u -p src/libspf2/spf_dns_resolv.c.orig src/libspf2/spf_dns_resolv.c ---- src/libspf2/spf_dns_resolv.c.orig Sat Feb 19 11:38:12 2005 -+++ src/libspf2/spf_dns_resolv.c Mon Jul 31 14:02:57 2006 -@@ -71,13 +71,18 @@ typedef struct - # define SPF_h_errno h_errno - #endif - -+#if HAVE_DECL_RES_NINIT - static pthread_once_t res_state_control = PTHREAD_ONCE_INIT; - static pthread_key_t res_state_key; - +--- src/libspf2/spf_dns_resolv.c.orig Thu Oct 16 07:02:03 2008 ++++ src/libspf2/spf_dns_resolv.c Fri Oct 24 12:19:29 2008 +@@ -92,7 +92,11 @@ static pthread_key_t res_state_key; static void SPF_dns_resolv_thread_term(void *arg) { @@ -21,82 +14,12 @@ diff -u -p src/libspf2/spf_dns_resolv.c.orig src/libspf2/spf_dns_resolv.c free(arg); } -@@ -86,6 +91,7 @@ SPF_dns_resolv_init_key() - { - pthread_key_create(&res_state_key, SPF_dns_resolv_thread_term); - } -+#endif - - - #if 0 -@@ -130,8 +136,10 @@ SPF_dns_resolv_lookup(SPF_dns_server_t * - int rdlen; - const u_char *rdata, *rdata_end; - -+#if HAVE_DECL_RES_NINIT - void *res_spec; - struct __res_state *res_state; -+#endif - - SPF_ASSERT_NOTNULL(spf_dns_server); - -@@ -140,10 +148,15 @@ SPF_dns_resolv_lookup(SPF_dns_server_t * - SPF_ASSERT_NOTNULL(spfhook); - #endif - -+#if HAVE_DECL_RES_NINIT - res_spec = pthread_getspecific(res_state_key); - if (res_spec == NULL) { - res_state = (struct __res_state *) - malloc(sizeof(struct __res_state)); -+ if (res_state == NULL) { -+ SPF_error("Failed to call malloc()"); -+ } -+ memset(res_state, 0, sizeof(*res_state)); - if (res_ninit(res_state) != 0) { - SPF_error("Failed to call res_ninit()"); - } -@@ -152,6 +165,11 @@ SPF_dns_resolv_lookup(SPF_dns_server_t * - else { - res_state = (struct __res_state *)res_spec; - } -+#else -+ if ((_res.options & RES_INIT) == 0 && res_init() != 0) { -+ SPF_error("Failed to call res_init()"); -+ } -+#endif - - /* - * try resolving the name -@@ -486,7 +504,9 @@ SPF_dns_resolv_new(SPF_dns_server_t *lay - SPF_dns_resolv_config_t *spfhook; - #endif - -+#if HAVE_DECL_RES_NINIT +@@ -615,7 +619,7 @@ SPF_dns_resolv_new(SPF_dns_server_t *lay + #if HAVE_DECL_RES_NINIT pthread_once(&res_state_control, SPF_dns_resolv_init_key); -+#endif - - spf_dns_server = malloc(sizeof(SPF_dns_server_t)); - if ( spf_dns_server == NULL ) -@@ -517,19 +537,19 @@ SPF_dns_resolv_new(SPF_dns_server_t *lay - spfhook = SPF_voidp2spfhook( spf_dns_server->hook ); - #endif - --#if HAVE_DECL_RES_NINIT - #if 0 -+#if HAVE_DECL_RES_NINIT - if ( res_ninit( &spfhook->res_state ) != 0 ) { - free(spfhook); - free(spf_dns_server); - return NULL; - } --#endif #else - if ( res_init() != 0 ) { - free( spf_dns_server ); +- if ( res_init() != 0 ) { ++ if ((_res.options & RES_INIT) == 0 && res_init() != 0) { + perror("res_init"); return NULL; - } -+#endif - #endif - - return spf_dns_server; + } |