summaryrefslogtreecommitdiffstats
path: root/ssl/d1_both.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2011-12-25 14:45:40 +0000
committerDr. Stephen Henson <steve@openssl.org>2011-12-25 14:45:40 +0000
commite065e6cda2afd77c272992bb2bca382ce617ca27 (patch)
tree7bed179fe0cb8ac7db86eae0c60fe3e829c70593 /ssl/d1_both.c
parent60553cc2091498c82bc39072b5c30777ae5592cb (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.c21
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;
+ }