diff options
-rw-r--r-- | vscclient.c | 54 |
1 files changed, 14 insertions, 40 deletions
diff --git a/vscclient.c b/vscclient.c index 41e44aa..5561145 100644 --- a/vscclient.c +++ b/vscclient.c @@ -631,46 +631,9 @@ main ( reader = NULL; /* we've freed it, don't use it by accident again */ break; - case VSC_Reconnect: - { - VSCMsgReconnect reconnect; - - if (read(sock, (char*)&reconnect, mhHeader.length) < 0) { - printf ("read error\n"); - close (sock); - return (8); - } - if (reconnect.host[0] != 0) { - free(qemu_host); - free(qemu_port); - qemu_host = strdup(reconnect.host); - qemu_port = strdup(reconnect.port); - } else { - printf("info: reconnect with no target ip:port: " - "bumping port by one and reconnecting\n"); - char buf[100]; - uint32_t port = atoi(qemu_port); - snprintf(buf, sizeof(buf), "%d", port+1); - buf[sizeof(buf)-1] = 0; - free(qemu_port); - qemu_port = strdup(buf); - } - /* sent when qemu is migrating, we need to close the socket - * and reconnect. */ - close(sock); - printf("reconnecting to %s:%s\n", qemu_host, qemu_port); - sock = connect_to_qemu(qemu_host, qemu_port); - } - break; - case VSC_ReaderAddResponse: - MUTEX_LOCK(pending_reader_lock); - if (pending_reader) { - vreader_set_id(pending_reader, mhHeader.reader_id); - vreader_free(pending_reader); - pending_reader = NULL; - CONDITION_NOTIFY(pending_reader_condition); - } - MUTEX_UNLOCK(pending_reader_lock); + case VSC_Flush: + /* TODO: actually flush */ + send_msg(VSC_FlushComplete, mhHeader.reader_id, NULL, 0); break; case VSC_Error: rv = read ( @@ -679,6 +642,17 @@ main ( mhHeader.length ); error_msg = (VSCMsgError *) pbSendBuffer; + if (error_msg->code == VSC_SUCCESS) { + MUTEX_LOCK(pending_reader_lock); + if (pending_reader) { + vreader_set_id(pending_reader, mhHeader.reader_id); + vreader_free(pending_reader); + pending_reader = NULL; + CONDITION_NOTIFY(pending_reader_condition); + } + MUTEX_UNLOCK(pending_reader_lock); + break; + } printf("error: qemu refused to add reader\n"); if (error_msg->code == VSC_CANNOT_ADD_MORE_READERS) { /* clear pending reader, qemu can't handle any more */ |