Skip site navigation (1) Skip section navigation (2)

Re: psqlodbc libpq version: quiet error on connect failure

From: "Dave Page" <dpage(at)vale-housing(dot)co(dot)uk>
To: "Marko Ristola" <Marko(dot)Ristola(at)kolumbus(dot)fi>
Cc: <pgsql-odbc(at)postgresql(dot)org>
Subject: Re: psqlodbc libpq version: quiet error on connect failure
Date: 2005-07-20 14:50:43
Message-ID: E7F85A1B5FF8D44C8A1AF6885BC9A0E4AC93C7@ratbert.vale-housing.co.uk (view raw or flat)
Thread:
Lists: pgsql-odbc
Thanks, fix applied.

/D 

> -----Original Message-----
> From: Marko Ristola [mailto:Marko(dot)Ristola(at)kolumbus(dot)fi] 
> Sent: 20 July 2005 14:22
> To: Dave Page
> Cc: pgsql-odbc(at)postgresql(dot)org
> Subject: Re: [ODBC] psqlodbc libpq version: quiet error on 
> connect failure
> 
> 
> I found one small required fix:
> self->pgconn needs to be set as NULL
> after PQfinish(self->pgconn) on line 3117.
> 
> Otherwise there comes a double free problem later.
> 
>     self->pgconn = PQconnectdb(conninfo);
>     if (PQstatus(self->pgconn) != CONNECTION_OK)
>     {
>        
> CC_set_error(self,CONNECTION_COULD_NOT_ESTABLISH,PQerrorMessag
> e(self->pgconn));
>         mylog("could not establish connection to the database %s
> \n",PQerrorMessage(self->pgconn));
>         PQfinish(self->pgconn);
>         self->pgconn = NULL; //THIS IS THE FIX, THAT IS 
> NEEDED TO AVOID
> THE DOUBLE free().
>         free(conninfo);
>         return 0;
>     }
> 
> Marko Ristola
> 
> Dave Page wrote:
> 
> >Thanks, I've applied a patch to fix this. Iirc, 
> exit_nicely() is used in
> >the libpq examples in the PostgreSQL manual :-)
> >
> >/D 
> >
> >  
> >
> >>-----Original Message-----
> >>From: pgsql-odbc-owner(at)postgresql(dot)org 
> >>[mailto:pgsql-odbc-owner(at)postgresql(dot)org] On Behalf Of Marko Ristola
> >>Sent: 20 July 2005 12:23
> >>To: pgsql-odbc(at)postgresql(dot)org
> >>Subject: [ODBC] psqlodbc libpq version: quiet error on 
> connect failure
> >>
> >>
> >>Problem
> >>
> >>psqlodbc, with libpq enabled, will do exit(1), if 
> connecting into the
> >>database fails.
> >>A good fix seems to be to remove the exit_nicely() function call.
> >>
> >>----------------------
> >>static void
> >>exit_nicely(PGconn *conn)
> >>{
> >>        PQfinish(conn);
> >>        exit(1);
> >>}
> >>----------------------
> >>
> >>Connect code:
> >>
> >>    self->pgconn = PQconnectdb(conninfo);
> >>    if (PQstatus(self->pgconn) != CONNECTION_OK)
> >>    {
> >>       
> >>CC_set_error(self,CONNECTION_COULD_NOT_ESTABLISH,PQerrorMessag
> >>e(self->pgconn));
> >>        mylog("could not establish connection to the database %s
> >>\n",PQerrorMessage(self->pgconn));
> >>        exit_nicely(self->pgconn);
> >>        free(conninfo);
> >>        return 0;
> >>    }
> >>
> >>------------------------
> >>
> >>Marko Ristola
> >>
> >>
> >>---------------------------(end of 
> >>broadcast)---------------------------
> >>TIP 5: don't forget to increase your free space map settings
> >>
> >>    
> >>
> >
> >---------------------------(end of 
> broadcast)---------------------------
> >TIP 4: Have you searched our list archives?
> >
> >               http://archives.postgresql.org
> >  
> >
> 
> 

pgsql-odbc by date

Next:From: lothar.behrensDate: 2005-07-20 16:54:11
Subject: Best way of retrieving tablename from a query ?
Previous:From: Marko RistolaDate: 2005-07-20 13:22:16
Subject: Re: psqlodbc libpq version: quiet error on connect failure

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group