Re: psqlodbc libpq version: quiet error on connect failure
От | Dave Page |
---|---|
Тема | Re: psqlodbc libpq version: quiet error on connect failure |
Дата | |
Msg-id | E7F85A1B5FF8D44C8A1AF6885BC9A0E4AC93C7@ratbert.vale-housing.co.uk обсуждение исходный текст |
Ответ на | psqlodbc libpq version: quiet error on connect failure (Marko Ristola <Marko.Ristola@kolumbus.fi>) |
Список | pgsql-odbc |
Thanks, fix applied. /D > -----Original Message----- > From: Marko Ristola [mailto:Marko.Ristola@kolumbus.fi] > Sent: 20 July 2005 14:22 > To: Dave Page > Cc: pgsql-odbc@postgresql.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@postgresql.org > >>[mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Marko Ristola > >>Sent: 20 July 2005 12:23 > >>To: pgsql-odbc@postgresql.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 по дате отправления: