OSDN Git Service

Check SSL_get_error() value SSL_ERROR_SYSCALL to see if SSL_read()
authorBruce Momjian <bruce@momjian.us>
Thu, 12 Dec 2002 22:42:39 +0000 (22:42 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 12 Dec 2002 22:42:39 +0000 (22:42 +0000)
returned -1, per SSL_get_error() documentation.

Nathan Mueller

src/backend/libpq/be-secure.c
src/interfaces/libpq/fe-secure.c

index 7973f2a..fcbef04 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.16 2002/11/07 18:45:51 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.17 2002/12/12 22:42:39 momjian Exp $
  *
  *       Since the server static private key ($DataDir/server.key)
  *       will normally be stored unencrypted so that the database
@@ -288,7 +288,10 @@ secure_read(Port *port, void *ptr, size_t len)
                        case SSL_ERROR_WANT_READ:
                                break;
                        case SSL_ERROR_SYSCALL:
-                               elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
+                               if (n == -1)
+                                       elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
+                               else
+                                       strerror(errno));
                                break;
                        case SSL_ERROR_SSL:
                                elog(ERROR, "SSL error: %s", SSLerrmessage());
@@ -337,7 +340,10 @@ secure_write(Port *port, const void *ptr, size_t len)
                        case SSL_ERROR_WANT_WRITE:
                                break;
                        case SSL_ERROR_SYSCALL:
-                               elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
+                               if (n == -1)
+                                       elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
+                               else
+                                       strerror(errno));
                                break;
                        case SSL_ERROR_SSL:
                                elog(ERROR, "SSL error: %s", SSLerrmessage());
index c32697f..b0cec26 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.16 2002/11/07 18:45:51 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.17 2002/12/12 22:42:39 momjian Exp $
  *
  * NOTES
  *       The client *requires* a valid server certificate.  Since
@@ -270,7 +270,8 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len)
                        case SSL_ERROR_WANT_READ:
                                break;
                        case SSL_ERROR_SYSCALL:
-                               printfPQExpBuffer(&conn->errorMessage,
+                               if (n == -1)
+                                       printfPQExpBuffer(&conn->errorMessage,
                                                                libpq_gettext("SSL SYSCALL error: %s\n"),
                                                                  SOCK_STRERROR(SOCK_ERRNO));
                                break;
@@ -315,7 +316,8 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len)
                        case SSL_ERROR_WANT_WRITE:
                                break;
                        case SSL_ERROR_SYSCALL:
-                               printfPQExpBuffer(&conn->errorMessage,
+                               if (n == -1)
+                                       printfPQExpBuffer(&conn->errorMessage,
                                                                libpq_gettext("SSL SYSCALL error: %s\n"),
                                                                  SOCK_STRERROR(SOCK_ERRNO));
                                break;