src/server/util/io.c

changeset 735
902b417ab6d2
parent 734
a5f3e1e5e744
equal deleted inserted replaced
734:a5f3e1e5e744 735:902b417ab6d2
490 iovec_len++; 490 iovec_len++;
491 } 491 }
492 492
493 ssize_t wv = fd->writev(fd, io, iovec_len); 493 ssize_t wv = fd->writev(fd, io, iovec_len);
494 if(wv <= 0) { 494 if(wv <= 0) {
495 log_ereport(LOG_INFORM, "net_http_write chunk writev ret %d", (int)wv);
496 st->st.io_errno = net_errno(st->fd); 495 st->st.io_errno = net_errno(st->fd);
497 return wv; 496 return wv;
498 } 497 }
499 498
500 ssize_t ret_w = 0; 499 ssize_t ret_w = 0;
865 pool_free(ssl->pool, st); 864 pool_free(ssl->pool, st);
866 } 865 }
867 866
868 ssize_t net_ssl_write(SSLStream *st, const void *buf, size_t nbytes) { 867 ssize_t net_ssl_write(SSLStream *st, const void *buf, size_t nbytes) {
869 int ret = SSL_write(st->ssl, buf, nbytes); 868 int ret = SSL_write(st->ssl, buf, nbytes);
870 log_ereport(LOG_INFORM, "SSL_write(%p, %d) -> %d", buf, (int)nbytes, ret);
871 if(ret <= 0) { 869 if(ret <= 0) {
872 st->error = SSL_get_error(st->ssl, ret); 870 st->error = SSL_get_error(st->ssl, ret);
873 if(st->error == SSL_ERROR_WANT_WRITE || st->error == SSL_ERROR_WANT_READ) { 871 if(st->error == SSL_ERROR_WANT_WRITE || st->error == SSL_ERROR_WANT_READ) {
874 st->st.io_errno = EWOULDBLOCK; 872 st->st.io_errno = EWOULDBLOCK;
875 } else { 873 } else {
888 ssize_t net_ssl_writev(SSLStream *st, struct iovec *iovec, int iovcnt) { 886 ssize_t net_ssl_writev(SSLStream *st, struct iovec *iovec, int iovcnt) {
889 ssize_t r = 0; 887 ssize_t r = 0;
890 for(int i=0;i<iovcnt;i++) { 888 for(int i=0;i<iovcnt;i++) {
891 int ml = iovec[i].iov_len > 10 ? 10 : iovec[i].iov_len; 889 int ml = iovec[i].iov_len > 10 ? 10 : iovec[i].iov_len;
892 int ret = SSL_write(st->ssl, iovec[i].iov_base, iovec[i].iov_len); 890 int ret = SSL_write(st->ssl, iovec[i].iov_base, iovec[i].iov_len);
893 log_ereport(LOG_INFORM, "SSL_write(%p {%.*s}, %d) -> %d", iovec[i].iov_base, ml, iovec[i].iov_base, (int)iovec[i].iov_len, ret);
894 if(ret <= 0) { 891 if(ret <= 0) {
895 if(r == 0) { 892 if(r == 0) {
896 st->error = SSL_get_error(st->ssl, ret); 893 st->error = SSL_get_error(st->ssl, ret);
897 log_ereport(LOG_FAILURE, "net_ssl_write SSL error: %d , iov_len: %d, ret: %d", st->error, (int)iovec[i].iov_len, ret); 894 log_ereport(LOG_FAILURE, "net_ssl_write SSL error: %d , iov_len: %d, ret: %d", st->error, (int)iovec[i].iov_len, ret);
898 if(st->error == SSL_ERROR_WANT_WRITE || st->error == SSL_ERROR_WANT_READ) { 895 if(st->error == SSL_ERROR_WANT_WRITE || st->error == SSL_ERROR_WANT_READ) {

mercurial