Hello Ian,
Since you did not inline your source I will paste in a chunk:
@@ -2030,10 +2036,18 @@ static void tcp_chr_read(void *opaque)
if (s->listen_fd >= 0) {
qemu_set_fd_handler(s->listen_fd, tcp_chr_accept, NULL,
chr);
}
- qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
+ if (!s->reconnect)
+ qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
closesocket(s->fd);
s->fd = -1;
- qemu_chr_event(chr, CHR_EVENT_CLOSED);
+ if (!s->reconnect) {
+ qemu_chr_event(chr, CHR_EVENT_CLOSED);
+ } else {
+ do {
+ sleep(s->reconnect);
+ } while(!qemu_chr_connect_socket(s));
+ qemu_chr_event(chr, CHR_EVENT_RECONNECTED);
+ }
} else if (size > 0) {
if (s->do_telnetopt)
tcp_chr_process_IAC_bytes(chr, s, buf, &size);
Should you be introducing a while sleep loop into Qemu here?
I would think you should be returning 'no data', maybe after trying
once.
Hope this helps.
Chris