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 20 by douglas, 2002-12-10T14:04:39-08:00 vs.
Revision 24 by douglas, 2002-12-22T00:58:21-08:00

# Line 132 | Line 132 | bool HttpHandler::handle(URL &url, bool
132                  delete [] port;
133          }
134  
135 < //      putline("Referer: " + ?referer?);
135 > //      putline("Referer: " + ¿referer?);
136          putline("Connection: close");
137          putline();
138  
# Line 155 | Line 155 | bool HttpHandler::handle(URL &url, bool
155                  unsigned minor = strtoul(line.substr(dot + 1, space - dot - 1).c_str(),
156                          0, 10);
157  
158 <                if (major > 1 || minor < 1)
158 >                if (major > 1)
159                  {
160                          cerr << program << ": Potentially Incompatible Server: HTTP/" <<
161                                  major << "." << minor << "\n";
# Line 239 | Line 239 | bool HttpHandler::handle(URL &url, bool
239  
240   HttpHandler& HttpHandler::getline(string& line, char endline)
241   {
242 <        int end = page.find(endline);
243 <        int newline = page.find('\n');
242 >        unsigned end = page.find(endline);
243 >        unsigned newline = page.find('\n');
244  
245          if (newline < end || end == string::npos)
246          {
# Line 250 | Line 250 | HttpHandler& HttpHandler::getline(string
250          line = page.substr(0, end);
251          page.erase(0, (end == string::npos ? end : end + 1));
252  
253 //      if (line == "") cerr << "line = [" << line << "]\npage = [" << page
254 //              << "]" << (good() ? "true" : "false") << "\n";
255
253          return *this;
254   }
255  
# Line 278 | Line 275 | void HttpHandler::populate()
275                          memset(buffer, 0, BUFSIZ + 1);
276  
277                          unsigned bytes = left > BUFSIZ ? BUFSIZ : left;
278 +                        unsigned received;
279  
280 <                        if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
280 >                        if ((received = recv(http, buffer, bytes, 0)) == SOCKET_ERROR)
281                          {
282                                  error(program + ": Recv");
283                                  exit(1);
284                          }
285 +                        else if (received != bytes)
286 +                        {
287 +                                left -= received;
288 +                                page += buffer;
289 +
290 +                                memset(buffer, 0, BUFSIZ + 1);
291 +
292 +                                bytes -= received;
293 +                                if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
294 +                                {
295 +                                        error(program + ": Recv");
296 +                                        exit(1);
297 +                                }
298 +                        }
299  
300                          page += buffer;
301                          left -= bytes;
# Line 304 | Line 316 | void HttpHandler::populate()
316                                  memset(buffer, 0, BUFSIZ + 1);
317  
318                                  unsigned bytes = left > BUFSIZ ? BUFSIZ : left;
319 +                                unsigned received;
320  
321 <                                if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
321 >                                if ((received = recv(http, buffer, bytes, 0)) == SOCKET_ERROR)
322                                  {
323                                          error(program + ": Recv");
324                                          exit(1);
325                                  }
326 +                                else if (received != bytes)
327 +                                {
328 +                                        left -= received;
329 +                                        page += buffer;
330 +
331 +                                        memset(buffer, 0, BUFSIZ + 1);
332 +
333 +                                        bytes -= received;
334 +                                        if (recv(http, buffer, bytes, 0) == SOCKET_ERROR)
335 +                                        {
336 +                                                error(program + ": Recv");
337 +                                                exit(1);
338 +                                        }
339 +                                }
340  
341                                  page += buffer;
342                                  left -= bytes;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines