SSL_write man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

SSL_WRITE(3)		 BSD Library Functions Manual		  SSL_WRITE(3)

NAME
     SSL_write — write bytes to a TLS/SSL connection

SYNOPSIS
     #include <openssl/ssl.h>

     int
     SSL_write(SSL *ssl, const void *buf, int num);

DESCRIPTION
     SSL_write() writes num bytes from the buffer buf into the specified ssl
     connection.

NOTES
     If necessary, SSL_write() will negotiate a TLS/SSL session, if not
     already explicitly performed by SSL_connect(3) or SSL_accept(3).  If the
     peer requests a re-negotiation, it will be performed transparently during
     the SSL_write() operation.	 The behaviour of SSL_write() depends on the
     underlying BIO.

     For the transparent negotiation to succeed, the ssl must have been ini‐
     tialized to client or server mode.	 This is being done by calling
     SSL_set_connect_state(3) or SSL_set_accept_state(3) before the first call
     to an SSL_read(3) or SSL_write() function.

     If the underlying BIO is blocking, SSL_write() will only return once the
     write operation has been finished or an error occurred, except when a
     renegotiation take place, in which case a SSL_ERROR_WANT_READ may occur.
     This behaviour can be controlled with the SSL_MODE_AUTO_RETRY flag of the
     SSL_CTX_set_mode(3) call.

     If the underlying BIO is non-blocking, SSL_write() will also return when
     the underlying BIO could not satisfy the needs of SSL_write() to continue
     the operation.  In this case a call to SSL_get_error(3) with the return
     value of SSL_write() will yield SSL_ERROR_WANT_READ or
     SSL_ERROR_WANT_WRITE.  As at any time a re-negotiation is possible, a
     call to SSL_write() can also cause read operations!  The calling process
     then must repeat the call after taking appropriate action to satisfy the
     needs of SSL_write().  The action depends on the underlying BIO.  When
     using a non-blocking socket, nothing is to be done, but select(2) can be
     used to check for the required condition.	When using a buffering BIO,
     like a BIO pair, data must be written into or retrieved out of the BIO
     before being able to continue.

     SSL_write() will only return with success, when the complete contents of
     buf of length num have been written.  This default behaviour can be
     changed with the SSL_MODE_ENABLE_PARTIAL_WRITE option of
     SSL_CTX_set_mode(3).  When this flag is set, SSL_write() will also return
     with success when a partial write has been successfully completed.	 In
     this case the SSL_write() operation is considered completed.  The bytes
     are sent and a new SSL_write() operation with a new buffer (with the
     already sent bytes removed) must be started.  A partial write is per‐
     formed with the size of a message block, which is 16kB for SSLv3/TLSv1.

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.

     When calling SSL_write() with num=0 bytes to be sent the behaviour is
     undefined.

RETURN VALUES
     The following return values can occur:

     >0	     The write operation was successful.  The return value is the num‐
	     ber of bytes actually written to the TLS/SSL connection.

     0	     The write operation was not successful.  Probably the underlying
	     connection was closed.  Call SSL_get_error(3) with the return
	     value to find out whether an error occurred or the connection was
	     shut down cleanly (SSL_ERROR_ZERO_RETURN).

	     SSLv2 (deprecated) does not support a shutdown alert protocol, so
	     it can only be detected whether the underlying connection was
	     closed.  It cannot be checked why the closure happened.

     <0	     The write operation was not successful, because either an error
	     occurred or action must be taken by the calling process.  Call
	     SSL_get_error(3) with the return value to find out the reason.

SEE ALSO
     bio(3), ssl(3), SSL_accept(3), SSL_connect(3), SSL_CTX_new(3),
     SSL_CTX_set_mode(3), SSL_get_error(3), SSL_read(3),
     SSL_set_connect_state(3)

BSD				April 28, 2024				   BSD
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net