]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/daemon.c
provisions for user-supplied permissions
[openldap] / servers / slapd / daemon.c
index 55c8347967e36ab6f3834f64b28a16fe5d9b95f3..098f7bc87ff51879a462738ef59e0931dad71b5c 100644 (file)
@@ -36,20 +36,6 @@ int deny_severity = LOG_NOTICE;
 time_t starttime;
 ber_socket_t dtblsize;
 
-typedef struct slap_listener {
-       char* sl_url;
-       char* sl_name;
-#ifdef HAVE_TLS
-       int             sl_is_tls;
-#endif
-#ifdef LDAP_CONNECTIONLESS
-       int     sl_is_udp;              /* UDP listener is also data port */
-#endif
-       ber_socket_t            sl_sd;
-       Sockaddr sl_sa;
-#define sl_addr        sl_sa.sa_in_addr
-} Listener;
-
 Listener **slap_listeners = NULL;
 
 #define SLAPD_LISTEN 10
@@ -500,6 +486,9 @@ static Listener * slap_open_listener(
        int err, addrlen = 0;
        struct sockaddr **sal, **psal;
        int socktype = SOCK_STREAM;     /* default to COTS */
+#ifdef LDAP_PF_LOCAL
+       mode_t perms = S_IRWXU;
+#endif
 
        rc = ldap_url_parse( url, &lud );
 
@@ -707,7 +696,7 @@ static Listener * slap_open_listener(
 #ifdef LDAP_PF_LOCAL
        case AF_LOCAL: {
                char *addr = ((struct sockaddr_un *)*sal)->sun_path;
-               if ( chmod( addr, S_IRWXU ) < 0 ) {
+               if ( chmod( addr, perms ) < 0 ) {
                        int err = sock_errno();
 #ifdef NEW_LOGGING
                        LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
@@ -1327,6 +1316,7 @@ slapd_daemon_task(
                        case AF_LOCAL:
                                sprintf( peername, "PATH=%s", from.sa_un_addr.sun_path );
                                ssf = LDAP_PVT_SASL_LOCAL_SSF;
+                               dnsname = "local";
                                break;
 #endif /* LDAP_PF_LOCAL */
 
@@ -1834,3 +1824,7 @@ slap_sig_wake( int sig )
 void slapd_add_internal(ber_socket_t s) {
        slapd_add(s);
 }
+
+Listener ** slapd_get_listeners(void) {
+       return slap_listeners;
+}