|
|
@ -1,6 +1,6 @@ |
|
|
|
// -*- mode: cpp; mode: fold -*-
|
|
|
|
// Description /*{{{*/
|
|
|
|
// $Id: http.cc,v 1.29 1999/03/15 07:20:41 jgg Exp $
|
|
|
|
// $Id: http.cc,v 1.30 1999/04/04 02:02:04 jgg Exp $
|
|
|
|
/* ######################################################################
|
|
|
|
|
|
|
|
HTTP Aquire Method - This is the HTTP aquire method for APT. |
|
|
@ -504,11 +504,22 @@ bool ServerState::HeaderLine(string Line) |
|
|
|
|
|
|
|
string::size_type Pos = Line.find(' '); |
|
|
|
if (Pos == string::npos || Pos+1 > Line.length()) |
|
|
|
return _error->Error("Bad header line"); |
|
|
|
|
|
|
|
string Tag = string(Line,0,Pos); |
|
|
|
string Val = string(Line,Pos+1); |
|
|
|
{ |
|
|
|
// Blah, some servers use "connection:closes", evil.
|
|
|
|
Pos = Line.find(':'); |
|
|
|
if (Pos == string::npos || Pos + 2 > Line.length()) |
|
|
|
return _error->Error("Bad header line"); |
|
|
|
Pos++; |
|
|
|
} |
|
|
|
|
|
|
|
// Parse off any trailing spaces between the : and the next word.
|
|
|
|
string::size_type Pos2 = Pos; |
|
|
|
while (Pos2 < Line.length() && isspace(Line[Pos2]) != 0) |
|
|
|
Pos2++; |
|
|
|
|
|
|
|
string Tag = string(Line,0,Pos); |
|
|
|
string Val = string(Line,Pos2); |
|
|
|
|
|
|
|
if (stringcasecmp(Tag.begin(),Tag.begin()+4,"HTTP") == 0) |
|
|
|
{ |
|
|
|
// Evil servers return no version
|
|
|
|