diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 0ee018edd2a722ee1d6fae783afc8b3f972bfec8..cffabbc8f7ec109e5de97e1879e4674b65c7aaff 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -1873,7 +1873,7 @@ int PQsslInUse(const PGconn *conn); </listitem> </varlistentry> - <varlistentry id="libpq-pqsslAttribute"> + <varlistentry id="libpq-pqsslattribute"> <term><function>PQsslAttribute</function><indexterm><primary>PQsslAttribute</></></term> <listitem> <para> @@ -1947,13 +1947,13 @@ const char *PQsslAttribute(const PGconn *conn, const char *attribute_name); </listitem> </varlistentry> - <varlistentry id="libpq-pqsslattributes"> - <term><function>PQsslAttributes</function><indexterm><primary>PQsslAttributes</></></term> + <varlistentry id="libpq-pqsslattributenames"> + <term><function>PQsslAttributeNames</function><indexterm><primary>PQsslAttributeNames</></></term> <listitem> <para> Return an array of SSL attribute names available. The array is terminated by a NULL pointer. <synopsis> -const char **PQsslAttributes(const PGconn *conn); +const char * const * PQsslAttributeNames(const PGconn *conn); </synopsis> </para> </listitem> @@ -1963,15 +1963,15 @@ const char **PQsslAttributes(const PGconn *conn); <term><function>PQsslStruct</function><indexterm><primary>PQsslStruct</></></term> <listitem> <para> - Return a pointer to an SSL-implementation specific object describing + Return a pointer to an SSL-implementation-specific object describing the connection. <synopsis> void *PQsslStruct(const PGconn *conn, const char *struct_name); </synopsis> </para> <para> - The structs available depends on the SSL implementation in use. - For OpenSSL, there is one struct, under the name "OpenSSL", + The struct(s) available depend on the SSL implementation in use. + For OpenSSL, there is one struct, available under the name "OpenSSL", and it returns a pointer to the OpenSSL <literal>SSL</literal> struct. To use this function, code along the following lines could be used: <programlisting><![CDATA[ diff --git a/doc/src/sgml/release-9.5.sgml b/doc/src/sgml/release-9.5.sgml index 9055387832a2017d76709f93ee5328ceb6525a1b..771ad0ca6fac80d8db90b0d3bc0e351ccc3b9530 100644 --- a/doc/src/sgml/release-9.5.sgml +++ b/doc/src/sgml/release-9.5.sgml @@ -608,18 +608,22 @@ FIXME: Add Andres 2015-02-03 [91fa7b4] Heikki..: Add API functions to libpq to interrogate SSL .. --> <para> - Add <application>libpq</> function <link - linkend="libpq-pqsslAttribute"><function>PQsslAttribute()</></> - that returns <acronym>SSL</> information (Heikki Linnakangas) - </para> - - <para> - While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></> - can still be used to call <productname>OpenSSL</> - functions, <function>PQsslAttribute()</> returns <acronym>SSL</> - information in an <acronym>SSL</>-implementation-independent way. - (Future versions of libpq might support other <acronym>SSL</> - implementations.) + Add <application>libpq</> functions to return <acronym>SSL</> + information in an implementation-independent way (Heikki Linnakangas) + </para> + + <para> + While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></> can + still be used to call <productname>OpenSSL</> functions, it is now + considered deprecated because future versions + of <application>libpq</> might support other <acronym>SSL</> + implementations. When possible, use the new + functions <link + linkend="libpq-pqsslattribute"><function>PQsslAttribute()</></>, <link + linkend="libpq-pqsslattributenames"><function>PQsslAttributeNames()</></>, + and <link linkend="libpq-pqsslinuse"><function>PQsslInUse()</></> + to obtain <acronym>SSL</> information in + an <acronym>SSL</>-implementation-independent way. </para> </listitem> diff --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt index 0bbcae51bbca204db1ccb749a4017036a59809d9..c69a4d5ea4266d46bc4eb58f608c856f44b4fd95 100644 --- a/src/interfaces/libpq/exports.txt +++ b/src/interfaces/libpq/exports.txt @@ -167,6 +167,6 @@ lo_truncate64 164 PQconninfo 165 PQsslInUse 166 PQsslStruct 167 -PQsslAttributes 168 +PQsslAttributeNames 168 PQsslAttribute 169 PQsetErrorContextVisibility 170 diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c index 4b2a324634bbefc42941772bfcec625f78b80c58..45ad7321bbed4ecdfb47384eca8e24ea66308374 100644 --- a/src/interfaces/libpq/fe-secure-openssl.c +++ b/src/interfaces/libpq/fe-secure-openssl.c @@ -1532,10 +1532,10 @@ PQsslStruct(PGconn *conn, const char *struct_name) return NULL; } -const char ** -PQsslAttributes(PGconn *conn) +const char *const * +PQsslAttributeNames(PGconn *conn) { - static const char *result[] = { + static const char *const result[] = { "library", "key_bits", "cipher", diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index db91e52ee90fcc9acb522fd366e22784df2b8412..aa5af7340fe4297ba5623b4aceffdabe74edc482 100644 --- a/src/interfaces/libpq/fe-secure.c +++ b/src/interfaces/libpq/fe-secure.c @@ -408,10 +408,10 @@ PQsslAttribute(PGconn *conn, const char *attribute_name) return NULL; } -const char ** -PQsslAttributes(PGconn *conn) +const char *const * +PQsslAttributeNames(PGconn *conn) { - static const char *result[] = {NULL}; + static const char *const result[] = {NULL}; return result; } diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h index 828c533c1a36ef3cdbec0231ffeee91d933ddfdf..3a521d428d12bf2566f261049307dfe13dd47400 100644 --- a/src/interfaces/libpq/libpq-fe.h +++ b/src/interfaces/libpq/libpq-fe.h @@ -329,7 +329,7 @@ extern int PQsetClientEncoding(PGconn *conn, const char *encoding); extern int PQsslInUse(PGconn *conn); extern void *PQsslStruct(PGconn *conn, const char *struct_name); extern const char *PQsslAttribute(PGconn *conn, const char *attribute_name); -extern const char **PQsslAttributes(PGconn *conn); +extern const char *const * PQsslAttributeNames(PGconn *conn); /* Get the OpenSSL structure associated with a connection. Returns NULL for * unencrypted connections or if any other TLS library is in use. */