summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2011-01-31 11:06:08 +0200
committerAlon Levy <alevy@redhat.com>2011-02-03 16:54:27 +0200
commit86f89cdf87c83e1d609ecd32b95131e7f83ed08c (patch)
tree30dec7a8d1916a0797ddb6c2536ed93a0272430c
parent278aad9f849e4a606d28c846f796967cc1940797 (diff)
vscclient: update for vscard_common changes, empty Flush implementation
-rw-r--r--vscclient.c54
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 */