| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | 
							- '\" t
 
- .\"     Title: ne_sock_init
 
- .\"    Author: 
 
- .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
 
- .\"      Date: 20 September 2021
 
- .\"    Manual: neon API reference
 
- .\"    Source: neon 0.32.1
 
- .\"  Language: English
 
- .\"
 
- .TH "NE_SOCK_INIT" "3" "20 September 2021" "neon 0.32.1" "neon API reference"
 
- .\" -----------------------------------------------------------------
 
- .\" * Define some portability stuff
 
- .\" -----------------------------------------------------------------
 
- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
- .\" http://bugs.debian.org/507673
 
- .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
 
- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
- .ie \n(.g .ds Aq \(aq
 
- .el       .ds Aq '
 
- .\" -----------------------------------------------------------------
 
- .\" * set default formatting
 
- .\" -----------------------------------------------------------------
 
- .\" disable hyphenation
 
- .nh
 
- .\" disable justification (adjust text to left margin only)
 
- .ad l
 
- .\" -----------------------------------------------------------------
 
- .\" * MAIN CONTENT STARTS HERE *
 
- .\" -----------------------------------------------------------------
 
- .SH "NAME"
 
- ne_sock_init, ne_sock_exit \- perform library initialization
 
- .SH "SYNOPSIS"
 
- .sp
 
- .ft B
 
- .nf
 
- #include <ne_socket\&.h>
 
- .fi
 
- .ft
 
- .HP \w'int\ ne_sock_init('u
 
- .BI "int ne_sock_init(void);"
 
- .HP \w'void\ ne_sock_exit('u
 
- .BI "void ne_sock_exit(void);"
 
- .SH "DESCRIPTION"
 
- .PP
 
- In some platforms and configurations, neon may be using some socket or SSL libraries which require global initialization before use\&. To perform this initialization, the
 
- \fBne_sock_init\fR
 
- function must be called before any other library functions are used\&.
 
- .PP
 
- Once all use of neon is complete,
 
- \fBne_sock_exit\fR
 
- can be called to perform de\-initialization of socket or SSL libraries, if necessary\&. Uses of
 
- \fBne_sock_init\fR
 
- and
 
- \fBne_sock_exit\fR
 
- are "reference counted"; if N calls to
 
- \fBne_sock_init\fR
 
- are made, only the Nth call to
 
- \fBne_sock_exit\fR
 
- will have effect\&.
 
- .PP
 
- \fBne_sock_init\fR
 
- will set the disposition of the
 
- SIGPIPE
 
- signal to
 
- \fIignored\fR\&. No change is made to the
 
- SIGPIPE
 
- disposition by
 
- \fBne_sock_exit\fR\&.
 
- .PP
 
- Both the SSL libraries supported by neon \(em OpenSSL and GnuTLS \(em require callbacks to be registered to allow thread\-safe use of SSL\&. These callbacks are stored as global variables and so their state persists for as long as the library in question is loaded into the process\&. If multiple users of the SSL library exist within the process, this can be problematic, particularly if one is dynamically loaded (and may subsequently be unloaded)\&.
 
- .PP
 
- If neon is configured using the
 
- \-\-enable\-threadsafe\-ssl
 
- flag, thread\-safe SSL support will be enabled automatically, as covered in the following section\&. Otherwise, it is not safe to use neon with SSL in a multi\-threaded process\&. The
 
- ne_has_support
 
- function can be used to determine whether neon is built to enable thread\-safety support in the SSL library\&.
 
- .SS "Thread\-safe SSL with OpenSSL"
 
- .PP
 
- neon follows two simple rules when dealing with the OpenSSL locking callbacks:
 
- .sp
 
- .RS 4
 
- .ie n \{\
 
- \h'-04'\(bu\h'+03'\c
 
- .\}
 
- .el \{\
 
- .sp -1
 
- .IP \(bu 2.3
 
- .\}
 
- \fBne_sock_init\fR
 
- will set thread\-safety locking callbacks if and only if no locking callbacks are already registered\&.
 
- .RE
 
- .sp
 
- .RS 4
 
- .ie n \{\
 
- \h'-04'\(bu\h'+03'\c
 
- .\}
 
- .el \{\
 
- .sp -1
 
- .IP \(bu 2.3
 
- .\}
 
- \fBne_sock_exit\fR
 
- will unset the thread\-safety locking callbacks if and only if the locking callbacks registered are those registered by
 
- \fBne_sock_init\fR\&.
 
- .RE
 
- .sp
 
- Applications and libraries should be able to co\-operate to ensure that SSL use is always thread\-safe if similar rules are always followed\&.
 
- .SS "Thread\-safe SSL with GnuTLS"
 
- .PP
 
- The cryptography library used by GnuTLS, libgcrypt, only supports an initialization operation to register thread\-safety callbacks\&.
 
- \fBne_sock_init\fR
 
- will register the thread\-safe locking callbacks on first use;
 
- \fBne_sock_exit\fR
 
- cannot unregister them\&. If multiple users of GnuTLS are present within the process, it is unsafe to dynamically unload neon from the process if neon is configured with thread\-safe SSL support enabled (since the callbacks would be left pointing at unmapped memory once neon is unloaded)\&.
 
- .SH "RETURN VALUE"
 
- .PP
 
- \fBne_sock_init\fR
 
- returns zero on success, or non\-zero on error\&. If an error occurs, no further use of the neon library should be attempted\&.
 
- .SH "SEE ALSO"
 
- .PP
 
- neon(3),
 
- ne_has_support(3)
 
- .SH "AUTHOR"
 
- .PP
 
- \fBJoe Orton\fR <\&[email protected]\&>
 
- .RS 4
 
- Author.
 
- .RE
 
- .SH "COPYRIGHT"
 
- .br
 
 
  |