Éppen az SSL_read/SSL_write man-ját olvasgatom, és azon töprengek, mit jelent ez:
WARNING
When an SSL_read() operation has to be repeated because of SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE, it must be repeated with the same arguments.
Ha mondjuk non-blocking socket-et használok, és visszakapom hogy nincs adat (SSL_ERROR_WANT_READ), akkor mi a jelentősége annak, hogy legközelebb ugyanarra a címre ugyanannyi byte-ot kérjek... esetleg ez azt jelenti, hogy az én bufferemet ő valamiféle tárolónak használja két hívás között? Ez nagyon hülyén hangzik...
Az SSL_set_mode man-jában meg ez olvasható
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER
Make it possible to retry SSL_write() with changed buffer location (the buffer contents must stay the same). This is not the default to avoid the misconception that non-blocking SSL_write() behaves like non-blocking write().
remélem, de nem vagyok biztos benne, hogy emiatt nem kell aggódnom, ha megadom ezt:
SSL_MODE_ENABLE_PARTIAL_WRITE
Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success when just a single record has been written). When not set (the default), SSL_write() will only report success once the complete chunk was written. Once SSL_write() returns with r, r bytes have been successfully written and the next call to SSL_write() must only send the n-r bytes left, imitating the behaviour of write().