VariablePackage: exclToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 10.1
Significant update since the initial 10.1 release.
10.0 version

*ssl-library-names*

Initially :unset. The purpose of this variable is to tell Allegro CL the names of the SSL system libraries. (These names are not fully standardized.) If the value of this variable is :unset and the associated environment variable ACL_SSL_LIBRARY_NAMES does not have a value, when the :ssl module is loaded, Allegro CL will determine the version of SSL on the host machine and make reasonable guesses about the associated system library names. You need set this variable (or the associated environment variable) only if loading the :ssl module with them unset does not work.

If you do need to specify library names because the defaults do not work or because Allegro CL is not loading the version of SSL that you want, you can, as we describe, set this variable or the ACL_SSL_LIBRARY_NAMES environment variable to specify the desired system libraries to load. You should also set the variable *aclssl-version* or its associated environment variable, as we also describe below.

This variable tells the system exactly which system libraries should be loaded and it allows you to specify several possible values in case different machines use different library names. You can set the value of the variable or you can set the environment variable ACL_SSL_LIBRARY_NAMES. If the variable has value :unset and the environment variable is set, the variable value will be set from the environment variable value.

If you set the value of the variable directly, the value must be a list of two entries, each a string or a list of strings (on Windows, each should be just a string). When both are strings, the entries are the names of the two OpenSSL shared libraries that must be loaded in order to enable the :ssl module. Each string is a file name with a full type suffix but no directory pathname.

When an entry is a list (UNIX only), the entries in the sublist should again be filenames with full type suffixes but no directory pathnames. When the :ssl module is loaded, the names in the list are tried in order until one denotes a library that loads without error.

Here is an example from Linux using two lists (note: these library names are examples only and are not recommended values):

cl-user(4): *ssl-library-names*
(("libcrypto.so.1.0.0" "libcrypto.so.10" "libcrypto.so") 
 ("libssl.so.1.0.0" "libssl.so.10" "libssl.so"))
cl-user(5): 

If the value of *ssl-library-names* is :unset when the :ssl module is loaded and the environment variable ACL_SSL_LIBRARY_NAMES has a value, that value is read and the value of *ssl-library-names* is set to it. Here is an example setting ACL_SSL_LIBRARY_NAMES (again, the values are examples and not suggestions):

% setenv ACL_SSL_LIBRARY_NAMES "libcrypto.so.10 libssl.so.10"

That value causes the value of *ssl-library-names* to become

cl-user(6): *ssl-library-names*
("libcrypto.so.10" "libssl.so.10")
cl-user(7): 

Thus *ssl-library-names* becomes a list of two strings. It is not possible to set ACL_SSL_LIBRARY_NAMES to a value which causes *ssl-library-names* to have sublists as elements so there are no choices of system libraries to load. We presume if you are setting the environment variable, you know which two libraries to specify.

If *ssl-library-names* has a value other than :unset or ACL_SSL_LIBRARY_NAMES has a value, then either variable *aclssl-name* should also be given a non-nil value or the appropriate environment variable, ACL_ACLSSL_NAME (for 8-bit Lisps) or ACL_ACLISSL_NAME (for 16-bit Lisps), should be given a value. See *aclssl-name* for a list of suitable values. That tells Allegro CL which Allegro CL shared library to load. (It cannot be reliably determined which release of SSL is being loaded just from the library names.) If *aclssl-name* is nil and the associated environment variables are unset, Allegro CL assumes SSL 1.0 is being loaded and loads the appropriate Allegro CL SSL 1.0 library for its character size (8 bit or 16 bit). Warning: if you are using OpenSSL 1.1 and either aclssl or aclissl (the SSL 1.0 libraries) is loaded, there will likely be errors later which are difficult to understand.

If *ssl-library-names* is :unset and the ACL_SSL_LIBRARY_NAMES environment variable is unset, the OpenSSL version is determined by other means (see *aclssl-version*) and that information is sufficient to determing the correct Allegro CL library to load (since Lisp konws the OpenSSL version and its own character size) and for reasonable guesses to be made as to system library names. The system sets *ssl-library-names* to these reasonable guesses. As said at the beginning, this often works.

When the :ssl module is loaded, the filenames specified by *ssl-library-names* (whether set by the user, set from the ACL_SSL_LIBRARY_NAMES environment variable, or set by the system) will be looked for as the names of the OpenSSL libraries. If they are not found (searching directories specified by LD_LIBRARY_PATH on UNIX machines, PATH on Windows, and DYLD_LIBRARY_PATH on Macs) loading of the :ssl module will fail. If that happens, you must determine the SSL version and the names of the relevant system libraries and set *ssl-library-names* or ACL_SSL_LIBRARY_NAMES, and *aclssl-version* and try again.

OpenSLL is described in The Allegro CL SSL API in socket.htm.


Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page was not revised from the 10.0 page.
Created 2019.8.20.

ToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 10.1
Significant update since the initial 10.1 release.
10.0 version