bool serialise;
int processing;
bool recv_disable;
+ bool recv_need_enable;
bool nofree;
bool busy;
}
if (pc->recv_disable) {
+ pc->recv_need_enable = true;
EVENT_FD_NOT_READABLE(pc->fde);
return;
}
*/
_PUBLIC_ void packet_recv_disable(struct packet_context *pc)
{
- EVENT_FD_NOT_READABLE(pc->fde);
pc->recv_disable = true;
}
*/
_PUBLIC_ void packet_recv_enable(struct packet_context *pc)
{
- EVENT_FD_READABLE(pc->fde);
+ if (pc->recv_need_enable) {
+ pc->recv_need_enable = false;
+ EVENT_FD_READABLE(pc->fde);
+ }
pc->recv_disable = false;
if (pc->num_read != 0 && pc->packet_size >= pc->num_read) {
event_add_timed(pc->ev, pc, timeval_zero(), packet_next_event, pc);