mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-22 22:16:16 +02:00
serialise: fix buffer size used, hide method for internal use only
Fixes #2169.
This commit is contained in:
parent
966407bcf1
commit
b08923b4a0
3 changed files with 9 additions and 5 deletions
|
@ -133,7 +133,7 @@ size_t FdSource::readUnbuffered(unsigned char * data, size_t len)
|
|||
ssize_t n;
|
||||
do {
|
||||
checkInterrupt();
|
||||
n = ::read(fd, (char *) data, bufSize);
|
||||
n = ::read(fd, (char *) data, len);
|
||||
} while (n == -1 && errno == EINTR);
|
||||
if (n == -1) { _good = false; throw SysError("reading from file"); }
|
||||
if (n == 0) { _good = false; throw EndOfFile("unexpected end-of-file"); }
|
||||
|
|
|
@ -77,10 +77,12 @@ struct BufferedSource : Source
|
|||
|
||||
size_t read(unsigned char * data, size_t len) override;
|
||||
|
||||
/* Underlying read call, to be overridden. */
|
||||
virtual size_t readUnbuffered(unsigned char * data, size_t len) = 0;
|
||||
|
||||
bool hasData();
|
||||
|
||||
protected:
|
||||
/* Underlying read call, to be overridden. */
|
||||
virtual size_t readUnbuffered(unsigned char * data, size_t len) = 0;
|
||||
};
|
||||
|
||||
|
||||
|
@ -134,8 +136,9 @@ struct FdSource : BufferedSource
|
|||
return *this;
|
||||
}
|
||||
|
||||
size_t readUnbuffered(unsigned char * data, size_t len) override;
|
||||
bool good() override;
|
||||
protected:
|
||||
size_t readUnbuffered(unsigned char * data, size_t len) override;
|
||||
private:
|
||||
bool _good = true;
|
||||
};
|
||||
|
|
|
@ -197,7 +197,8 @@ struct TunnelSource : BufferedSource
|
|||
{
|
||||
Source & from;
|
||||
TunnelSource(Source & from) : from(from) { }
|
||||
size_t readUnbuffered(unsigned char * data, size_t len)
|
||||
protected:
|
||||
size_t readUnbuffered(unsigned char * data, size_t len) override
|
||||
{
|
||||
to << STDERR_READ << len;
|
||||
to.flush();
|
||||
|
|
Loading…
Reference in a new issue