Mercurial > hg > nginx-quic
view src/os/unix/ngx_sunpro_sparc64.il @ 2327:be8c6159590b stable-0.6
r2281 merge:
always use buffer, if connection is buffered,
this fixes OpenSSL "bad write retry" error, when
*) nginx passed a single buf greater than our buffer (say 32K) to OpenSSL,
*) OpenSSL returns SSL_ERROR_WANT_WRITE,
*) after some time nginx has to send a new data,
*) so there are at least two bufs nginx does pass them directly to OpenSSL,
*) but copies the first buf part to buffer, and sends the buffer to OpenSSL.
*) because the data length is lesser than it was in previous SSL_write():
16K < 32K, OpenSSL returns SSL_R_BAD_WRITE_RETRY.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 20 Nov 2008 17:20:15 +0000 |
parents | 4d9ea73a627a |
children | d620f497c50f |
line wrap: on
line source
/ / Copyright (C) Igor Sysoev / / "casa [%o2] 0x80, %o1, %o0" and / "casxa [%o2] 0x80, %o1, %o0" do the following: / / if ([%o2] == %o1) { / swap(%o0, [%o2]); / } else { / %o0 = [%o2]; / } / ngx_atomic_uint_t ngx_casa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, / ngx_atomic_t *lock); / / the arguments are passed in the %o0, %o1, %o2 / the result is returned in the %o0 .inline ngx_casa,0 casa [%o2] 0x80, %o1, %o0 .end / ngx_atomic_uint_t ngx_casxa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, / ngx_atomic_t *lock); / / the arguments are passed in the %o0, %o1, %o2 / the result is returned in the %o0 .inline ngx_casxa,0 casxa [%o2] 0x80, %o1, %o0 .end