]> granicus.if.org Git - postgresql/commitdiff
Add errno value for thread *_r function call buffer too small. Improve
authorBruce Momjian <bruce@momjian.us>
Mon, 15 Sep 2003 02:30:29 +0000 (02:30 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 15 Sep 2003 02:30:29 +0000 (02:30 +0000)
thread comments.

src/port/thread.c

index 193b2e0808b43a33162227d36a9dee1de5ce2112..bfc315cc0e4bc21d73ed80a53069b68c95b8a742 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  *
- * $Id: thread.c,v 1.7 2003/09/13 14:49:51 momjian Exp $
+ * $Id: thread.c,v 1.8 2003/09/15 02:30:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -17,6 +17,7 @@
 #include <pthread.h>
 #include <sys/types.h>
 #include <pwd.h>
+#include <errno.h>
 
 /*
  *     Threading sometimes requires specially-named versions of functions
  *             use *_r functions if they exist (configure test)
  *             do our own locking and copying of non-threadsafe functions
  *
+ *     The disadvantage of the last option is not the thread overhead but
+ *     the fact that all function calls are serialized, and with gethostbyname()
+ *     requiring a DNS lookup, that could be slow.
+ *
+ *     One thread-safe solution for gethostbyname() might be to use getaddrinfo().
+ *
  *     Compile and run src/tools/test_thread_funcs.c to see if your operating
  *     system has thread-safe non-*_r functions.
  */
@@ -143,7 +150,10 @@ pqGetpwuid(uid_t uid, struct passwd *resultbuf, char *buffer,
                *result = resultbuf;
        }
        else
+       {
                *result = NULL;
+               errno = ERANGE;
+       }
 
        pthread_mutex_unlock(&getpwuid_lock);
 #endif
@@ -239,7 +249,10 @@ pqGethostbyname(const char *name,
                        *result = resultbuf;
                }
                else
+               {
                        *result = NULL;
+                       errno = ERANGE;
+               }
        }
 #endif