diff options
author | Simon Rettberg | 2013-10-01 16:59:33 +0200 |
---|---|---|
committer | Simon Rettberg | 2013-10-01 16:59:33 +0200 |
commit | 03fdce831e90e88ca5a60c2c07a0a16642804c85 (patch) | |
tree | 1f33679dd02ac1e556ad3f8d33831fbf81bab0eb /src | |
parent | [SERVER] Fix unlock-without-lock in uplink (diff) | |
download | dnbd3-03fdce831e90e88ca5a60c2c07a0a16642804c85.tar.gz dnbd3-03fdce831e90e88ca5a60c2c07a0a16642804c85.tar.xz dnbd3-03fdce831e90e88ca5a60c2c07a0a16642804c85.zip |
[SERVER] Fetch correct revision after cloning
Diffstat (limited to 'src')
-rw-r--r-- | src/server/image.c | 6 |
1 files 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 ); |