|
|
@@ -497,20 +497,22 @@ APT_PURE Hashes * HttpServerState::GetHashes() /*{{{*/
|
|
|
}
|
|
|
/*}}}*/
|
|
|
// HttpServerState::Die - The server has closed the connection. /*{{{*/
|
|
|
-bool HttpServerState::Die(FileFd &File)
|
|
|
+bool HttpServerState::Die(FileFd * const File)
|
|
|
{
|
|
|
unsigned int LErrno = errno;
|
|
|
|
|
|
// Dump the buffer to the file
|
|
|
if (State == ServerState::Data)
|
|
|
{
|
|
|
+ if (File == nullptr)
|
|
|
+ return true;
|
|
|
// on GNU/kFreeBSD, apt dies on /dev/null because non-blocking
|
|
|
// can't be set
|
|
|
- if (File.Name() != "/dev/null")
|
|
|
- SetNonBlock(File.Fd(),false);
|
|
|
+ if (File->Name() != "/dev/null")
|
|
|
+ SetNonBlock(File->Fd(),false);
|
|
|
while (In.WriteSpace() == true)
|
|
|
{
|
|
|
- if (In.Write(File.Fd()) == false)
|
|
|
+ if (In.Write(File->Fd()) == false)
|
|
|
return _error->Errno("write",_("Error writing to the file"));
|
|
|
|
|
|
// Done
|
|
|
@@ -629,7 +631,7 @@ bool HttpServerState::Go(bool ToFile, FileFd * const File)
|
|
|
if (Res == 0)
|
|
|
{
|
|
|
_error->Error(_("Connection timed out"));
|
|
|
- return Die(*File);
|
|
|
+ return Die(File);
|
|
|
}
|
|
|
|
|
|
// Handle server IO
|
|
|
@@ -637,14 +639,14 @@ bool HttpServerState::Go(bool ToFile, FileFd * const File)
|
|
|
{
|
|
|
errno = 0;
|
|
|
if (In.Read(ServerFd) == false)
|
|
|
- return Die(*File);
|
|
|
+ return Die(File);
|
|
|
}
|
|
|
|
|
|
if (ServerFd != -1 && FD_ISSET(ServerFd,&wfds))
|
|
|
{
|
|
|
errno = 0;
|
|
|
if (Out.Write(ServerFd) == false)
|
|
|
- return Die(*File);
|
|
|
+ return Die(File);
|
|
|
}
|
|
|
|
|
|
// Send data to the file
|