summaryrefslogtreecommitdiff
path: root/src/lib/libssl/d1_srvr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/d1_srvr.c')
-rw-r--r--src/lib/libssl/d1_srvr.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/lib/libssl/d1_srvr.c b/src/lib/libssl/d1_srvr.c
index 29421da9aa..9975e20873 100644
--- a/src/lib/libssl/d1_srvr.c
+++ b/src/lib/libssl/d1_srvr.c
@@ -276,10 +276,11 @@ int dtls1_accept(SSL *s)
276 case SSL3_ST_SW_HELLO_REQ_B: 276 case SSL3_ST_SW_HELLO_REQ_B:
277 277
278 s->shutdown=0; 278 s->shutdown=0;
279 dtls1_clear_record_buffer(s);
279 dtls1_start_timer(s); 280 dtls1_start_timer(s);
280 ret=dtls1_send_hello_request(s); 281 ret=dtls1_send_hello_request(s);
281 if (ret <= 0) goto end; 282 if (ret <= 0) goto end;
282 s->s3->tmp.next_state=SSL3_ST_SW_HELLO_REQ_C; 283 s->s3->tmp.next_state=SSL3_ST_SR_CLNT_HELLO_A;
283 s->state=SSL3_ST_SW_FLUSH; 284 s->state=SSL3_ST_SW_FLUSH;
284 s->init_num=0; 285 s->init_num=0;
285 286
@@ -721,10 +722,13 @@ int dtls1_accept(SSL *s)
721 if (ret <= 0) goto end; 722 if (ret <= 0) goto end;
722 723
723#ifndef OPENSSL_NO_SCTP 724#ifndef OPENSSL_NO_SCTP
724 /* Change to new shared key of SCTP-Auth, 725 if (!s->hit)
725 * will be ignored if no SCTP used. 726 {
726 */ 727 /* Change to new shared key of SCTP-Auth,
727 BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY, 0, NULL); 728 * will be ignored if no SCTP used.
729 */
730 BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY, 0, NULL);
731 }
728#endif 732#endif
729 733
730 s->state=SSL3_ST_SW_FINISHED_A; 734 s->state=SSL3_ST_SW_FINISHED_A;
@@ -749,7 +753,16 @@ int dtls1_accept(SSL *s)
749 if (ret <= 0) goto end; 753 if (ret <= 0) goto end;
750 s->state=SSL3_ST_SW_FLUSH; 754 s->state=SSL3_ST_SW_FLUSH;
751 if (s->hit) 755 if (s->hit)
756 {
752 s->s3->tmp.next_state=SSL3_ST_SR_FINISHED_A; 757 s->s3->tmp.next_state=SSL3_ST_SR_FINISHED_A;
758
759#ifndef OPENSSL_NO_SCTP
760 /* Change to new shared key of SCTP-Auth,
761 * will be ignored if no SCTP used.
762 */
763 BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY, 0, NULL);
764#endif
765 }
753 else 766 else
754 { 767 {
755 s->s3->tmp.next_state=SSL_ST_OK; 768 s->s3->tmp.next_state=SSL_ST_OK;
@@ -912,15 +925,13 @@ int dtls1_send_server_hello(SSL *s)
912 unsigned char *p,*d; 925 unsigned char *p,*d;
913 int i; 926 int i;
914 unsigned int sl; 927 unsigned int sl;
915 unsigned long l,Time; 928 unsigned long l;
916 929
917 if (s->state == SSL3_ST_SW_SRVR_HELLO_A) 930 if (s->state == SSL3_ST_SW_SRVR_HELLO_A)
918 { 931 {
919 buf=(unsigned char *)s->init_buf->data; 932 buf=(unsigned char *)s->init_buf->data;
920 p=s->s3->server_random; 933 p=s->s3->server_random;
921 Time=(unsigned long)time(NULL); /* Time */ 934 ssl_fill_hello_random(s, 1, p, SSL3_RANDOM_SIZE);
922 l2n(Time,p);
923 RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4);
924 /* Do the message type and length last */ 935 /* Do the message type and length last */
925 d=p= &(buf[DTLS1_HM_HEADER_LENGTH]); 936 d=p= &(buf[DTLS1_HM_HEADER_LENGTH]);
926 937