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

Comparing trunk/Search/HttpHandler.cpp (file contents):
Revision 21 by douglas, 2002-12-10T14:44:50-08:00 vs.
Revision 25 by douglas, 2002-12-22T23:32:58-08:00

# Line 75 | Line 75 | HttpHandler::~HttpHandler()
75   #endif // _WIN32
76   }
77  
78 < bool HttpHandler::handle(URL &url, bool head)
78 > bool HttpHandler::handle(URL &url, const string referer, bool head)
79   {
80          bool answer = false;
81  
# Line 132 | Line 132 | bool HttpHandler::handle(URL &url, bool
132                  delete [] port;
133          }
134  
135 < //      putline("Referer: " + ?referer?);
135 >        if (referer != "")
136 >        {
137 >                putline("Referer: " + referer);
138 >        }
139 >
140          putline("Connection: close");
141          putline();
142  
# Line 155 | Line 159 | bool HttpHandler::handle(URL &url, bool
159                  unsigned minor = strtoul(line.substr(dot + 1, space - dot - 1).c_str(),
160                          0, 10);
161  
162 <                if (major > 1 || minor < 1)
162 >                if (major > 1)
163                  {
164                          cerr << program << ": Potentially Incompatible Server: HTTP/" <<
165                                  major << "." << minor << "\n";
# Line 275 | Line 279 | void HttpHandler::populate()
279                          memset(buffer, 0, BUFSIZ + 1);
280  
281                          unsigned bytes = left > BUFSIZ ? BUFSIZ : left;
282 +                        unsigned received;
283  
284 <                        if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
284 >                        if ((received = recv(http, buffer, bytes, 0)) == SOCKET_ERROR)
285                          {
286                                  error(program + ": Recv");
287                                  exit(1);
288                          }
289 +                        else if (received != bytes)
290 +                        {
291 +                                left -= received;
292 +                                page += buffer;
293 +
294 +                                memset(buffer, 0, BUFSIZ + 1);
295 +
296 +                                bytes -= received;
297 +                                if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
298 +                                {
299 +                                        error(program + ": Recv");
300 +                                        exit(1);
301 +                                }
302 +                        }
303  
304                          page += buffer;
305                          left -= bytes;
# Line 301 | Line 320 | void HttpHandler::populate()
320                                  memset(buffer, 0, BUFSIZ + 1);
321  
322                                  unsigned bytes = left > BUFSIZ ? BUFSIZ : left;
323 +                                unsigned received;
324  
325 <                                if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
325 >                                if ((received = recv(http, buffer, bytes, 0)) == SOCKET_ERROR)
326                                  {
327                                          error(program + ": Recv");
328                                          exit(1);
329                                  }
330 +                                else if (received != bytes)
331 +                                {
332 +                                        left -= received;
333 +                                        page += buffer;
334 +
335 +                                        memset(buffer, 0, BUFSIZ + 1);
336 +
337 +                                        bytes -= received;
338 +                                        if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
339 +                                        {
340 +                                                error(program + ": Recv");
341 +                                                exit(1);
342 +                                        }
343 +                                }
344  
345                                  page += buffer;
346                                  left -= bytes;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines