In the case of old server and new client, the client should get a RPC
error when trying to re-serialize the reply, because the data packet
it will be getting back from the server will be too small (ie missing
the new field this patch adds).

The RPC protocol should be considered ABI, and no existing methods
ever changed, only new methods can be added so NACK to this patch

I had actually prepared this patch too, but after my testing I wasn't sure if it was necessary. Would it be fine to add it to the respin?

Paolo
commit 916b512b4b6dfeb1bb2929514c26e8595f22a1da
Author: Paolo Bonzini <pbonz...@redhat.com>
Date:   Fri Oct 2 01:02:01 2009 +0200

    hack to handle backwards compatibility

diff --git a/src/remote_internal.c b/src/remote_internal.c
index 7db59d1..e9fea0e 100644
--- a/src/remote_internal.c
+++ b/src/remote_internal.c
@@ -2534,6 +2534,15 @@ done:
     return rv;
 }
 
+
+static bool_t
+xdr_remote_domain_migrate_perform_ret_optional (XDR *xdrs, 
remote_domain_migrate_perform_ret *objp)
+{
+    if (!xdr_remote_domain_migrate_perform_ret (xdrs, objp))
+       objp->code = 0;
+    return TRUE;
+}
+
 static int
 remoteDomainMigratePerform (virDomainPtr domain,
                             const char *cookie,
@@ -2561,7 +2570,7 @@ remoteDomainMigratePerform (virDomainPtr domain,
     memset (&ret, 0, sizeof (ret));
     if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_PERFORM,
               (xdrproc_t) xdr_remote_domain_migrate_perform_args, (char *) 
&args,
-              (xdrproc_t) xdr_remote_domain_migrate_perform_ret, (char *) 
&ret) == -1)
+              (xdrproc_t) xdr_remote_domain_migrate_perform_ret_optional, 
(char *) &ret) == -1)
         goto done;
 
     rv = ret.code;
--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to