On Fri, Jun 8, 2012 at 6:31 PM, Stefan Hajnoczi <stefa...@gmail.com> wrote: > On Thu, Jun 7, 2012 at 3:54 PM, <zwu.ker...@gmail.com> wrote: >> @@ -86,7 +82,16 @@ static void net_socket_send(void *opaque) >> /* end of connection */ >> eoc: >> qemu_set_fd_handler(s->fd, NULL, NULL, NULL); >> + qemu_set_fd_handler(s->listen_fd, net_socket_accept, NULL, s); > > What happens when this is not a listen socket? I suggest setting > listen_fd to -1 during creation and not calling qemu_set_fd_handler() > when listen_fd is -1 here. If listen_fd is 0 then we'll register > net_socket_accept when standard input becomes ready! > >> closesocket(s->fd); >> + >> + s->fd = 0; > > -1 should be used since 0 is a valid file descriptor (standard input). I think that s->fd = 0 doesn't cause every issue. When it is zero, this fd hasn't been registered with every handler. You can see that "qemu_set_fd_handler(s->fd, NULL, NULL, NULL);" before "s->fd = 0".
> > Stefan > -- Regards, Zhi Yong Wu