From 03fdce831e90e88ca5a60c2c07a0a16642804c85 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 1 Oct 2013 16:59:33 +0200 Subject: [SERVER] Fetch correct revision after cloning --- src/server/image.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/image.c b/src/server/image.c index a7cc427..e137a1b 100644 --- a/src/server/image.c +++ b/src/server/image.c @@ -818,12 +818,12 @@ dnbd3_image_t* image_getOrClone(char *name, uint16_t revision) int uplinkSock = -1; dnbd3_host_t *uplinkServer = NULL; const int count = altservers_get( servers, 4 ); + uint16_t remoteVersion, remoteRid; + uint64_t remoteImageSize; for (i = 0; i < count; ++i) { int sock = sock_connect( &servers[i], 500, 1500 ); if ( sock < 0 ) continue; if ( !dnbd3_select_image( sock, name, revision, FLAGS8_SERVER ) ) goto server_fail; - uint16_t remoteVersion, remoteRid; - uint64_t remoteImageSize; char *remoteName; if ( !dnbd3_select_image_reply( &serialized, sock, &remoteVersion, &remoteName, &remoteRid, &remoteImageSize ) ) goto server_fail; if ( remoteVersion < MIN_SUPPORTED_SERVER ) goto server_fail; @@ -841,7 +841,7 @@ dnbd3_image_t* image_getOrClone(char *name, uint16_t revision) } pthread_mutex_unlock( &remoteCloneLock ); // If everything worked out, this call should now actually return the image - image = image_get( name, revision ); + image = image_get( name, remoteRid ); if ( image != NULL && uplinkSock != -1 && uplinkServer != NULL ) { // If so, init the uplink and pass it the socket uplink_init( image, uplinkSock, uplinkServer ); -- cgit v1.2.3-55-g7522