rem: this._httpVersion = new nsHttpVersion(match[1]); if (!this._httpVersion.equals(nsHttpVersion.HTTP_1_0) && !this._httpVersion.equals(nsHttpVersion.HTTP_1_1)) 
add: metadata._httpVersion = new nsHttpVersion(match[1]); if (!metadata._httpVersion.equals(nsHttpVersion.HTTP_1_0) && !metadata._httpVersion.equals(nsHttpVersion.HTTP_1_1)) 
context:   _parseRequestLine: function(lis)  {    // servers SHOULD ignore any empty line(s) received where a Request-Line    // is expected (section 4.1)    var line = {};    while (lis.readLine(line) && line.value == "")      dumpn("*** ignoring beginning blank line...");    // clients and servers SHOULD accept any amount of SP or HT characters    // between fields, even though only a single SP is required (section 19.3)    var request = line.value.split(/[ \t]+/);    if (!request || request.length != 3)    {      this.errorCode = 400;      return;    }    this._method = request[0];    // check the HTTP version    var ver = request[2];    var match = ver.match(/^HTTP\/(\d+\.\d+)$/);    if (!match)    {      this.errorCode = 400;      return;    }    // reject unrecognized methods    if (request[0] != "GET" && request[0] != "POST")    {      this.errorCode = 501;      return;    }    // determine HTTP version    try    {      this._httpVersion = new nsHttpVersion(match[1]);      if (!this._httpVersion.equals(nsHttpVersion.HTTP_1_0) &&          !this._httpVersion.equals(nsHttpVersion.HTTP_1_1))        throw "unsupported HTTP version";    }    catch (e)    {      // we support HTTP/1.0 and HTTP/1.1 only      this.errorCode = 501;      return;    }    var fullPath = request[1];    if (fullPath.charAt(0) != "/")    {      // XXX we don't support absolute URIs yet -- a MUST for HTTP/1.1;      //     for now just get the path and use that, ignoring hostport      try      {        var uri = Cc["@mozilla.org/network/io-service;1"]                    .getService(Ci.nsIIOService)                    .newURI(fullPath, null, null);        fullPath = uri.path;      }      catch (e) { /* invalid URI */ }      if (fullPath.charAt(0) != "/")      {        this.errorCode = 400;        return;      }    }    var splitter = fullPath.indexOf("?");    if (splitter < 0)    {      // _queryString already set in ctor      this._path = fullPath;    }    else    {      this._path = fullPath.substring(0, splitter);      this._queryString = fullPath.substring(splitter + 1);    }  },
meta: 10520	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/10520/4424fe78e8c7d380e10559e1b6c801b716baf045/httpd.js/clean/netwerk/test/httpserver/httpd.js