132 |
|
delete [] port; |
133 |
|
} |
134 |
|
|
135 |
< |
// putline("Referer: " + ?referer?); |
135 |
> |
// putline("Referer: " + ¿referer?); |
136 |
|
putline("Connection: close"); |
137 |
|
putline(); |
138 |
|
|
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"; |
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 |
|
{ |
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 |
|
|
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; |
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; |