Updates to s_client and s_server to remove the constant 28 (for IPv4 header
and UDP header) when setting an mtu. This constant is not always correct (e.g.
if using IPv6). Use the new DTLS_CTRL functions instead.
Reviewed-by: Tim Hudson <tjh@openssl.org>
(cherry picked from commit 464ce92026
)
This commit is contained in:
@@ -1501,10 +1501,22 @@ re_start:
|
|||||||
BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
|
BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (socket_mtu > 28)
|
if (socket_mtu)
|
||||||
{
|
{
|
||||||
|
if(socket_mtu < DTLS_get_link_min_mtu(con))
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err,"MTU too small. Must be at least %ld\n",
|
||||||
|
DTLS_get_link_min_mtu(con));
|
||||||
|
BIO_free(sbio);
|
||||||
|
goto shut;
|
||||||
|
}
|
||||||
SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
|
SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
|
||||||
SSL_set_mtu(con, socket_mtu - 28);
|
if(!DTLS_set_link_mtu(con, socket_mtu))
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err, "Failed to set MTU\n");
|
||||||
|
BIO_free(sbio);
|
||||||
|
goto shut;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
/* want to do MTU discovery */
|
/* want to do MTU discovery */
|
||||||
|
@@ -2253,10 +2253,24 @@ static int sv_body(char *hostname, int s, int stype, unsigned char *context)
|
|||||||
BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
|
BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (socket_mtu > 28)
|
if (socket_mtu)
|
||||||
{
|
{
|
||||||
|
if(socket_mtu < DTLS_get_link_min_mtu(con))
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err,"MTU too small. Must be at least %ld\n",
|
||||||
|
DTLS_get_link_min_mtu(con));
|
||||||
|
ret = -1;
|
||||||
|
BIO_free(sbio);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
|
SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
|
||||||
SSL_set_mtu(con, socket_mtu - 28);
|
if(!DTLS_set_link_mtu(con, socket_mtu))
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err, "Failed to set MTU\n");
|
||||||
|
ret = -1;
|
||||||
|
BIO_free(sbio);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
/* want to do MTU discovery */
|
/* want to do MTU discovery */
|
||||||
|
Reference in New Issue
Block a user