Hi David,

>> Others things are to instantaneously put that client in a wait list
>> when SSL_write() could not succed, continue with the others, and try
>> with that client again later. But, sometimes we can get a WANT_WRITE
>> or WANT_READ when renegotiating so this does not appears a solution.
>
> I don't follow. Why is that not a solution?

Well, maybe I miss the point of what man pages wanted to say with:

"[...]
WARNING
       When an SSL_write() operation has to be repeated because of
       SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE, it must be repeated with
       the same arguments.
[...]"

It's confusing for me. I know it doesn't make sense that if we
SSL_write() to a client that doesn't read, repeating SSL_write() with
same arguments will yield want_read and want_write all the time. What
exactly that means then? That's why I made a design on threads per
client (and the server will manage less than 20 connections for sure)
taking into account that "warning" from the man pages. So, I discarted
the solution of SSL_write() on another SSL structure when we get
want_read or want_write because I will be calling the function with
differents arguments. I also noted that SSL_write() is "clever" enough
to send _any_ length, so segmented writes will be overriding that
warning (if I undestood what man wanted to say). When I say clever
enough, I meant that in what I have proven (e.g. sending a 3mb file)
SSL_write() sends it by it's own (yielding want_write until it finish
with buffered data). The main reason the solution was discarted is
because that warning on man pages.

Regards,
-- 
If you want freedom, compile the source. Get gentoo.

Sebastián Treu
http://labombiya.com.ar
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to