Re: Re: [PATCHES] PostgreSQL virtual hosting support - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Re: [PATCHES] PostgreSQL virtual hosting support
Date
Msg-id 200011132340.SAA17293@candle.pha.pa.us
Whole thread Raw
In response to Re: Re: [PATCHES] PostgreSQL virtual hosting support  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: Re: [PATCHES] PostgreSQL virtual hosting support  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
OK, I have removed the -k unix socketpath option from the client side of
this patch, and modified libpq so if they specify a host with a leading
slash, it will be considered a unix socket path.  Attached is the
relevant patch to libpq.


> > Bruce Momjian writes:
> >
> > > > Bruce Momjian writes:
> > > >
> > > > > I am tempted to apply this.  This is the second person who asked for
> > > > > binding to a single port.  The patch looks quite complete, with doc
> > > > > changes.  It appears to be a thorough job.
> > > >
> > > > Postmaster options are evil, please put something in backend/utils/guc.c.
> > > > (This is not the fault of the patch submitter, since this interface is new
> > > > for 7.1, but that still doesn't mean we should subvert it.)
> > >
> > > I have put code in guc.c to handle this, but there still are postmaster
> > > options for it too.


--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
Index: fe-connect.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v
retrieving revision 1.145
diff -c -r1.145 fe-connect.c
*** fe-connect.c    2000/11/13 15:18:15    1.145
--- fe-connect.c    2000/11/13 23:36:38
***************
*** 332,337 ****
--- 332,356 ----
      PQconninfoFree(connOptions);

      /* ----------
+      * Allow unix socket specification in the host name
+      * ----------
+      */
+     if (conn->pghost && conn->pghost[0] == '/')
+     {
+         if (conn->pgunixsocket)
+             free(conn->pgunixsocket);
+         conn->pgunixsocket = conn->pghost;
+         conn->pghost = NULL;
+     }
+     if (conn->pghostaddr && conn->pghostaddr[0] == '/')
+     {
+         if (conn->pgunixsocket)
+             free(conn->pgunixsocket);
+         conn->pgunixsocket = conn->pghostaddr;
+         conn->pghostaddr = NULL;
+     }
+
+     /* ----------
       * Connect to the database
       * ----------
       */
***************
*** 443,455 ****
      else
          conn->pgport = strdup(pgport);

! #if FIX_ME
!     /* we need to modify the function to accept a unix socket path */
!     if (pgunixsocket)
!         conn->pgunixsocket = strdup(pgunixsocket);
!     else if ((tmp = getenv("PGUNIXSOCKET")) != NULL)
!         conn->pgunixsocket = strdup(tmp);
! #endif

      if (pgtty == NULL)
      {
--- 462,486 ----
      else
          conn->pgport = strdup(pgport);

!     /* ----------
!      * We don't allow unix socket path as a function parameter.
!      * This allows unix socket specification in the host name.
!      * ----------
!      */
!     if (conn->pghost && conn->pghost[0] == '/')
!     {
!         if (conn->pgunixsocket)
!             free(conn->pgunixsocket);
!         conn->pgunixsocket = conn->pghost;
!         conn->pghost = NULL;
!     }
!     if (conn->pghostaddr && conn->pghostaddr[0] == '/')
!     {
!         if (conn->pgunixsocket)
!             free(conn->pgunixsocket);
!         conn->pgunixsocket = conn->pghostaddr;
!         conn->pghostaddr = NULL;
!     }

      if (pgtty == NULL)
      {
***************
*** 778,784 ****
          {
              printfPQExpBuffer(&conn->errorMessage,
                                "connectDBStart() -- "
!                          "invalid host address: %s\n", conn->pghostaddr);
              goto connect_errReturn;
          }

--- 809,815 ----
          {
              printfPQExpBuffer(&conn->errorMessage,
                                "connectDBStart() -- "
!                                "invalid host address: %s\n", conn->pghostaddr);
              goto connect_errReturn;
          }


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Re: [PATCHES] PostgreSQL virtual hosting support
Next
From: Peter Eisentraut
Date:
Subject: Re: Syslog Facility Patch