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 201 by douglas, 2003-07-15T01:01:00-07: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-2003, 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.15 2003/07/15 08:01:00 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>
63
62   #else
65
63   // BSD Sockets
64 < #include <unistd.h>
65 < #include <sys/types.h>
69 < #include <sys/socket.h>
70 < #include <netinet/in.h>
71 < #include <netdb.h>
64 > typedef int SOCKET;
65 > #endif // _WIN32
66  
67 < #define INVALID_SOCKET -1
68 < #define SOCKET_ERROR -1
67 > #ifdef _OpenSSL_
68 > #include <openssl/crypto.h>
69  
70 < typedef int SOCKET;
70 > inline string openssl(bool agent = false)
71 > {
72 >        ostringstream openssl;
73  
74 < inline int closesocket(SOCKET s) { return close(s); }
74 >        openssl << "OpenSSL" << (agent ? "/" : " ");
75  
76 < #endif // _WIN32
76 >        long version = SSLeay();
77 >        long major = version / 0x10000000;
78 >        long minor = (version % 0x10000000) / 0x100000;
79 >        long fix = (version % 0x100000) / 0x1000;
80 >        long patch = (version % 0x1000);
81 >        
82 >        openssl << major << "." << minor << "." << fix;
83 >
84 >        if (patch == 0x0)
85 >        {
86 >                openssl << "-dev";
87 >        }
88 >        else if (patch >= 0x1 && patch <= 0xe)
89 >        {
90 >                openssl << "-beta" << patch;
91 >        }
92 >        else if (patch > 0xf)
93 >        {
94 >                openssl << char('a' - 1 + (patch / 0x10) % 26);
95 >        }
96 >
97 >        if (!agent)
98 >        {
99 >                openssl << " " << SSLeay_version(SSLEAY_BUILT_ON) << " "
100 >                   << SSLeay_version(SSLEAY_PLATFORM);
101 >        }
102 >
103 >        return openssl.str();
104 > }
105 > #endif
106  
107   class HttpHandler
108   {
# Line 88 | Line 113 | private:
113          WSADATA data;
114   #endif // _WIN32
115          SOCKET http;
116 + #ifdef _OpenSSL_
117 +        bool tls;
118 + #endif
119          char* buffer;
92        unsigned begin;
120          string page;
121          string type;
122          unsigned length;
123          string location;
124          bool chunked;
125 +        void populate();
126          void putline(const string line = "");
127          string getline();
128          void error(const string& prefix, bool host = false);
129   public:
130          HttpHandler();
131          ~HttpHandler();
132 <        bool handle(URL& url, bool head = false);
132 >        bool handle(URL& url, const string referer = "", bool head = false);
133          HttpHandler& getline(string& line, char endline = '\n');
134 <        bool good();
134 >        bool good() { return (page.length() > 0); }
135          void clear();
136          string contentType() { return type; }
137          unsigned contentLength() { return length; }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines