From 8dc4adaff68077960b30e320d46307d6451adee6 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 27 Feb 2020 16:45:10 +0100 Subject: [minilinux] dnbd3-check: Handle RID, support 32bit php --- modules-available/minilinux/inc/minilinux.inc.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/modules-available/minilinux/inc/minilinux.inc.php b/modules-available/minilinux/inc/minilinux.inc.php index e79884f9..f68a6af1 100644 --- a/modules-available/minilinux/inc/minilinux.inc.php +++ b/modules-available/minilinux/inc/minilinux.inc.php @@ -399,13 +399,17 @@ class MiniLinux continue; $image = $out[1]; if (preg_match('/\bslx\.stage4\.rid=(\d+)/', $data[$type]['commandLine'], $out)) { - $rid = $out[1]; + $rid = (int)$out[1]; } break; } if ($image === false) return true; // No stage4 - if (file_exists(CONFIG_VMSTORE_DIR . '/' . $image)) + $mask = $rid; + if ($rid === 0) { + $mask = '*'; + } + if (glob(CONFIG_VMSTORE_DIR . '/' . $image . '.r' . $mask, GLOB_NOSORT) !== []) return true; // Already exists locally // Not found locally -- try to replicate $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); @@ -422,8 +426,8 @@ class MiniLinux } // proto-version(16), image name\0, rid(16), flags(8) $payload = pack('vA*xvC', 3, $image, $rid, 0); - // magic(16), cmd(16), payload-len(32), offset(64), handle(64) - $packet = pack('A*vVPP', 'sr', 2, strlen($payload), 0, 1234) . $payload; + // magic(16), cmd(16), payload-len(32), offset(64), handle(64) XXX 32Bit compat + $packet = pack('A*vVVVVV', 'sr', 2, strlen($payload), 0, 0, 1234, 0) . $payload; if (!socket_send($sock, $packet, strlen($packet), 0)) { $errors[] = 'Cannot send request to dnbd3-server'; socket_close($sock); @@ -442,7 +446,7 @@ class MiniLinux } socket_close($sock); // Try to decode header - $reply = unpack('A2magic/vcmd/Vsize/Phandle', $reply); + $reply = unpack('A2magic/vcmd/Vsize/Vhandlelow/Vhandlehigh', $reply); if ($reply['magic'] !== 'sr') { $errors[] = 'Reply has wrong magic'; } -- cgit v1.2.3-55-g7522