Reorganise header files
[openssl.git] / ssl / s23_srvr.c
index 6ac6e4edad26dc15fe29b3bb24e406731fbd86be..7287022d23d97588aa8a2d86b8a5011b95f0fafe 100644 (file)
@@ -156,8 +156,10 @@ int ssl23_accept(SSL *s)
         cb = s->ctx->info_callback;
 
     s->in_handshake++;
-    if (!SSL_in_init(s) || SSL_in_before(s))
-        SSL_clear(s);
+    if (!SSL_in_init(s) || SSL_in_before(s)) {
+        if(!SSL_clear(s))
+            return -1;
+    }
 
     for (;;) {
         state = s->state;
@@ -242,8 +244,8 @@ int ssl23_get_client_hello(SSL *s)
      *  6-8   length           > Client Hello message
      *  9/10  client_version  /
      */
-    char buf_space[11];
-    char *buf = &(buf_space[0]);
+    unsigned char buf_space[11];
+    unsigned char *buf = &(buf_space[0]);
     unsigned char *p, *d, *d_len, *dd;
     unsigned int i;
     unsigned int csl, sil, cl;
@@ -262,7 +264,7 @@ int ssl23_get_client_hello(SSL *s)
         if (n != sizeof buf_space)
             return (n);         /* n == -1 || n == 0 */
 
-        p = s->packet;
+        p = RECORD_LAYER_get_packet(&s->rlayer);
 
         memcpy(buf, p, n);
 
@@ -413,7 +415,7 @@ int ssl23_get_client_hello(SSL *s)
          */
 
         type = 2;
-        p = s->packet;
+        p = RECORD_LAYER_get_packet(&s->rlayer);
         v[0] = p[3];            /* == SSL3_VERSION_MAJOR */
         v[1] = p[4];
 
@@ -449,27 +451,32 @@ int ssl23_get_client_hello(SSL *s)
         if (j <= 0)
             return (j);
 
-        ssl3_finish_mac(s, s->packet + 2, s->packet_length - 2);
+        ssl3_finish_mac(s, RECORD_LAYER_get_packet(&s->rlayer) + 2,
+                        RECORD_LAYER_get_packet_length(&s->rlayer) - 2);
 
         /* CLIENT-HELLO */
         if (s->msg_callback)
-            s->msg_callback(0, SSL2_VERSION, 0, s->packet + 2,
-                            s->packet_length - 2, s, s->msg_callback_arg);
+            s->msg_callback(0, SSL2_VERSION, 0,
+                            RECORD_LAYER_get_packet(&s->rlayer) + 2,
+                            RECORD_LAYER_get_packet_length(&s->rlayer) - 2, s,
+                            s->msg_callback_arg);
 
-        p = s->packet;
+        p = RECORD_LAYER_get_packet(&s->rlayer);
         p += 5;
         n2s(p, csl);
         n2s(p, sil);
         n2s(p, cl);
         d = (unsigned char *)s->init_buf->data;
-        if ((csl + sil + cl + 11) != s->packet_length) { /* We can't have TLS
-                                                          * extensions in SSL
-                                                          * 2.0 format *
-                                                          * Client Hello, can
-                                                          * we? Error
-                                                          * condition should
-                                                          * be * '>'
-                                                          * otherweise */
+        if ((csl + sil + cl + 11)
+                != RECORD_LAYER_get_packet_length(&s->rlayer)) {
+            /* We can't have TLS
+             * extensions in SSL
+             * 2.0 format *
+             * Client Hello, can
+             * we? Error
+             * condition should
+             * be * '>'
+             * otherweise */
             SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,
                    SSL_R_RECORD_LENGTH_MISMATCH);
             goto err;
@@ -554,20 +561,11 @@ int ssl23_get_client_hello(SSL *s)
             /*
              * put the 'n' bytes we have read into the input buffer for SSLv3
              */
-            s->rstate = SSL_ST_READ_HEADER;
-            s->packet_length = n;
-            if (s->s3->rbuf.buf == NULL)
-                if (!ssl3_setup_read_buffer(s))
-                    goto err;
-
-            s->packet = &(s->s3->rbuf.buf[0]);
-            memcpy(s->packet, buf, n);
-            s->s3->rbuf.left = n;
-            s->s3->rbuf.offset = 0;
+            if(!RECORD_LAYER_set_data(&s->rlayer, buf, n))
+                goto err;
         } else {
-            s->packet_length = 0;
-            s->s3->rbuf.left = 0;
-            s->s3->rbuf.offset = 0;
+            if(!RECORD_LAYER_set_data(&s->rlayer, NULL, 0))
+                goto err;
         }
         s->handshake_func = s->method->ssl_accept;
     } else {