diff options
author | Jacek Antonelli | 2008-08-15 23:44:56 -0500 |
---|---|---|
committer | Jacek Antonelli | 2008-08-15 23:44:56 -0500 |
commit | c07901e29ed545bbb02e3bddf148fe1104b94e9f (patch) | |
tree | f1ada64ce834acd7d92a425efb96c4b86bcf16b1 /linden/indra/llmessage/lliosocket.cpp | |
parent | Second Life viewer sources 1.15.0.2 (diff) | |
download | meta-impy-c07901e29ed545bbb02e3bddf148fe1104b94e9f.zip meta-impy-c07901e29ed545bbb02e3bddf148fe1104b94e9f.tar.gz meta-impy-c07901e29ed545bbb02e3bddf148fe1104b94e9f.tar.bz2 meta-impy-c07901e29ed545bbb02e3bddf148fe1104b94e9f.tar.xz |
Second Life viewer sources 1.15.1.3
Diffstat (limited to '')
-rw-r--r-- | linden/indra/llmessage/lliosocket.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/linden/indra/llmessage/lliosocket.cpp b/linden/indra/llmessage/lliosocket.cpp index af22180..0ceb436 100644 --- a/linden/indra/llmessage/lliosocket.cpp +++ b/linden/indra/llmessage/lliosocket.cpp | |||
@@ -423,23 +423,35 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl( | |||
423 | bool done = false; | 423 | bool done = false; |
424 | while(it != end) | 424 | while(it != end) |
425 | { | 425 | { |
426 | |||
426 | PUMP_DEBUG; | 427 | PUMP_DEBUG; |
427 | if((*it).isOnChannel(channels.in())) | 428 | if((*it).isOnChannel(channels.in())) |
428 | { | 429 | { |
429 | PUMP_DEBUG; | 430 | PUMP_DEBUG; |
430 | // *FIX: check return code - sockets will fail (broken, etc.) | 431 | // *FIX: check return code - sockets will fail (broken, etc.) |
431 | len = (apr_size_t)segment.size(); | 432 | len = (apr_size_t)segment.size(); |
432 | apr_socket_send( | 433 | apr_status_t status = apr_socket_send( |
433 | mDestination->getSocket(), | 434 | mDestination->getSocket(), |
434 | (const char*)segment.data(), | 435 | (const char*)segment.data(), |
435 | &len); | 436 | &len); |
437 | // We sometimes get a 'non-blocking socket operation could not be | ||
438 | // completed immediately' error from apr_socket_send. In this | ||
439 | // case we break and the data will be sent the next time the chain | ||
440 | // is pumped. | ||
441 | #if LL_WINDOWS | ||
442 | if (status == 730035) | ||
443 | break; | ||
444 | #endif | ||
436 | mLastWritten = segment.data() + len - 1; | 445 | mLastWritten = segment.data() + len - 1; |
446 | |||
437 | PUMP_DEBUG; | 447 | PUMP_DEBUG; |
438 | if((S32)len < segment.size()) | 448 | if((S32)len < segment.size()) |
439 | { | 449 | { |
440 | break; | 450 | break; |
441 | } | 451 | } |
452 | |||
442 | } | 453 | } |
454 | |||
443 | ++it; | 455 | ++it; |
444 | if(it != end) | 456 | if(it != end) |
445 | { | 457 | { |
@@ -449,6 +461,7 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl( | |||
449 | { | 461 | { |
450 | done = true; | 462 | done = true; |
451 | } | 463 | } |
464 | |||
452 | } | 465 | } |
453 | PUMP_DEBUG; | 466 | PUMP_DEBUG; |
454 | if(done && eos) | 467 | if(done && eos) |