merge ws.c change to sofia

This commit is contained in:
Anthony Minessale 2014-07-12 04:39:41 +05:00
parent 1072c72eab
commit cc75547672

View File

@ -368,18 +368,25 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
ssize_t ws_raw_write(wsh_t *wsh, void *data, size_t bytes) ssize_t ws_raw_write(wsh_t *wsh, void *data, size_t bytes)
{ {
size_t r; size_t r;
int sanity = 2000;
if (wsh->ssl) { if (wsh->ssl) {
do { do {
r = SSL_write(wsh->ssl, data, bytes); r = SSL_write(wsh->ssl, data, bytes);
} while (r == -1 && SSL_get_error(wsh->ssl, r) == SSL_ERROR_WANT_WRITE); if (sanity < 2000) {
ms_sleep(1);
}
} while (--sanity > 0 && r == -1 && SSL_get_error(wsh->ssl, r) == SSL_ERROR_WANT_WRITE);
return r; return r;
} }
do { do {
r = send(wsh->sock, data, bytes, 0); r = send(wsh->sock, data, bytes, 0);
} while (r == -1 && xp_is_blocking(xp_errno())); if (sanity < 2000) {
ms_sleep(1);
}
} while (--sanity > 0 && r == -1 && xp_is_blocking(xp_errno()));
//if (r<0) { //if (r<0) {
//printf("wRITE FAIL: %s\n", strerror(errno)); //printf("wRITE FAIL: %s\n", strerror(errno));