so check for is_registered before calling ef->error(), as the
event_callback() in the EOF handler may have closed and freed
the socket.
fd_errno = el->events[i].data;
ev_error:
/*
- * Call the error handler
+ * Call the error handler, but only if the socket hasn't been deleted at EOF
+ * below.
*/
- if (ef->error) ef->error(el, ef->fd, flags, fd_errno, ef->uctx);
+ if (ef->is_registered && ef->error) ef->error(el, ef->fd, flags, fd_errno, ef->uctx);
TALLOC_FREE(ef);
continue;
}