// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: http.cc,v 1.53 2001/07/01 20:49:09 jgg Exp $
+// $Id: http.cc,v 1.56 2003/02/12 15:33:36 doogie Exp $
/* ######################################################################
HTTP Aquire Method - This is the HTTP aquire method for APT.
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
+#include <apti18n.h>
#include <apt-pkg/fileutl.h>
#include <apt-pkg/acquire-method.h>
#include <apt-pkg/error.h>
{
State = Header;
- Owner->Status("Waiting for file");
+ Owner->Status(_("Waiting for headers"));
Major = 0;
Minor = 0;
// The http server might be trying to do something evil.
if (Line.length() >= MAXLEN)
- return _error->Error("Got a single header line over %u chars",MAXLEN);
+ return _error->Error(_("Got a single header line over %u chars"),MAXLEN);
string::size_type Pos = Line.find(' ');
if (Pos == string::npos || Pos+1 > Line.length())
// Blah, some servers use "connection:closes", evil.
Pos = Line.find(':');
if (Pos == string::npos || Pos + 2 > Line.length())
- return _error->Error("Bad header line");
+ return _error->Error(_("Bad header line"));
Pos++;
}
{
if (sscanf(Line.c_str(),"HTTP/%u.%u %u %[^\n]",&Major,&Minor,
&Result,Code) != 4)
- return _error->Error("The http server sent an invalid reply header");
+ return _error->Error(_("The http server sent an invalid reply header"));
}
else
{
Major = 0;
Minor = 9;
if (sscanf(Line.c_str(),"HTTP %u %[^\n]",&Result,Code) != 2)
- return _error->Error("The http server sent an invalid reply header");
+ return _error->Error(_("The http server sent an invalid reply header"));
}
/* Check the HTTP response header to get the default persistance
return true;
if (sscanf(Val.c_str(),"%lu",&Size) != 1)
- return _error->Error("The http server sent an invalid Content-Length header");
+ return _error->Error(_("The http server sent an invalid Content-Length header"));
return true;
}
HaveContent = true;
if (sscanf(Val.c_str(),"bytes %lu-%*u/%lu",&StartPos,&Size) != 2)
- return _error->Error("The http server sent an invalid Content-Range header");
+ return _error->Error(_("The http server sent an invalid Content-Range header"));
if ((unsigned)StartPos > Size)
- return _error->Error("This http server has broken range support");
+ return _error->Error(_("This http server has broken range support"));
return true;
}
if (stringcasecmp(Tag,"Last-Modified:") == 0)
{
if (StrToTime(Val,Date) == false)
- return _error->Error("Unknown date format");
+ return _error->Error(_("Unknown date format"));
return true;
}
{
if (errno == EINTR)
return true;
- return _error->Errno("select","Select failed");
+ return _error->Errno("select",_("Select failed"));
}
if (Res == 0)
{
- _error->Error("Connection timed out");
+ _error->Error(_("Connection timed out"));
return ServerDie(Srv);
}
if (FileFD != -1 && FD_ISSET(FileFD,&wfds))
{
if (Srv->In.Write(FileFD) == false)
- return _error->Errno("write","Error writing to output file");
+ return _error->Errno("write",_("Error writing to output file"));
}
// Handle commands from APT
while (Srv->In.WriteSpace() == true)
{
if (Srv->In.Write(File->Fd()) == false)
- return _error->Errno("write","Error writing to file");
+ return _error->Errno("write",_("Error writing to file"));
if (Srv->In.IsLimit() == true)
return true;
}
while (Srv->In.WriteSpace() == true)
{
if (Srv->In.Write(File->Fd()) == false)
- return _error->Errno("write","Error writing to the file");
+ return _error->Errno("write",_("Error writing to the file"));
// Done
if (Srv->In.IsLimit() == true)
{
Srv->Close();
if (LErrno == 0)
- return _error->Error("Error reading from server Remote end closed connection");
+ return _error->Error(_("Error reading from server Remote end closed connection"));
errno = LErrno;
- return _error->Errno("read","Error reading from server");
+ return _error->Errno("read",_("Error reading from server"));
}
else
{
lseek(File->Fd(),0,SEEK_SET);
if (Srv->In.Hash->AddFD(File->Fd(),Srv->StartPos) == false)
{
- _error->Errno("read","Problem hashing file");
+ _error->Errno("read",_("Problem hashing file"));
return 5;
}
lseek(File->Fd(),0,SEEK_END);
// The header data is bad
case 2:
{
- _error->Error("Bad header Data");
+ _error->Error(_("Bad header Data"));
Fail(true);
RotateDNS();
continue;
if (FailCounter >= 2)
{
- Fail("Connection failed",true);
+ Fail(_("Connection failed"),true);
FailCounter = 0;
}
// Hard internal error, kill the connection and fail
case 5:
{
+ delete File;
+ File = 0;
+
Fail();
RotateDNS();
Server->Close();
}
default:
- Fail("Internal error");
+ Fail(_("Internal error"));
break;
}
return Mth.Loop();
}
+
+