Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
handle setuidgid errors consistently
  • Loading branch information
kraih committed Mar 7, 2014
1 parent a1bf14c commit cfc9198
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions lib/Mojo/Server/Daemon.pm
Expand Up @@ -33,19 +33,19 @@ sub setuidgid {
my $self = shift;

# Group
my $log = $self->app->log;
if (my $group = $self->group) {
$log->error(qq{Group "$group" does not exist.}) and return $self
return $self->_log(qq{Group "$group" does not exist.})
unless defined(my $gid = getgrnam $group);
POSIX::setgid($gid) or $log->error(qq{Can't switch to group "$group": $!});
return $self->_log(qq{Can't switch to group "$group": $!})
unless POSIX::setgid($gid);
}

# User
if (my $user = $self->user) {
$log->error(qq{User "$user" does not exist.}) and return $self
unless defined(my $uid = getpwnam $user);
POSIX::setuid($uid) or $log->error(qq{Can't switch to user "$user": $!});
}
return $self unless my $user = $self->user;
return $self->_log(qq{User "$user" does not exist.})
unless defined(my $uid = getpwnam $user);
return $self->_log(qq{Can't switch to user "$user": $!})
unless POSIX::setuid($uid);

return $self;
}
Expand Down Expand Up @@ -204,6 +204,8 @@ sub _listen {
say "Server available at $url.";
}

sub _log { $_[0]->app->log->error($_[1]) and return $_[0] }

sub _read {
my ($self, $id, $chunk) = @_;

Expand Down

0 comments on commit cfc9198

Please sign in to comment.