Browse Source

Added kirb's TLS1.2 patch

Jaywalker 6 years ago
parent
commit
8ccc7b10ee
2 changed files with 488 additions and 988 deletions
  1. 486 893
      methods/http.cc
  2. 2 95
      methods/http.h

File diff suppressed because it is too large
+ 486 - 893
methods/http.cc


+ 2 - 95
methods/http.h

@@ -26,101 +26,6 @@ class FileFd;
 class HttpMethod;
 class Hashes;
 
-class CircleBuf
-{
-   unsigned char *Buf;
-   unsigned long long Size;
-   unsigned long long InP;
-   unsigned long long OutP;
-   std::string OutQueue;
-   unsigned long long StrPos;
-   unsigned long long MaxGet;
-   struct timeval Start;
-
-   static unsigned long long BwReadLimit;
-   static unsigned long long BwTickReadData;
-   static struct timeval BwReadTick;
-   static const unsigned int BW_HZ;
-
-   unsigned long long LeftRead() const
-   {
-      unsigned long long Sz = Size - (InP - OutP);
-      if (Sz > Size - (InP%Size))
-	 Sz = Size - (InP%Size);
-      return Sz;
-   }
-   unsigned long long LeftWrite() const
-   {
-      unsigned long long Sz = InP - OutP;
-      if (InP > MaxGet)
-	 Sz = MaxGet - OutP;
-      if (Sz > Size - (OutP%Size))
-	 Sz = Size - (OutP%Size);
-      return Sz;
-   }
-   void FillOut();
-
-   public:
-   Hashes *Hash;
-   // total amount of data that got written so far
-   unsigned long long TotalWriten;
-
-   // Read data in
-   bool Read(int Fd);
-   bool Read(std::string const &Data);
-
-   // Write data out
-   bool Write(int Fd);
-   bool WriteTillEl(std::string &Data,bool Single = false);
-
-   // Control the write limit
-   void Limit(long long Max) {if (Max == -1) MaxGet = 0-1; else MaxGet = OutP + Max;}
-   bool IsLimit() const {return MaxGet == OutP;};
-   void Print() const {cout << MaxGet << ',' << OutP << endl;};
-
-   // Test for free space in the buffer
-   bool ReadSpace() const {return Size - (InP - OutP) > 0;};
-   bool WriteSpace() const {return InP - OutP > 0;};
-
-   void Reset();
-   // Dump everything
-   void Stats();
-
-   CircleBuf(HttpMethod const * const Owner, unsigned long long Size);
-   ~CircleBuf();
-};
-
-struct HttpServerState: public ServerState
-{
-   // This is the connection itself. Output is data FROM the server
-   CircleBuf In;
-   CircleBuf Out;
-   int ServerFd;
-
-   protected:
-   virtual bool ReadHeaderLines(std::string &Data) APT_OVERRIDE;
-   virtual bool LoadNextResponse(bool const ToFile, FileFd * const File) APT_OVERRIDE;
-   virtual bool WriteResponse(std::string const &Data) APT_OVERRIDE;
-
-   public:
-   virtual void Reset(bool const Everything = true) APT_OVERRIDE;
-
-   virtual bool RunData(FileFd * const File) APT_OVERRIDE;
-   virtual bool RunDataToDevNull() APT_OVERRIDE;
-
-   virtual bool Open() APT_OVERRIDE;
-   virtual bool IsOpen() APT_OVERRIDE;
-   virtual bool Close() APT_OVERRIDE;
-   virtual bool InitHashes(HashStringList const &ExpectedHashes) APT_OVERRIDE;
-   virtual Hashes * GetHashes() APT_OVERRIDE;
-   virtual bool Die(FileFd * const File) APT_OVERRIDE;
-   virtual bool Flush(FileFd * const File) APT_OVERRIDE;
-   virtual bool Go(bool ToFile, FileFd * const File) APT_OVERRIDE;
-
-   HttpServerState(URI Srv, HttpMethod *Owner);
-   virtual ~HttpServerState() {Close();};
-};
-
 class HttpMethod : public ServerMethod
 {
    public:
@@ -136,6 +41,8 @@ class HttpMethod : public ServerMethod
    public:
    friend struct HttpServerState;
 
+   int Loop();
+
    explicit HttpMethod(std::string &&pProg);
 };