All Manuals > LispWorks® User Guide and Reference Manual > 32 The COMM Package

create-ssl-socket-stream Function


Create a socket-stream from a socket handle.




create-ssl-socket-stream socket ssl-ctx &rest initargs &key errorp stream-class => stream-or-nil, maybe-condition

A socket handle.
A SSL context specifier or nil.
Initargs for socket-stream.
A boolean, default to nil.
A symbol or a class.
A socket-stream or nil.
nil or a condition.

The function create-ssl-socket-stream is a simple way to create a socket-stream with SSL from a socket handle. Its main purpose is to be used as part of the function that is specified by function in start-up-server, but it can be used with other socket handles.

socket must be a TCP socket handle that is open for communications.

ssl-ctx specifies the SSL configuration. If ssl-ctx is nil, then the socket-stream is created without SSL. Otherwise ssl-ctx must be a valid SSL context specifier as described for :ssl-ctx keyword in 25.8.6 Keyword arguments for use with SSL.

stream-class must be a class, or a symbol that names a class. The class must be a subclass of socket-stream. stream-class defaults to socket-stream.

initargs is used to supply valid initargs for the new instance of stream-class, with the following modifications:

create-ssl-socket-stream returns an instance of stream-class made by calling make-instance with the modified initargs if successful. If an error of type socket-error (which is most likely to be some ssl-condition) is signaled when the making the instance of stream-class and errorp is nil (the default), then create-ssl-socket-stream returns nil and the condition as the second value. When errorp is non-nil or an error that is not of type socket-error is signaled, then the function error is called.

create-ssl-socket-stream takes ownership of socket. If successful, socket will be closed when stream-or-nil is closed. On failure, create-ssl-socket-stream closes the socket on exit (in a cleanup-form of an unwind-protect).


The main advantage of using create-ssl-socket-stream over using make-instance with socket-stream is the error handling and closing of socket on error. If you use make-instance, you need to deal with these issues in your own code.


For an example of using create-ssl-socket-stream, see:

(example-edit-file "ssl/ssl-server")
See also

25.8.6 Keyword arguments for use with SSL

LispWorks® User Guide and Reference Manual - 01 Dec 2021 19:30:26