-<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.308 2010/08/24 13:32:25 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.309 2010/08/26 22:00:19 tgl Exp $ -->
 
 <chapter Id="runtime-config">
   <title>Server Configuration</title>
         <filename>/tmp</filename>, but can be changed at build time.
         This parameter can only be set at server start.
        </para>
+
+       <para>
+        In addition to the socket file itself, which is named
+        <literal>.s.PGSQL.<replaceable>nnnn</></literal> where
+        <replaceable>nnnn</> is the server's port number, an ordinary file
+        named <literal>.s.PGSQL.<replaceable>nnnn</>.lock</literal> will be
+        created in the <varname>unix_socket_directory</> directory.  Neither
+        file should ever be removed manually.
+       </para>
+
+       <para>
+        This parameter is irrelevant on Windows, which does not have
+        Unix-domain sockets.
+       </para>
       </listitem>
      </varlistentry>
 
         group of the server user.  This parameter can only be set at
         server start.
        </para>
+
+       <para>
+        This parameter is irrelevant on Windows, which does not have
+        Unix-domain sockets.
+       </para>
       </listitem>
      </varlistentry>
 
        <para>
         This parameter can only be set at server start.
        </para>
+
+       <para>
+        This parameter is irrelevant on Windows, which does not have
+        Unix-domain sockets.
+       </para>
       </listitem>
      </varlistentry>
 
       </indexterm>
       <listitem>
        <para>
-        Specifies the number of seconds before sending a keepalive packet on an otherwise idle
-        connection.  A value of 0 uses the system default.  This parameter is supported
-        only on systems that support the <symbol>TCP_KEEPIDLE</> or <symbol>TCP_KEEPALIVE</>
-        symbols, and on Windows; on other systems, it must be zero. This parameter is
-        ignored for connections made via a Unix-domain socket.
-         <note>
-          <para>
-           On Windows, a value of 0 will set this parameter to 2 hours,
-           since Windows does not provide a way to read the default value.
-          </para>
-         </note>
+        Specifies the number of seconds before sending a keepalive packet on
+        an otherwise idle connection.  A value of 0 uses the system default.
+        This parameter is supported only on systems that support the
+        <symbol>TCP_KEEPIDLE</> or <symbol>TCP_KEEPALIVE</> symbols, and on
+        Windows; on other systems, it must be zero. This parameter is ignored
+        for connections made via a Unix-domain socket.
        </para>
+       <note>
+        <para>
+         On Windows, a value of 0 will set this parameter to 2 hours,
+         since Windows does not provide a way to read the system default value.
+        </para>
+       </note>
       </listitem>
      </varlistentry>
 
       </indexterm>
       <listitem>
        <para>
-        Specifies the number of seconds between sending keepalives on an otherwise idle
-        connection.  A value of 0 uses the system default.  This parameter is supported
-        only on systems that support the <symbol>TCP_KEEPINTVL</>
-        symbol, and on Windows; on other systems, it must be zero. This parameter is
-        ignored for connections made via a Unix-domain socket.
-         <note>
-          <para>
-           On Windows, a value of 0 will set this parameter to 1 second,
-           since Windows does not provide a way to read the default value.
-          </para>
-         </note>
+        Specifies the number of seconds between sending keepalives on an
+        otherwise idle connection.  A value of 0 uses the system default.
+        This parameter is supported only on systems that support the
+        <symbol>TCP_KEEPINTVL</> symbol, and on Windows; on other systems, it
+        must be zero. This parameter is ignored for connections made via a
+        Unix-domain socket.
        </para>
+       <note>
+        <para>
+         On Windows, a value of 0 will set this parameter to 1 second,
+         since Windows does not provide a way to read the system default value.
+        </para>
+       </note>
       </listitem>
      </varlistentry>
 
       <listitem>
        <para>
         Specifies the number of keepalive packets to send on an otherwise idle
-        connection.  A value of 0 uses the system default.  This parameter is supported
-        only on systems that support the <symbol>TCP_KEEPCNT</>
-        symbol; on other systems, it must be zero. This parameter is
-        ignored for connections made via a Unix-domain socket.
-         <note>
-          <para>
-           This parameter is not supported on Windows, and must be zero.
-          </para>
-         </note>
+        connection.  A value of 0 uses the system default.  This parameter is
+        supported only on systems that support the <symbol>TCP_KEEPCNT</>
+        symbol; on other systems, it must be zero. This parameter is ignored
+        for connections made via a Unix-domain socket.
        </para>
+       <note>
+        <para>
+         This parameter is not supported on Windows, and must be zero.
+        </para>
+       </note>
       </listitem>
      </varlistentry>
 
 
  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/libpq/pqcomm.c,v 1.212 2010/07/08 16:19:50 mha Exp $
+ * $PostgreSQL: pgsql/src/backend/libpq/pqcomm.c,v 1.213 2010/08/26 22:00:19 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 
    /*
     * Grab an interlock file associated with the socket file.
+    *
+    * Note: there are two reasons for using a socket lock file, rather than
+    * trying to interlock directly on the socket itself.  First, it's a lot
+    * more portable, and second, it lets us remove any pre-existing socket
+    * file without race conditions.
     */
    CreateSocketLockFile(sock_path, true);