mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
more precise detection of a closed connection
This commit is contained in:
parent
336b478266
commit
0245552aa1
@ -187,7 +187,11 @@ underflow() {
|
|||||||
int os_error = errno;
|
int os_error = errno;
|
||||||
#endif // WIN32_VC
|
#endif // WIN32_VC
|
||||||
|
|
||||||
_is_closed = !BIO_should_retry(*_source);
|
// if not EOF, there may be more data on the way even if BIO
|
||||||
|
// indicates that no retry is necessary
|
||||||
|
//_is_closed = !BIO_should_retry(*_source);
|
||||||
|
//_is_closed = !BIO_should_read(*_source);
|
||||||
|
_is_closed = BIO_eof(*_source);
|
||||||
if (_is_closed) {
|
if (_is_closed) {
|
||||||
downloader_cat.info()
|
downloader_cat.info()
|
||||||
<< "Lost connection to "
|
<< "Lost connection to "
|
||||||
@ -246,7 +250,16 @@ write_chars(const char *start, size_t length) {
|
|||||||
thread_consider_yield();
|
thread_consider_yield();
|
||||||
while (write_count != (int)(length - wrote_so_far)) {
|
while (write_count != (int)(length - wrote_so_far)) {
|
||||||
if (write_count <= 0) {
|
if (write_count <= 0) {
|
||||||
_is_closed = !BIO_should_retry(*_source);
|
// http://www.openssl.org/docs/crypto/BIO_s_bio.html
|
||||||
|
// "Calls to BIO_write() will place data in the buffer or
|
||||||
|
// request a retry if the buffer is full."
|
||||||
|
//
|
||||||
|
// when the server is terminated, this seems to be the best
|
||||||
|
// way of detecting that case on the client: a BIO write error
|
||||||
|
// without a retry request
|
||||||
|
//_is_closed = !BIO_should_retry(*_source);
|
||||||
|
//_is_closed = BIO_eof(*_source);
|
||||||
|
_is_closed = !BIO_should_write(*_source);
|
||||||
if (_is_closed) {
|
if (_is_closed) {
|
||||||
return wrote_so_far;
|
return wrote_so_far;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user