usr/src/cmd/smbsrv/smbd/smbd_main.c
changeset 7052 efa04b030974
parent 6771 2e6e486314b6
child 7348 73b61202d5d6
--- a/usr/src/cmd/smbsrv/smbd/smbd_main.c	Mon Jul 07 21:12:57 2008 -0700
+++ b/usr/src/cmd/smbsrv/smbd/smbd_main.c	Mon Jul 07 21:28:40 2008 -0700
@@ -111,6 +111,7 @@
 	sigset_t		set;
 	uid_t			uid;
 	int			pfd = -1;
+	int			sigval;
 
 	smbd.s_pname = basename(argv[0]);
 	openlog(smbd.s_pname, LOG_PID | LOG_NOWAIT, LOG_DAEMON);
@@ -182,12 +183,14 @@
 	(void) atexit(smbd_service_fini);
 
 	while (!smbd.s_shutdown_flag) {
-		(void) sigsuspend(&set);
+		if (smbd.s_sigval == 0)
+			(void) sigsuspend(&set);
 
-		switch (smbd.s_sigval) {
+		sigval = smbd.s_sigval;
+		smbd.s_sigval = 0;
+
+		switch (sigval) {
 		case 0:
-			break;
-
 		case SIGPIPE:
 			break;
 
@@ -205,8 +208,6 @@
 			smbd.s_shutdown_flag = 1;
 			break;
 		}
-
-		smbd.s_sigval = 0;
 	}
 
 	smbd_service_fini();
@@ -392,7 +393,7 @@
 		}
 	}
 
-	ads_init();
+	smb_ads_init();
 	if ((rc = mlsvc_init()) != 0) {
 		smbd_report("msrpc initialization failed");
 		return (rc);
@@ -424,16 +425,16 @@
 
 	(void) smbd_localtime_init();
 
-	smbd.s_door_winpipe = smb_winpipe_doorsvc_start();
-	if (smbd.s_door_winpipe < 0) {
-		smbd_report("winpipe initialization failed %s",
+	smbd.s_door_opipe = smbd_opipe_dsrv_start();
+	if (smbd.s_door_opipe < 0) {
+		smbd_report("opipe initialization failed %s",
 		    strerror(errno));
 		return (rc);
 	}
 
 	(void) smb_lgrp_start();
 
-	(void) smb_pwd_init();
+	smb_pwd_init(B_TRUE);
 
 	rc = smbd_kernel_bind();
 	if (rc != 0) {
@@ -441,7 +442,7 @@
 		return (rc);
 	}
 
-	return (lmshare_start());
+	return (smb_shr_start());
 }
 
 /*
@@ -452,13 +453,13 @@
 static void
 smbd_service_fini(void)
 {
-	smb_winpipe_doorsvc_stop();
+	smbd_opipe_dsrv_stop();
 	smb_wka_fini();
 	smbd_refresh_fini();
 	smbd_kernel_unbind();
 	smb_door_srv_stop();
 	smb_share_dsrv_stop();
-	lmshare_stop();
+	smb_shr_stop();
 	smb_nicmon_stop();
 	smb_idmap_stop();
 	smb_lgrp_stop();
@@ -538,7 +539,7 @@
 		 * We've been woken up by a refresh event so go do
 		 * what is necessary.
 		 */
-		ads_refresh();
+		smb_ads_refresh();
 		smb_ccache_remove(SMB_CCACHE_PATH);
 
 		if ((rc = smb_getfqdomainname(fqdn, MAXHOSTNAMELEN)) != 0)
@@ -655,7 +656,7 @@
 		smbd.s_drv_fd = -1;
 		return (errno);
 	}
-	smb_io.sio_data.start.winpipe = smbd.s_door_winpipe;
+	smb_io.sio_data.start.opipe = smbd.s_door_opipe;
 	smb_io.sio_data.start.lmshrd = smbd.s_door_lmshr;
 	smb_io.sio_data.start.udoor = smbd.s_door_srv;
 	if (ioctl(smbd.s_drv_fd, SMB_IOC_START, &smb_io) < 0) {