static void dccp_recv_pre_select(struct sched *s, struct task *t)
{
- struct private_dccp_recv_data *pdd = t->private_data;
+ struct receiver_node *rn = t->private_data;
+ struct private_dccp_recv_data *pdd = rn->private_data;
+ t->ret = 1;
if (!pdd)
- return ;
+ return;
para_fd_set(pdd->fd, &s->rfds, &s->max_fileno);
}
struct receiver_node *rn = t->private_data;
struct private_dccp_recv_data *pdd = rn->private_data;
+ t->ret = -E_DCCP_RECV_EOF;
+ if (rn->output_eof && *rn->output_eof) {
+ rn->eof = 1;
+ return;
+ }
t->ret = 1;
if (!s->select_ret || !pdd || !FD_ISSET(pdd->fd, &s->rfds))
return; /* nothing to do */