]> granicus.if.org Git - postgresql/commitdiff
[ Backpatch to 7.3.X.]
authorBruce Momjian <bruce@momjian.us>
Sat, 29 Mar 2003 05:00:15 +0000 (05:00 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 29 Mar 2003 05:00:15 +0000 (05:00 +0000)
SSL_read/write can error needing ERROR_WANT_READ or ERROR_WANT_WRITE.

src/backend/libpq/be-secure.c

index 99646bcb9c3c5d7cd57e1638ce7e6c0eb835f27b..d854c6c07ceea302750583619d5ffcf784788b58 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.27 2003/03/29 03:56:44 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.28 2003/03/29 05:00:15 momjian Exp $
  *
  *       Since the server static private key ($DataDir/server.key)
  *       will normally be stored unencrypted so that the database
@@ -285,6 +285,9 @@ secure_read(Port *port, void *ptr, size_t len)
                        case SSL_ERROR_WANT_READ:
                                n = secure_read(port, ptr, len);
                                break;
+                       case SSL_ERROR_WANT_WRITE:
+                               n = secure_write(port, ptr, len);
+                               break;
                        case SSL_ERROR_SYSCALL:
                                if (n == -1)
                                        elog(COMMERROR, "SSL SYSCALL error: %s", strerror(errno));
@@ -337,6 +340,9 @@ secure_write(Port *port, void *ptr, size_t len)
                        case SSL_ERROR_NONE:
                                port->count += n;
                                break;
+                       case SSL_ERROR_WANT_READ:
+                               n = secure_read(port, ptr, len);
+                               break;
                        case SSL_ERROR_WANT_WRITE:
                                n = secure_write(port, ptr, len);
                                break;