Re: libpq SSL with non-blocking sockets

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Steve Singer <ssinger_pg@sympatico.ca>
Cc: Martin Pihlak <martin.pihlak@gmail.com>, PG Hackers <pgsql-hackers@postgresql.org>
Date: 2011-06-27T14:25:09Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Improve libpq's error reporting for SSL failures.

  2. Use OpenSSL's SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag.

On Fri, Jun 24, 2011 at 5:14 PM, Steve Singer <ssinger_pg@sympatico.ca> wrote:
> A few things I noticed (that you might be aware of since you mentioned it
> needs cleanup)
>
> -The patch doesn't compile with non-ssl builds,  the debug at the bottom of
> PQSendSome isn't in an #ifdef
>
> -I don't think your handling the return code properly.   Consider this case.
>
> pqSendSome(some data)
>   sslRetryBuf = some Data
>   return 1
> pqSendSome(more data)
>   it sends all of 'some data'
>   returns 0
>
> I think 1 should be returned because all of 'more data' still needs to be
> sent.  I think returning a 0 will break PQsetnonblocking if you call it when
> there is data in both sslRetryBuf and outputBuffer.
> We might even want to try sending the data in outputBuffer after we've sent
> all the data sitting in sslRetryBuf.
>
>
> If you close the connection with an outstanding sslRetryBuf you need to free
> it.

Based on these comments, I have updated the status of the patch to
"Waiting on Author".

https://commitfest.postgresql.org/action/patch_view?id=594

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company