Thread: Password with libpq
I'm setting my PostgreSQL server to demand md5 encrypted passwords from users. In my C programs (using libpq as the interface), it's no big deal to pass the password through PQconnectdb. However, what about in the general case where my client program doesn't know if a password is required or not. Is there any libpq function to query the server if a password is required? Perhaps, there's a return value for PQconnectdb which would tell me that the connection failed because of the password? (In which case, I can ask for the password and try the connection again.) Thanks. -Tony
reina_ga@hotmail.com (Tony Reina) writes: > However, what about in the general case where my client program > doesn't know if a password is required or not. Is there any libpq > function to query the server if a password is required? Perhaps, > there's a return value for PQconnectdb which would tell me that the > connection failed because of the password? (In which case, I can ask > for the password and try the connection again.) Look into the psql source code; it does essentially this. regards, tom lane
Thanks Tom. I found the relevant bit of code in the psql files. Looks like it's just a simple loop that compares the error with the phrase "fe_sendauth: no password supplied" and then prompts for the password and tries again. Of course, if someone in the future decides to change the error message, then the code gets broke. I doubt that's likely however. -Tony ----- Original Message ----- From: "Tom Lane" <tgl@sss.pgh.pa.us> To: "Tony Reina" <reina_ga@hotmail.com> Cc: <pgsql-admin@postgresql.org> Sent: Monday, June 28, 2004 12:12 AM Subject: Re: [ADMIN] Password with libpq > reina_ga@hotmail.com (Tony Reina) writes: > > However, what about in the general case where my client program > > doesn't know if a password is required or not. Is there any libpq > > function to query the server if a password is required? Perhaps, > > there's a return value for PQconnectdb which would tell me that the > > connection failed because of the password? (In which case, I can ask > > for the password and try the connection again.) > > Look into the psql source code; it does essentially this. > > regards, tom lane >
Tony and Bryn Reina wrote: > Thanks Tom. I found the relevant bit of code in the psql files. Looks > like it's just a simple loop that compares the error with the phrase > "fe_sendauth: no password supplied" and then prompts for the password > and tries again. Of course, if someone in the future decides to > change the error message, then the code gets broke. I doubt that's > likely however. Eventually, we should introduce error codes for this situation.