Unix Technical Forum

Re: [DOCS] Will PQregisterThreadLock() be documented?

This is a discussion on Re: [DOCS] Will PQregisterThreadLock() be documented? within the Pgsql Patches forums, part of the PostgreSQL category; --> Tom Lane wrote: > Volkan YAZICI <volkan.yazici@gmail.com> writes: > > Revision 1.269: Wed Mar 24 03:44:59 2004 UTC by ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > Pgsql Patches

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-18-2008, 01:00 AM
Bruce Momjian
 
Posts: n/a
Default Re: [DOCS] Will PQregisterThreadLock() be documented?

Tom Lane wrote:
> Volkan YAZICI <volkan.yazici@gmail.com> writes:
> > Revision 1.269: Wed Mar 24 03:44:59 2004 UTC by momjian
> > Branches: MAIN
> > ] Add thread locking to SSL and Kerberos connections.
> > ]
> > ] I have removed the docs mentioning that SSL and Kerberos are not
> > ] thread-safe.
> > ]
> > ] Manfred Spraul

>
> I note that PQinitSSL is likewise documentation-free.
>
> Also, neither one of these two routines is listed in exports.txt,
> meaning that Windows users are physically unable to call them
> even if they knew they existed :-(


I have applied the following patch to document PQinitSSL() and
PQregisterThreadLock().

I also remove the crypt() mention in the libpq threading section and
added a single sentence in the client-auth manual page under crypt().
Crypt authentication is so old now that a separate paragraph about it
seemed unwise.

I also added a comment about our use of locking around pqGetpwuid().

--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

Index: doc/src/sgml/client-auth.sgml
================================================== =================
RCS file: /cvsroot/pgsql/doc/src/sgml/client-auth.sgml,v
retrieving revision 1.83
diff -c -c -r1.83 client-auth.sgml
*** doc/src/sgml/client-auth.sgml 14 Aug 2005 23:35:37 -0000 1.83
--- doc/src/sgml/client-auth.sgml 24 Oct 2005 15:30:13 -0000
***************
*** 337,342 ****
--- 337,343 ----
authentication.
Since the password is sent in clear text over the
network, this should not be used on untrusted networks.
+ It also does not usually work with threaded client applications.
See <xref linkend="auth-password"> for details.
</para>
</listitem>
Index: doc/src/sgml/libpq.sgml
================================================== =================
RCS file: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v
retrieving revision 1.196
diff -c -c -r1.196 libpq.sgml
*** doc/src/sgml/libpq.sgml 20 Oct 2005 23:57:51 -0000 1.196
--- doc/src/sgml/libpq.sgml 24 Oct 2005 15:30:15 -0000
***************
*** 4032,4037 ****
--- 4032,4046 ----
fail if the server does not present a certificate; therefore, to
use this feature the server must also have a <filename>root.crt</> file.
</para>
+
+ <para>
+ If you are using <acronym>SSL</> inside your application (in addition to
+ inside <application>libpq</application>), you can use <function>PQinitSSL(int)</>
+ to tell <application>libpq</application> that the <acronym>SSL</> library
+ has already been initialized by your application.
+ </para>
+
+
</sect1>


***************
*** 4081,4092 ****
</para>

<para>
! <application>libpq</application> applications that use the
! <literal>crypt</literal> authentication method rely on the
! <literal>crypt()</literal> operating system function, which is often
! not thread-safe.<indexterm><primary>crypt</><secondary>thread
! safety</></> It is better to use the <literal>md5</literal> method,
! which is thread-safe on all platforms.
</para>

<para>
--- 4090,4101 ----
</para>

<para>
! If you are using Kerberos inside your application (in addition to inside
! <application>libpq</application>), you will need to do locking around
! Kerberos calls because Kerberos functions are not thread-safe. See
! function <function>PQregisterThreadLock</> in the
! <application>libpq</application> source code for a way to do cooperative
! locking between <application>libpq</application> and your application.
</para>

<para>
Index: src/interfaces/libpq/fe-auth.c
================================================== =================
RCS file: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v
retrieving revision 1.106
diff -c -c -r1.106 fe-auth.c
*** src/interfaces/libpq/fe-auth.c 17 Oct 2005 16:24:20 -0000 1.106
--- src/interfaces/libpq/fe-auth.c 24 Oct 2005 15:30:16 -0000
***************
*** 500,505 ****
--- 500,515 ----
struct passwd *pw = NULL;
#endif

+ /*
+ * pglock_thread() really only needs to be called around
+ * pg_krb5_authname(), but some users are using configure
+ * --enable-thread-safety-force, so we might as well do
+ * the locking within our library to protect pqGetpwuid().
+ * In fact, application developers can use getpwuid()
+ * in their application if they use the locking call we
+ * provide, or install their own locking function using
+ * PQregisterThreadLock().
+ */
pglock_thread();

#ifdef KRB5
Index: src/interfaces/libpq/fe-secure.c
================================================== =================
RCS file: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v
retrieving revision 1.72
diff -c -c -r1.72 fe-secure.c
*** src/interfaces/libpq/fe-secure.c 15 Oct 2005 02:49:48 -0000 1.72
--- src/interfaces/libpq/fe-secure.c 24 Oct 2005 15:30:17 -0000
***************
*** 220,227 ****


/*
! * Exported (but as yet undocumented) function to allow application to
! * tell us it's already initialized OpenSSL.
*/
void
PQinitSSL(int do_init)
--- 220,227 ----


/*
! * Exported function to allow application to tell us it's already
! * initialized OpenSSL.
*/
void
PQinitSSL(int do_init)


---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 05:10 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com