Lines Matching defs:s

19 static int dtls1_handshake_write(SSL_CONNECTION *s);
68 SSL_CONNECTION *s = SSL_CONNECTION_FROM_SSL_ONLY(ssl);
70 if (s == NULL)
73 if (!DTLS_RECORD_LAYER_new(&s->rlayer)) {
87 if (s->server) {
88 d1->cookie_len = sizeof(s->d1->cookie);
102 s->d1 = d1;
110 static void dtls1_clear_queues(SSL_CONNECTION *s)
112 dtls1_clear_received_buffer(s);
113 dtls1_clear_sent_buffer(s);
116 void dtls1_clear_received_buffer(SSL_CONNECTION *s)
121 while ((item = pqueue_pop(s->d1->buffered_messages)) != NULL) {
128 void dtls1_clear_sent_buffer(SSL_CONNECTION *s)
133 while ((item = pqueue_pop(s->d1->sent_messages)) != NULL) {
138 && s->rlayer.wrl != frag->msg_header.saved_retransmit_state.wrl) {
154 SSL_CONNECTION *s = SSL_CONNECTION_FROM_SSL_ONLY(ssl);
156 if (s == NULL)
159 if (s->d1 != NULL) {
160 dtls1_clear_queues(s);
161 pqueue_free(s->d1->buffered_messages);
162 pqueue_free(s->d1->sent_messages);
165 DTLS_RECORD_LAYER_free(&s->rlayer);
169 OPENSSL_free(s->d1);
170 s->d1 = NULL;
180 SSL_CONNECTION *s = SSL_CONNECTION_FROM_SSL_ONLY(ssl);
182 if (s == NULL)
185 DTLS_RECORD_LAYER_clear(&s->rlayer);
187 if (s->d1) {
188 DTLS_timer_cb timer_cb = s->d1->timer_cb;
190 buffered_messages = s->d1->buffered_messages;
191 sent_messages = s->d1->sent_messages;
192 mtu = s->d1->mtu;
193 link_mtu = s->d1->link_mtu;
195 dtls1_clear_queues(s);
197 memset(s->d1, 0, sizeof(*s->d1));
200 s->d1->timer_cb = timer_cb;
202 if (s->server) {
203 s->d1->cookie_len = sizeof(s->d1->cookie);
207 s->d1->mtu = mtu;
208 s->d1->link_mtu = link_mtu;
211 s->d1->buffered_messages = buffered_messages;
212 s->d1->sent_messages = sent_messages;
219 s->version = DTLS_MAX_VERSION_INTERNAL;
221 else if (s->options & SSL_OP_CISCO_ANYCONNECT)
222 s->client_version = s->version = DTLS1_BAD_VER;
225 s->version = ssl->method->version;
234 SSL_CONNECTION *s = SSL_CONNECTION_FROM_SSL_ONLY(ssl);
236 if (s == NULL)
241 if (dtls1_get_timeout(s, &t)) {
247 ret = dtls1_handle_timeout(s);
252 s->d1->link_mtu = larg;
263 s->d1->mtu = larg;
279 void dtls1_start_timer(SSL_CONNECTION *s)
282 SSL *ssl = SSL_CONNECTION_GET_SSL(s);
287 s->d1->next_timeout = ossl_time_zero();
296 if (ossl_time_is_zero(s->d1->next_timeout)) {
297 if (s->d1->timer_cb != NULL)
298 s->d1->timeout_duration_us = s->d1->timer_cb(ssl, 0);
300 s->d1->timeout_duration_us = 1000000;
304 duration = ossl_us2time(s->d1->timeout_duration_us);
305 s->d1->next_timeout = ossl_time_add(ossl_time_now(), duration);
307 /* set s->d1->next_timeout into ssl->rbio interface */
308 dtls1_bio_set_next_timeout(SSL_get_rbio(ssl), s->d1);
311 int dtls1_get_timeout(const SSL_CONNECTION *s, OSSL_TIME *timeleft)
316 if (ossl_time_is_zero(s->d1->next_timeout))
327 *timeleft = ossl_time_subtract(s->d1->next_timeout, timenow);
333 int dtls1_is_timer_expired(SSL_CONNECTION *s)
338 if (!dtls1_get_timeout(s, &timeleft))
349 static void dtls1_double_timeout(SSL_CONNECTION *s)
351 s->d1->timeout_duration_us *= 2;
352 if (s->d1->timeout_duration_us > 60000000)
353 s->d1->timeout_duration_us = 60000000;
356 void dtls1_stop_timer(SSL_CONNECTION *s)
359 s->d1->timeout_num_alerts = 0;
360 s->d1->next_timeout = ossl_time_zero();
361 s->d1->timeout_duration_us = 1000000;
362 dtls1_bio_set_next_timeout(s->rbio, s->d1);
364 dtls1_clear_sent_buffer(s);
367 int dtls1_check_timeout_num(SSL_CONNECTION *s)
370 SSL *ssl = SSL_CONNECTION_GET_SSL(s);
372 s->d1->timeout_num_alerts++;
375 if (s->d1->timeout_num_alerts > 2
379 if (mtu < s->d1->mtu)
380 s->d1->mtu = mtu;
383 if (s->d1->timeout_num_alerts > DTLS1_TMO_ALERT_COUNT) {
385 SSLfatal(s, SSL_AD_NO_ALERT, SSL_R_READ_TIMEOUT_EXPIRED);
392 int dtls1_handle_timeout(SSL_CONNECTION *s)
395 if (!dtls1_is_timer_expired(s)) {
399 if (s->d1->timer_cb != NULL)
400 s->d1->timeout_duration_us = s->d1->timer_cb(SSL_CONNECTION_GET_USER_SSL(s),
401 s->d1->timeout_duration_us);
403 dtls1_double_timeout(s);
405 if (dtls1_check_timeout_num(s) < 0) {
410 dtls1_start_timer(s);
412 return dtls1_retransmit_buffered_messages(s);
431 SSL_CONNECTION *s = SSL_CONNECTION_FROM_SSL_ONLY(ssl);
433 if (s == NULL)
436 if (s->handshake_func == NULL) {
462 if ((s->version & 0xff00) != (DTLS1_VERSION & 0xff00)) {
520 if (s->msg_callback)
521 s->msg_callback(0, (versmajor << 8) | versminor, SSL3_RT_HEADER, buf,
522 DTLS1_RT_HEADER_LENGTH, ssl, s->msg_callback_arg);
594 if (s->msg_callback)
595 s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, data,
597 s->msg_callback_arg);
680 : s->version;
685 ssl_get_max_send_fragment(s)
750 if (s->msg_callback)
751 s->msg_callback(1, 0, SSL3_RT_HEADER, buf,
753 s->msg_callback_arg);
800 s->d1->handshake_read_seq = 1;
801 s->d1->handshake_write_seq = 1;
802 s->d1->next_handshake_write_seq = 1;
803 s->rlayer.wrlmethod->increment_sequence_ctr(s->rlayer.wrl);
815 ossl_statem_set_hello_verify_done(s);
824 if (BIO_write(s->rlayer.rrlnext, buf, n) != n) {
832 * buffered in s->rlayer.rrlnext
834 if (!ssl_set_new_record_layer(s,
854 static int dtls1_handshake_write(SSL_CONNECTION *s)
856 return dtls1_do_write(s, SSL3_RT_HANDSHAKE);
859 int dtls1_shutdown(SSL *s)
864 SSL_CONNECTION *sc = SSL_CONNECTION_FROM_SSL_ONLY(s);
869 wbio = SSL_get_wbio(s);
877 BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN, 1,
881 ret = ssl3_shutdown(s);
883 BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN, 0, NULL);
888 int dtls1_query_mtu(SSL_CONNECTION *s)
890 SSL *ssl = SSL_CONNECTION_GET_SSL(s);
892 if (s->d1->link_mtu) {
893 s->d1->mtu =
894 s->d1->link_mtu - BIO_dgram_get_mtu_overhead(SSL_get_wbio(ssl));
895 s->d1->link_mtu = 0;
899 if (s->d1->mtu < dtls1_min_mtu(s)) {
901 s->d1->mtu =
908 if (s->d1->mtu < dtls1_min_mtu(s)) {
910 s->d1->mtu = dtls1_min_mtu(s);
912 (long)s->d1->mtu, NULL);
926 size_t dtls1_min_mtu(SSL_CONNECTION *s)
928 SSL *ssl = SSL_CONNECTION_GET_SSL(s);
938 const SSL_CONNECTION *s = SSL_CONNECTION_FROM_CONST_SSL_ONLY(ssl);
940 if (s == NULL)
943 mtu = s->d1->mtu;
952 if (SSL_READ_ETM(s))
977 SSL_CONNECTION *s = SSL_CONNECTION_FROM_SSL_ONLY(ssl);
979 if (s == NULL)
982 s->d1->timer_cb = cb;