Commit 725713f7 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

PR: 2755

Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de>

Reduce MTU after failed transmissions. [0.9.8 version of patch]
parent 73eb0972
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -145,6 +145,7 @@ extern "C" {
/* #endif */

#define BIO_CTRL_DGRAM_QUERY_MTU          40 /* as kernel for current MTU */
#define BIO_CTRL_DGRAM_GET_FALLBACK_MTU   47
#define BIO_CTRL_DGRAM_GET_MTU            41 /* get cached value for MTU */
#define BIO_CTRL_DGRAM_SET_MTU            42 /* set cached value for
					      * MTU. want to use this
+3 −0
Original line number Diff line number Diff line
@@ -494,6 +494,9 @@ static long dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
		ret = 0;
#endif
		break;
	case BIO_CTRL_DGRAM_GET_FALLBACK_MTU:
		ret = 576 - 20 - 8;
		break;
	case BIO_CTRL_DGRAM_GET_MTU:
		return data->mtu;
		break;
+2 −2
Original line number Diff line number Diff line
@@ -227,7 +227,7 @@ int dtls1_do_write(SSL *s, int type)
	unsigned int len, frag_off, mac_size, blocksize;

	/* AHA!  Figure out the MTU, and stick to the right size */
	if ( ! (SSL_get_options(s) & SSL_OP_NO_QUERY_MTU))
	if (s->d1->mtu < dtls1_min_mtu() && !(SSL_get_options(s) & SSL_OP_NO_QUERY_MTU))
		{
		s->d1->mtu = 
			BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_QUERY_MTU, 0, NULL);
+5 −0
Original line number Diff line number Diff line
@@ -454,6 +454,11 @@ int dtls1_handle_timeout(SSL *s)
		state->timeout.read_timeouts = 1;
		}

	if (state->timeout_duration > 2)
		{
		s->d1->mtu = BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_GET_FALLBACK_MTU, 0, NULL);		
		}

	dtls1_start_timer(s);
	return dtls1_retransmit_buffered_messages(s);
	}