Skip to content

Commit

Permalink
fixed small prefork bug
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Jul 14, 2010
1 parent 0c674c6 commit d8dc1c5
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions lib/Mojo/IOLoop.pm
Expand Up @@ -323,18 +323,6 @@ sub listen {
my $fd = fileno $socket;
$self->{_fds}->{$fd} = $id;

# Loop
my $loop = $self->_prepare_loop;

# KQueue
if (KQUEUE) { $loop->EV_SET(fileno $socket, KQUEUE_READ, KQUEUE_ADD) }

# Epoll
elsif (EPOLL) { $loop->mask($socket, EPOLL_POLLIN) }

# Poll
else { $loop->mask($socket, POLLIN) }

return $id;
}

Expand Down Expand Up @@ -414,6 +402,25 @@ sub one_tick {
# Loop
my $loop = $self->_prepare_loop;

# Listen
unless ($self->{_listening}) {
for my $l (values %{$self->{_listen}}) {
my $socket = $l->{socket};

# KQueue
if (KQUEUE) {
$loop->EV_SET(fileno $socket, KQUEUE_READ, KQUEUE_ADD);
}

# Epoll
elsif (EPOLL) { $loop->mask($socket, EPOLL_POLLIN) }

# Poll
else { $loop->mask($socket, POLLIN) }
}
$self->{_listening} = 1;
}

# Events
my (@error, @hup, @read, @write);

Expand All @@ -422,8 +429,8 @@ sub one_tick {

# Catch interrupted system call errors
my @ret;
eval { @ret = $loop->kevent(1000 * $timeout) };
die "KQueue error: $@" if $@;
my $success = eval { @ret = $loop->kevent(1000 * $timeout); 1 };
die "KQueue error: $@" if !$success && $@;

# Events
for my $kev (@ret) {
Expand Down

0 comments on commit d8dc1c5

Please sign in to comment.