Introduce the functions RECORD_LAYER_release, RECORD_LAYER_read_pending, and
[openssl.git] / ssl / ssl_lib.c
index 0483220f288f17c42047f70b0d1fe5eea873a1f7..9a29d9c60a6c0c5659651044e4b30c037f79b9db 100644 (file)
@@ -189,10 +189,6 @@ SSL3_ENC_METHOD ssl3_undef_enc_method = {
 
 int SSL_clear(SSL *s)
 {
-    unsigned char *rp, *wp;
-    size_t rlen, wlen;
-    int read_ahead;
-
     if (s->method == NULL) {
         SSLerr(SSL_F_SSL_CLEAR, SSL_R_NO_METHOD_SPECIFIED);
         return (0);
@@ -245,23 +241,7 @@ int SSL_clear(SSL *s)
     } else
         s->method->ssl_clear(s);
 
-    read_ahead = RECORD_LAYER_get_read_ahead(&s->rlayer);
-    rp = SSL3_BUFFER_get_buf(RECORD_LAYER_get_rbuf(&s->rlayer));
-    rlen = SSL3_BUFFER_get_len(RECORD_LAYER_get_rbuf(&s->rlayer));
-    wp = SSL3_BUFFER_get_buf(RECORD_LAYER_get_wbuf(&s->rlayer));
-    wlen = SSL3_BUFFER_get_len(RECORD_LAYER_get_wbuf(&s->rlayer));
-    memset(&s->rlayer, 0, sizeof s->rlayer);
-    SSL3_BUFFER_set_buf(RECORD_LAYER_get_rbuf(&s->rlayer), rp);
-    SSL3_BUFFER_set_len(RECORD_LAYER_get_rbuf(&s->rlayer), rlen);
-    SSL3_BUFFER_set_buf(RECORD_LAYER_get_wbuf(&s->rlayer), wp);
-    SSL3_BUFFER_set_len(RECORD_LAYER_get_wbuf(&s->rlayer), wlen);
-
-    /* Do I need to do this? As far as I can tell read_ahead did not
-     * previously get reset by SSL_clear...so I'll keep it that way..but is
-     * that right?
-     */
-    RECORD_LAYER_set_read_ahead(&s->rlayer, read_ahead);
-    RECORD_LAYER_set_ssl(&s->rlayer, s);
+    RECORD_LAYER_clear(&s->rlayer);
 
     return (1);
 }
@@ -304,6 +284,7 @@ SSL *SSL_new(SSL_CTX *ctx)
 
     RECORD_LAYER_set_ssl(&s->rlayer, s);
     SSL3_RECORD_clear(RECORD_LAYER_get_rrec(&s->rlayer));
+    SSL3_RECORD_clear(RECORD_LAYER_get_wrec(&s->rlayer));
 
 #ifndef OPENSSL_NO_KRB5
     s->kssl_ctx = kssl_ctx_new();
@@ -622,11 +603,7 @@ void SSL_free(SSL *s)
     if (s->method != NULL)
         s->method->ssl_free(s);
 
-    if (SSL3_BUFFER_is_initialised(RECORD_LAYER_get_rbuf(&s->rlayer)))
-        ssl3_release_read_buffer(s);
-    if (SSL3_BUFFER_is_initialised(RECORD_LAYER_get_wbuf(&s->rlayer)))
-        ssl3_release_write_buffer(s);
-    SSL3_RECORD_release(RECORD_LAYER_get_rrec(&s->rlayer));
+    RECORD_LAYER_release(&s->rlayer);
 
     if (s->ctx)
         SSL_CTX_free(s->ctx);