long id;
                        slap_ssf_t ssf = 0;
                        char *authid = NULL;
+#ifdef SLAPD_RLOOKUPS
+                       char *hebuf = NULL;
+#endif
 
                        char    *dnsname = NULL;
                        char    *peeraddr = NULL;
                                if ( use_reverse_lookup ) {
                                        struct hostent he;
                                        int herr;
-                                       char *ha = NULL;
-                                       hp = NULL;
+                                       struct hostent *hp = NULL;
 #  ifdef LDAP_PF_INET6
                                        if ( from.sa_addr.sa_family == AF_INET6 )
                                                ldap_pvt_gethostbyaddr_a(
                                                        (char *)&(from.sa_in6_addr.sin6_addr),
                                                        sizeof(from.sa_in6_addr.sin6_addr),
-                                                       AF_INET6, &he, &ha,
+                                                       AF_INET6, &he, &hebuf,
                                                        &hp, &herr );
                                        else
 #  endif /* LDAP_PF_INET6 */
                                        ldap_pvt_gethostbyaddr_a(
                                                (char *) &(from.sa_in_addr.sin_addr),
                                                sizeof(from.sa_in_addr.sin_addr),
-                                               AF_INET, &he, &ha, &hp, &herr );
+                                               AF_INET, &he, &hebuf, &hp, &herr );
                                        dnsname = hp ? ldap_pvt_str2lower( hp->h_name ) : NULL;
-                                       if (ha) ldap_memfree( ha );
                                }
 #else
                                dnsname = NULL;
                                authid );
 
                        if( authid ) ch_free(authid);
+#ifdef SLAPD_RLOOKUPS
+                       if( hebuf ) ldap_memfree(hebuf);
+#endif
 
                        if( id < 0 ) {
 #ifdef NEW_LOGGING