Thanks, Graham. 
Sorry for too late answer ))
Now i am testing...

21.02.2015, 14:42, "Graham Leggett" <minf...@sharp.fm>:
> On 21 Feb 2015, at 12:58 PM, Serj Rakitov <ra...@yandex.com> wrote:
>>  I set socket to non-blocking mode.
>>
>>  1. If I do SSL_read() and get result <=0 and then SSL_get_error() returns 
>> SSL_ERROR_WANT_WRITE what must I to do?
>>  Is it enough to call SSL_write(ssl,0,0) one time and then again call 
>> SSL_read() untill it successed. Is this right?
>>
>>  2.  If I do SSL_write() and get result <=0 and then SSL_get_error() returns 
>> SSL_ERROR_WANT_READ what must I to do?
>>  If I must read some data can it be application data or no? So, if I call 
>> SSL_read(ssl,buf,buf_size) must I waiting in buf some application data or 
>> never?
>>  And after I did SSL_read(ssl,buf,buf_size) then I must again call 
>> SSL_write() untill it returns with success?
>>
>>  3. Can be this situation: SSL_write() returns <=0 and then SSL_get_error() 
>> returns SSL_ERROR_WANT_WRITE?
>>  What to do in this case for non-blocking socket?
>
> In both cases you return back to your poll and ask the OS to wait for the 
> event that openssl asked for. If openssl asked for read, you poll until the 
> socket is readable. If openssl asked for a write, you poll until the socket 
> is writable.
>
> When you get the event you asked for, you just run whatever you were running 
> again. For example, if you were running SSL_read, run SSL_read again. If you 
> were running SSL_write, run SSL write again.
>
> So to write it out:
>
> - Call SSL_read(), it returns SSL_ERROR_WANT_WRITE
> - Poll for the socket being writable.
> - It’s writable! call SSL_read() again. it might return SSL_ERROR_WANT_READ
> - Poll for the socket being readable.
> - It’s readable! Call SSL_read() again, and so on.
>
> If openssl wants read, poll for read. If openssl wants write, poll for write. 
> Don’t arbitrarily swap round SSL_read and SSL_write, those two calls are what 
> *you* want to do, not what openssl wants to do.
>
> Regards,
> Graham


--
Best Regards,

Serj Rakitov
_______________________________________________
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users

Reply via email to