Browse Source

and do the same when read

release0.1.5
Georg Hopp 12 years ago
parent
commit
d1f4c39dcd
  1. 20
      src/stream/read.c

20
src/stream/read.c

@ -68,8 +68,25 @@ streamRead(Stream this, void * buf, size_t count)
if (0 >= done) { if (0 >= done) {
switch (SSL_get_error((this->handle).ssl, done)) { switch (SSL_get_error((this->handle).ssl, done)) {
case SSL_ERROR_SYSCALL:
{
switch (errno) {
case EINTR:
case ENOBUFS:
case ENOMEM:
done = 0;
break;
case (EAGAIN|EWOULDBLOCK):
done = -1;
break;
default:
done = -2;
break;
}
}
break;
case SSL_ERROR_SSL: case SSL_ERROR_SSL:
case SSL_ERROR_SYSCALL:
{ {
unsigned long err; unsigned long err;
@ -83,6 +100,7 @@ streamRead(Stream this, void * buf, size_t count)
// DROP THROUGH // DROP THROUGH
case SSL_ERROR_ZERO_RETURN: case SSL_ERROR_ZERO_RETURN:
default:
done = -2; done = -2;
break; break;
} }

Loading…
Cancel
Save