diff options
author | Shea Levy <shea@shealevy.com> | 2016-07-11 15:44:44 -0400 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2016-07-11 15:44:44 -0400 |
commit | cb5e7254b66a06b78a5659551a6f28fc67e52267 (patch) | |
tree | e367ff5e386fc16247034da60cf30aff61ebaea4 /src/nix-daemon/nix-daemon.cc | |
parent | 8a41792d431d6578836fde04d1742dbba878f979 (diff) |
Modernize AutoCloseFD
Diffstat (limited to 'src/nix-daemon/nix-daemon.cc')
-rw-r--r-- | src/nix-daemon/nix-daemon.cc | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/nix-daemon/nix-daemon.cc b/src/nix-daemon/nix-daemon.cc index 6a992b953..6e0d869f4 100644 --- a/src/nix-daemon/nix-daemon.cc +++ b/src/nix-daemon/nix-daemon.cc @@ -767,7 +767,7 @@ static void daemonLoop(char * * argv) /* Create and bind to a Unix domain socket. */ fdSocket = socket(PF_UNIX, SOCK_STREAM, 0); - if (fdSocket == -1) + if (!fdSocket) throw SysError("cannot create Unix domain socket"); string socketPath = settings.nixDaemonSocketFile; @@ -793,7 +793,7 @@ static void daemonLoop(char * * argv) (everybody can connect --- provided they have access to the directory containing the socket). */ mode_t oldMode = umask(0111); - int res = bind(fdSocket, (struct sockaddr *) &addr, sizeof(addr)); + int res = bind(fdSocket.get(), (struct sockaddr *) &addr, sizeof(addr)); umask(oldMode); if (res == -1) throw SysError(format("cannot bind to socket ‘%1%’") % socketPath); @@ -801,11 +801,11 @@ static void daemonLoop(char * * argv) if (chdir("/") == -1) /* back to the root */ throw SysError("cannot change current directory"); - if (listen(fdSocket, 5) == -1) + if (listen(fdSocket.get(), 5) == -1) throw SysError(format("cannot listen on socket ‘%1%’") % socketPath); } - closeOnExec(fdSocket); + closeOnExec(fdSocket.get()); /* Loop accepting connections. */ while (1) { @@ -815,18 +815,18 @@ static void daemonLoop(char * * argv) struct sockaddr_un remoteAddr; socklen_t remoteAddrLen = sizeof(remoteAddr); - AutoCloseFD remote = accept(fdSocket, + AutoCloseFD remote = accept(fdSocket.get(), (struct sockaddr *) &remoteAddr, &remoteAddrLen); checkInterrupt(); - if (remote == -1) { + if (!remote) { if (errno == EINTR) continue; throw SysError("accepting connection"); } - closeOnExec(remote); + closeOnExec(remote.get()); bool trusted = false; - PeerInfo peer = getPeerInfo(remote); + PeerInfo peer = getPeerInfo(remote.get()); struct passwd * pw = peer.uidKnown ? getpwuid(peer.uid) : 0; string user = pw ? pw->pw_name : std::to_string(peer.uid); @@ -854,7 +854,7 @@ static void daemonLoop(char * * argv) options.runExitHandlers = true; options.allowVfork = false; startProcess([&]() { - fdSocket.close(); + fdSocket = -1; /* Background the daemon. */ if (setsid() == -1) @@ -870,8 +870,8 @@ static void daemonLoop(char * * argv) } /* Handle the connection. */ - from.fd = remote; - to.fd = remote; + from.fd = remote.get(); + to.fd = remote.get(); processConnection(trusted); exit(0); |