I think that makes the code slightly more readable.

Signed-off-by: Frank Lichtenheld <fr...@lichtenheld.com>
---
 src/openvpn/ssl.c         | 20 +++++++++---------
 src/openvpn/ssl_backend.h | 35 ++++++++++++++++++-------------
 src/openvpn/ssl_mbedtls.c | 44 +++++++++++++++++++--------------------
 3 files changed, 52 insertions(+), 47 deletions(-)

Might conflict with some of Arne's handshake patches.

diff --git a/src/openvpn/ssl.c b/src/openvpn/ssl.c
index 5b0cdcaa..b174b723 100644
--- a/src/openvpn/ssl.c
+++ b/src/openvpn/ssl.c
@@ -2599,7 +2599,7 @@ tls_process_state(struct tls_multi *multi,
         if (buf->len)
         {
             status = key_state_write_ciphertext(&ks->ks_ssl, buf);
-            if (status == -1)
+            if (status == KS_IO_ERROR)
             {
                 msg(D_TLS_ERRORS,
                     "TLS Error: Incoming Ciphertext -> TLS object write 
error");
@@ -2608,9 +2608,9 @@ tls_process_state(struct tls_multi *multi,
         }
         else
         {
-            status = 1;
+            status = KS_IO_SUCCESS;
         }
-        if (status == 1)
+        if (status == KS_IO_SUCCESS)
         {
             reliable_mark_deleted(ks->rec_reliable, buf);
             state_change = true;
@@ -2627,12 +2627,12 @@ tls_process_state(struct tls_multi *multi,
         ASSERT(buf_init(buf, 0));
         status = key_state_read_plaintext(&ks->ks_ssl, buf, 
TLS_CHANNEL_BUF_SIZE);
         update_time();
-        if (status == -1)
+        if (status == KS_IO_ERROR)
         {
             msg(D_TLS_ERRORS, "TLS Error: TLS object -> incoming plaintext 
read error");
             goto error;
         }
-        if (status == 1)
+        if (status == KS_IO_SUCCESS)
         {
             state_change = true;
             dmsg(D_TLS_DEBUG, "TLS -> Incoming Plaintext");
@@ -2678,13 +2678,13 @@ tls_process_state(struct tls_multi *multi,
     if (buf->len)
     {
         int status = key_state_write_plaintext(&ks->ks_ssl, buf);
-        if (status == -1)
+        if (status == KS_IO_ERROR)
         {
             msg(D_TLS_ERRORS,
                 "TLS ERROR: Outgoing Plaintext -> TLS object write error");
             goto error;
         }
-        if (status == 1)
+        if (status == KS_IO_SUCCESS)
         {
             state_change = true;
             dmsg(D_TLS_DEBUG, "Outgoing Plaintext -> TLS");
@@ -2699,13 +2699,13 @@ tls_process_state(struct tls_multi *multi,
         {
             int status = key_state_read_ciphertext(&ks->ks_ssl, buf, 
multi->opt.frame.tun_mtu);
 
-            if (status == -1)
+            if (status == KS_IO_ERROR)
             {
                 msg(D_TLS_ERRORS,
                     "TLS Error: Ciphertext -> reliable TCP/UDP transport read 
error");
                 goto error;
             }
-            if (status == 1)
+            if (status == KS_IO_SUCCESS)
             {
                 reliable_mark_active_outgoing(ks->send_reliable, buf, 
P_CONTROL_V1);
                 INCR_GENERATED;
@@ -3689,7 +3689,7 @@ tls_send_payload(struct tls_multi *multi,
 
     if (ks->state >= S_ACTIVE)
     {
-        if (key_state_write_plaintext_const(&ks->ks_ssl, data, size) == 1)
+        if (key_state_write_plaintext_const(&ks->ks_ssl, data, size) == 
KS_IO_SUCCESS)
         {
             ret = true;
         }
diff --git a/src/openvpn/ssl_backend.h b/src/openvpn/ssl_backend.h
index 1bd33699..d68f02aa 100644
--- a/src/openvpn/ssl_backend.h
+++ b/src/openvpn/ssl_backend.h
@@ -32,6 +32,11 @@
 
 #include "buffer.h"
 
+/* key_state_{read,write}_* return values */
+#define KS_IO_SUCCESS 1
+#define KS_IO_RETRY   0
+#define KS_IO_ERROR  -1
+
 #ifdef ENABLE_CRYPTO_OPENSSL
 #include "ssl_openssl.h"
 #include "ssl_verify_openssl.h"
@@ -427,10 +432,10 @@ key_state_export_keying_material(struct tls_session 
*session,
  *
  * @return The return value indicates whether the data was successfully
  *     processed:
- * - \c 1: All the data was processed successfully.
- * - \c 0: The data was not processed, this function should be called
+ * - \c KS_IO_SUCCESS: All the data was processed successfully.
+ * - \c KS_IO_RETRY: The data was not processed, this function should be called
  *   again later to retry.
- * - \c -1: An error occurred.
+ * - \c KS_IO_ERROR: An error occurred.
  */
 int key_state_write_plaintext(struct key_state_ssl *ks_ssl, struct buffer 
*buf);
 
@@ -444,10 +449,10 @@ int key_state_write_plaintext(struct key_state_ssl 
*ks_ssl, struct buffer *buf);
  *
  * @return The return value indicates whether the data was successfully
  *     processed:
- * - \c 1: All the data was processed successfully.
- * - \c 0: The data was not processed, this function should be called
+ * - \c KS_IO_SUCCESS: All the data was processed successfully.
+ * - \c KS_IO_RETRY: The data was not processed, this function should be called
  *   again later to retry.
- * - \c -1: An error occurred.
+ * - \c KS_IO_ERROR: An error occurred.
  */
 int key_state_write_plaintext_const(struct key_state_ssl *ks_ssl,
                                     const uint8_t *data, int len);
@@ -465,10 +470,10 @@ int key_state_write_plaintext_const(struct key_state_ssl 
*ks_ssl,
  *
  * @return The return value indicates whether the data was successfully
  *     processed:
- * - \c 1: Data was extracted successfully.
- * - \c 0: No data was extracted, this function should be called again
+ * - \c KS_IO_SUCCESS: Data was extracted successfully.
+ * - \c KS_IO_RETRY: No data was extracted, this function should be called 
again
  *   later to retry.
- * - \c -1: An error occurred.
+ * - \c KS_IO_ERROR: An error occurred.
  */
 int key_state_read_ciphertext(struct key_state_ssl *ks_ssl, struct buffer *buf,
                               int maxlen);
@@ -491,10 +496,10 @@ int key_state_read_ciphertext(struct key_state_ssl 
*ks_ssl, struct buffer *buf,
  *
  * @return The return value indicates whether the data was successfully
  *     processed:
- * - \c 1: All the data was processed successfully.
- * - \c 0: The data was not processed, this function should be called
+ * - \c KS_IO_SUCCESS: All the data was processed successfully.
+ * - \c KS_IO_RETRY: The data was not processed, this function should be called
  *   again later to retry.
- * - \c -1: An error occurred.
+ * - \c KS_IO_ERROR: An error occurred.
  */
 int key_state_write_ciphertext(struct key_state_ssl *ks_ssl,
                                struct buffer *buf);
@@ -512,10 +517,10 @@ int key_state_write_ciphertext(struct key_state_ssl 
*ks_ssl,
  *
  * @return The return value indicates whether the data was successfully
  *     processed:
- * - \c 1: Data was extracted successfully.
- * - \c 0: No data was extracted, this function should be called again
+ * - \c KS_IO_SUCCESS: Data was extracted successfully.
+ * - \c KS_IO_RETRY: No data was extracted, this function should be called 
again
  *   later to retry.
- * - \c -1: An error occurred.
+ * - \c KS_IO_ERROR: An error occurred.
  */
 int key_state_read_plaintext(struct key_state_ssl *ks_ssl, struct buffer *buf,
                              int maxlen);
diff --git a/src/openvpn/ssl_mbedtls.c b/src/openvpn/ssl_mbedtls.c
index b0785bae..cbaebba4 100644
--- a/src/openvpn/ssl_mbedtls.c
+++ b/src/openvpn/ssl_mbedtls.c
@@ -1222,13 +1222,13 @@ key_state_ssl_free(struct key_state_ssl *ks_ssl)
 int
 key_state_write_plaintext(struct key_state_ssl *ks, struct buffer *buf)
 {
-    int retval = 0;
+    int retval = KS_IO_RETRY;
 
     ASSERT(buf);
 
     retval = key_state_write_plaintext_const(ks, BPTR(buf), BLEN(buf));
 
-    if (1 == retval)
+    if (KS_IO_SUCCESS == retval)
     {
         memset(BPTR(buf), 0, BLEN(buf));  /* erase data just written */
         buf->len = 0;
@@ -1249,7 +1249,7 @@ key_state_write_plaintext_const(struct key_state_ssl *ks, 
const uint8_t *data, i
     if (0 == len)
     {
         perf_pop();
-        return 0;
+        return KS_IO_RETRY;
     }
 
     ASSERT(data);
@@ -1261,11 +1261,11 @@ key_state_write_plaintext_const(struct key_state_ssl 
*ks, const uint8_t *data, i
         perf_pop();
         if (MBEDTLS_ERR_SSL_WANT_WRITE == retval || MBEDTLS_ERR_SSL_WANT_READ 
== retval)
         {
-            return 0;
+            return KS_IO_RETRY;
         }
         mbed_log_err(D_TLS_ERRORS, retval,
                      "TLS ERROR: write tls_write_plaintext_const error");
-        return -1;
+        return KS_IO_ERROR;
     }
 
     if (retval != len)
@@ -1274,14 +1274,14 @@ key_state_write_plaintext_const(struct key_state_ssl 
*ks, const uint8_t *data, i
             "TLS ERROR: write tls_write_plaintext_const incomplete %d/%d",
             retval, len);
         perf_pop();
-        return -1;
+        return KS_IO_ERROR;
     }
 
     /* successful write */
     dmsg(D_HANDSHAKE_VERBOSE, "write tls_write_plaintext_const %d bytes", 
retval);
 
     perf_pop();
-    return 1;
+    return KS_IO_SUCCESS;
 }
 
 int
@@ -1300,7 +1300,7 @@ key_state_read_ciphertext(struct key_state_ssl *ks, 
struct buffer *buf,
     if (buf->len)
     {
         perf_pop();
-        return 0;
+        return KS_IO_RETRY;
     }
 
     len = buf_forward_capacity(buf);
@@ -1317,25 +1317,25 @@ key_state_read_ciphertext(struct key_state_ssl *ks, 
struct buffer *buf,
         perf_pop();
         if (MBEDTLS_ERR_SSL_WANT_WRITE == retval || MBEDTLS_ERR_SSL_WANT_READ 
== retval)
         {
-            return 0;
+            return KS_IO_RETRY;
         }
         mbed_log_err(D_TLS_ERRORS, retval, "TLS_ERROR: read 
tls_read_ciphertext error");
         buf->len = 0;
-        return -1;
+        return KS_IO_ERROR;
     }
     /* Nothing read, try again */
     if (0 == retval)
     {
         buf->len = 0;
         perf_pop();
-        return 0;
+        return KS_IO_RETRY;
     }
 
     /* successful read */
     dmsg(D_HANDSHAKE_VERBOSE, "read tls_read_ciphertext %d bytes", retval);
     buf->len = retval;
     perf_pop();
-    return 1;
+    return KS_IO_SUCCESS;
 }
 
 int
@@ -1351,7 +1351,7 @@ key_state_write_ciphertext(struct key_state_ssl *ks, 
struct buffer *buf)
     if (0 == buf->len)
     {
         perf_pop();
-        return 0;
+        return KS_IO_RETRY;
     }
 
     retval = endless_buf_write(&ks->bio_ctx->in, BPTR(buf), buf->len);
@@ -1362,11 +1362,11 @@ key_state_write_ciphertext(struct key_state_ssl *ks, 
struct buffer *buf)
 
         if (MBEDTLS_ERR_SSL_WANT_WRITE == retval || MBEDTLS_ERR_SSL_WANT_READ 
== retval)
         {
-            return 0;
+            return KS_IO_RETRY;
         }
         mbed_log_err(D_TLS_ERRORS, retval,
                      "TLS ERROR: write tls_write_ciphertext error");
-        return -1;
+        return KS_IO_ERROR;
     }
 
     if (retval != buf->len)
@@ -1374,7 +1374,7 @@ key_state_write_ciphertext(struct key_state_ssl *ks, 
struct buffer *buf)
         msg(D_TLS_ERRORS, "TLS ERROR: write tls_write_ciphertext incomplete 
%d/%d",
             retval, buf->len);
         perf_pop();
-        return -1;
+        return KS_IO_ERROR;
     }
 
     /* successful write */
@@ -1384,7 +1384,7 @@ key_state_write_ciphertext(struct key_state_ssl *ks, 
struct buffer *buf)
     buf->len = 0;
 
     perf_pop();
-    return 1;
+    return KS_IO_SUCCESS;
 }
 
 int
@@ -1403,7 +1403,7 @@ key_state_read_plaintext(struct key_state_ssl *ks, struct 
buffer *buf,
     if (buf->len)
     {
         perf_pop();
-        return 0;
+        return KS_IO_RETRY;
     }
 
     len = buf_forward_capacity(buf);
@@ -1419,19 +1419,19 @@ key_state_read_plaintext(struct key_state_ssl *ks, 
struct buffer *buf,
     {
         if (MBEDTLS_ERR_SSL_WANT_WRITE == retval || MBEDTLS_ERR_SSL_WANT_READ 
== retval)
         {
-            return 0;
+            return KS_IO_RETRY;
         }
         mbed_log_err(D_TLS_ERRORS, retval, "TLS_ERROR: read tls_read_plaintext 
error");
         buf->len = 0;
         perf_pop();
-        return -1;
+        return KS_IO_ERROR;
     }
     /* Nothing read, try again */
     if (0 == retval)
     {
         buf->len = 0;
         perf_pop();
-        return 0;
+        return KS_IO_RETRY;
     }
 
     /* successful read */
@@ -1439,7 +1439,7 @@ key_state_read_plaintext(struct key_state_ssl *ks, struct 
buffer *buf,
     buf->len = retval;
 
     perf_pop();
-    return 1;
+    return KS_IO_SUCCESS;
 }
 
 /* **************************************
-- 
2.30.2



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to