ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/Search/HttpHandler.h
(Generate patch)

Comparing trunk/Search/HttpHandler.h (file contents):
Revision 18 by douglas, 2002-12-09T21:40:12-08:00 vs.
Revision 312 by douglas, 2004-01-01T15:00:34-08:00

# Line 1 | Line 1
1   /* ============================================================================
2   * Douglas Thrift's Search Engine License
3   *
4 < * Copyright (C) 2002, Douglas Thrift. All Rights Reserved.
4 > * Copyright (C) 2002-2004, Douglas Thrift. All Rights Reserved.
5   * Redistribution and use in source and binary forms, with or without
6   * modification, are permitted provided that the following conditions are met:
7   *
# Line 46 | Line 46
46   //
47   // Douglas Thrift
48   //
49 < // HttpHandler.h
49 > // $Id: HttpHandler.h,v 1.21 2004/01/01 23:00:34 douglas Exp $
50  
51   #ifndef _HttpHandler_h_
52   #define _HttpHandler_h_
# Line 56 | Line 56
56  
57   // Lovely C Sockets!
58   #ifdef _WIN32
59
59   // Windows Sockets
60   #include <winsock2.h>
61   #include <windows.h>
62  
63 + inline int getpid() { return GetCurrentProcessId(); }
64   #else
65
65   // BSD Sockets
66 < #include <unistd.h>
68 < #include <sys/types.h>
69 < #include <sys/socket.h>
70 < #include <netinet/in.h>
71 < #include <netdb.h>
66 > typedef int SOCKET;
67  
68   #define INVALID_SOCKET -1
69   #define SOCKET_ERROR -1
75
76 typedef int SOCKET;
77
78 inline int closesocket(SOCKET s) { return close(s); }
79
70   #endif // _WIN32
71  
72 + #ifdef _OpenSSL_
73 + #include <openssl/ssl.h>
74 + #include <openssl/err.h>
75 + #include <openssl/rand.h>
76 + #endif
77 +
78   class HttpHandler
79   {
80   private:
# Line 88 | Line 84 | private:
84          WSADATA data;
85   #endif // _WIN32
86          SOCKET http;
87 + #ifdef _OpenSSL_
88 +        SSL_CTX* ctx;
89 +        SSL* ssl;
90 +        bool tls;
91 + #endif
92          char* buffer;
93 <        unsigned begin;
94 <        string page;
93 >        bool binary;
94 >        stringstream page;
95          string type;
96          unsigned length;
97          string location;
98          bool chunked;
99 +        void populate();
100          void putline(const string line = "");
101          string getline();
102          void error(const string& prefix, bool host = false);
103 + #ifdef _OpenSSL_
104 +        void error(const string& prefix, int number);
105 +        bool starttls();
106 + #endif
107 + // friends:
108 +    friend istream& operator>>(istream& is, code& data) { int number; is
109 +                >> number; data = code(number); return is; }
110   public:
111          HttpHandler();
112          ~HttpHandler();
113 <        bool handle(URL& url, bool head = false);
114 <        HttpHandler& getline(string& line, char endline = '\n');
115 <        bool good();
113 >        bool handle(URL& url, const string referer = "", bool head = false);
114 >        iostream& pageStream() { return page; }
115 >        istream& getline(string& line) { return std::getline(page, line); }
116 >        istream& getline(string& line, char end) { return std::getline(page, line,
117 >                end); }
118 >        bool good() { return page.good(); }
119          void clear();
120          string contentType() { return type; }
121          unsigned contentLength() { return length; }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines