1
0
mirror of https://github.com/danog/MadelineProto.git synced 2024-11-26 19:45:01 +01:00

Workaround undocumented amphp/file v2 quirk

This commit is contained in:
Daniil Gentili 2021-12-15 14:46:06 +01:00
parent 5969ebe783
commit 45b72b8d70
Signed by: danog
GPG Key ID: 8C1BE3B34B230CA7
3 changed files with 13 additions and 12 deletions

View File

@ -6,6 +6,7 @@ jobs:
strategy:
matrix:
php:
- '8.1'
- '8.0'
- '7.4'
- '7.3'

View File

@ -128,7 +128,8 @@ trait FilesLogic
yield $stream->seek($offset);
}
}
return yield $stream->write($payload);
yield $stream->write($payload);
return \strlen($payload);
};
return yield from $this->downloadToCallable($messageMedia, $callable, $cb, $seekable, $offset, $end);
}

View File

@ -25,6 +25,7 @@ use danog\MadelineProto\Ipc\IpcState;
use function Amp\File\exists;
use function Amp\File\openFile;
use function Amp\File\put;
use function Amp\File\rename as renameAsync;
use function Amp\File\stat;
@ -97,19 +98,17 @@ class SessionPaths
try {
Logger::log("Got exclusive lock of $path.lock...");
$object = \serialize($object);
$object = Serialization::PHP_HEADER
.\chr(Serialization::VERSION)
.\chr(PHP_MAJOR_VERSION)
.\chr(PHP_MINOR_VERSION)
.\serialize($object);
$file = yield openFile("$path.temp.php", 'bw+');
$l = yield $file->write(Serialization::PHP_HEADER);
$l += yield $file->write(\chr(Serialization::VERSION));
$l += yield $file->write(\chr(PHP_MAJOR_VERSION));
$l += yield $file->write(\chr(PHP_MINOR_VERSION));
$l += yield $file->write($object);
yield $file->close();
yield put(
"$path.temp.php",
$object
);
if ($l !== ($need = \strlen(Serialization::PHP_HEADER)+3+\strlen($object))) {
throw new Exception("Did not write all the data (need $need, wrote $l)");
}
yield renameAsync("$path.temp.php", $path);
} finally {
$unlock();