diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2011-12-25 14:45:40 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2011-12-25 14:45:40 +0000 |
commit | e065e6cda2afd77c272992bb2bca382ce617ca27 (patch) | |
tree | 7bed179fe0cb8ac7db86eae0c60fe3e829c70593 /ssl/d1_both.c | |
parent | 60553cc2091498c82bc39072b5c30777ae5592cb (diff) |
PR: 2535
Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de>
Reviewed by: steve
Add SCTP support for DTLS (RFC 6083).
Diffstat (limited to 'ssl/d1_both.c')
-rw-r--r-- | ssl/d1_both.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/ssl/d1_both.c b/ssl/d1_both.c index 9f898d6997..89338e9430 100644 --- a/ssl/d1_both.c +++ b/ssl/d1_both.c @@ -1417,3 +1417,24 @@ dtls1_get_ccs_header(unsigned char *data, struct ccs_header_st *ccs_hdr) ccs_hdr->type = *(data++); } + +int dtls1_shutdown(SSL *s) + { + int ret; +#ifndef OPENSSL_NO_SCTP + if (BIO_dgram_is_sctp(SSL_get_wbio(s)) && + !(s->shutdown & SSL_SENT_SHUTDOWN)) + { + ret = BIO_dgram_sctp_wait_for_dry(SSL_get_wbio(s)); + if (ret < 0) return -1; + + if (ret == 0) + BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN, 1, NULL); + } +#endif + ret = ssl3_shutdown(s); +#ifndef OPENSSL_NO_SCTP + BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN, 0, NULL); +#endif + return ret; + } |