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 25 by douglas, 2002-12-22T23:32:58-08:00 vs.
Revision 178 by douglas, 2003-07-05T19:13:12-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 50 | Line 50
50  
51   #include "HttpHandler.h"
52  
53 + #ifndef _WIN32
54 + #include <unistd.h>
55 + #include <sys/types.h>
56 + #include <sys/socket.h>
57 + #include <netinet/in.h>
58 + #include <netdb.h>
59 +
60 + #define INVALID_SOCKET -1
61 + #define SOCKET_ERROR -1
62 +
63 + inline int closesocket(SOCKET s) { return close(s); }
64 + #endif
65 +
66   HttpHandler::HttpHandler()
67   {
68          buffer = new char[BUFSIZ + 1];
# Line 281 | Line 294 | void HttpHandler::populate()
294                          unsigned bytes = left > BUFSIZ ? BUFSIZ : left;
295                          unsigned received;
296  
297 <                        if ((received = recv(http, buffer, bytes, 0)) == SOCKET_ERROR)
285 <                        {
286 <                                error(program + ": Recv");
287 <                                exit(1);
288 <                        }
289 <                        else if (received != bytes)
297 >                        while (true)
298                          {
299 <                                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)
299 >                                if ((received = recv(http, buffer, bytes, 0)) == SOCKET_ERROR)
300                                  {
301                                          error(program + ": Recv");
302                                          exit(1);
303                                  }
304 +                                else if (received != bytes)
305 +                                {
306 +                                        left -= received;
307 +                                        page += buffer;
308 +
309 +                                        memset(buffer, 0, BUFSIZ + 1);
310 +
311 +                                        bytes -= received;
312 +                                }
313 +                                else
314 +                                {
315 +                                        break;
316 +                                }
317                          }
318  
319                          page += buffer;
# Line 322 | Line 337 | void HttpHandler::populate()
337                                  unsigned bytes = left > BUFSIZ ? BUFSIZ : left;
338                                  unsigned received;
339  
340 <                                if ((received = recv(http, buffer, bytes, 0)) == SOCKET_ERROR)
326 <                                {
327 <                                        error(program + ": Recv");
328 <                                        exit(1);
329 <                                }
330 <                                else if (received != bytes)
340 >                                while (true)
341                                  {
342 <                                        left -= received;
343 <                                        page += buffer;
334 <
335 <                                        memset(buffer, 0, BUFSIZ + 1);
336 <
337 <                                        bytes -= received;
338 <                                        if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
342 >                                        if ((received = recv(http, buffer, bytes, 0)) ==
343 >                                                SOCKET_ERROR)
344                                          {
345                                                  error(program + ": Recv");
346                                                  exit(1);
347                                          }
348 +                                        else if (received != bytes)
349 +                                        {
350 +                                                left -= received;
351 +                                                page += buffer;
352 +
353 +                                                memset(buffer, 0, BUFSIZ + 1);
354 +
355 +                                                bytes -= received;
356 +                                        }
357 +                                        else
358 +                                        {
359 +                                                break;
360 +                                        }
361                                  }
362  
363                                  page += buffer;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines