pqueue and dtls uses 64-bit values. Unfortunately, OpenSSL doesn't
[openssl.git] / ssl / d1_lib.c
index d774521aaff9f751ee85075302c0fed5b37a14de..458ce544d15df12b26ccffdb051fe2d5c2077dde 100644 (file)
@@ -132,10 +132,20 @@ int dtls1_new(SSL *s)
        memset(d1,0, sizeof *d1);
 
        /* d1->handshake_epoch=0; */
+#if defined(OPENSSL_SYS_VMS) || defined(VMS_TEST)
+       d1->bitmap.length=64;
+#else
        d1->bitmap.length=sizeof(d1->bitmap.map) * 8;
+#endif
+       pq_64bit_init(&(d1->bitmap.map));
+       pq_64bit_init(&(d1->bitmap.max_seq_num));
+       
+       pq_64bit_init(&(d1->next_bitmap.map));
+       pq_64bit_init(&(d1->next_bitmap.max_seq_num));
+
        d1->unprocessed_rcds.q=pqueue_new();
-    d1->processed_rcds.q=pqueue_new();
-    d1->buffered_messages = pqueue_new();
+       d1->processed_rcds.q=pqueue_new();
+       d1->buffered_messages = pqueue_new();
        d1->sent_messages=pqueue_new();
 
        if ( s->server)
@@ -198,6 +208,12 @@ void dtls1_free(SSL *s)
         }
        pqueue_free(s->d1->sent_messages);
 
+       pq_64bit_free(&(s->d1->bitmap.map));
+       pq_64bit_free(&(s->d1->bitmap.max_seq_num));
+
+       pq_64bit_free(&(s->d1->next_bitmap.map));
+       pq_64bit_free(&(s->d1->next_bitmap.max_seq_num));
+
        OPENSSL_free(s->d1);
        }