diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 9be79cf..aaa6146 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -4946,7 +4946,8 @@
 
         mbedtls_ssl_write_version( mbedtls_ssl_get_major_ver( ssl ),
                                    mbedtls_ssl_get_minor_ver( ssl ),
-                                   ssl->conf->transport, ssl->out_hdr + 1 );
+                                   mbedtls_ssl_conf_get_transport( ssl->conf ),
+                                   ssl->out_hdr + 1 );
 
         mbedtls_platform_memcpy( ssl->out_ctr, ssl->cur_out_ctr, 8 );
         (void)mbedtls_platform_put_uint16_be( ssl->out_len, len );
@@ -4963,7 +4964,8 @@
             mbedtls_platform_memcpy( &rec.ctr[0], ssl->out_ctr, 8 );
             mbedtls_ssl_write_version( mbedtls_ssl_get_major_ver( ssl ),
                                        mbedtls_ssl_get_minor_ver( ssl ),
-                                       ssl->conf->transport, rec.ver );
+                                       mbedtls_ssl_conf_get_transport( ssl->conf ),
+                                       rec.ver );
             rec.type = ssl->out_msgtype;
 
 #if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
@@ -5815,7 +5817,7 @@
     rec->ver[0] = buf[ rec_hdr_version_offset + 0 ];
     rec->ver[1] = buf[ rec_hdr_version_offset + 1 ];
     mbedtls_ssl_read_version( &major_ver, &minor_ver,
-                              ssl->conf->transport,
+                              mbedtls_ssl_conf_get_transport( ssl->conf ),
                               &rec->ver[0] );
 
     if( major_ver != mbedtls_ssl_get_major_ver( ssl ) )
@@ -9318,10 +9320,12 @@
 }
 #endif /* MBEDTLS_SSL_CONF_ENDPOINT */
 
+#if !defined(MBEDTLS_SSL_CONF_TRANSPORT)
 void mbedtls_ssl_conf_transport( mbedtls_ssl_config *conf, int transport )
 {
     conf->transport = transport;
 }
+#endif /* MBEDTLS_SSL_CONF_TRANSPORT */
 
 #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) && \
     !defined(MBEDTLS_SSL_CONF_ANTI_REPLAY)
@@ -12781,8 +12785,10 @@
     memset( conf, 0, sizeof( mbedtls_ssl_config ) );
 
 #if !defined(MBEDTLS_SSL_PROTO_TLS)
+#if !defined(MBEDTLS_SSL_CONF_TRANSPORT)
     conf->transport = MBEDTLS_SSL_TRANSPORT_DATAGRAM;
 #endif
+#endif
 }
 
 #if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED)
@@ -12849,7 +12855,11 @@
 #if !defined(MBEDTLS_SSL_CONF_ENDPOINT)
     mbedtls_ssl_conf_endpoint( conf, endpoint );
 #endif
+#if !defined(MBEDTLS_SSL_CONF_TRANSPORT)
     mbedtls_ssl_conf_transport( conf, transport );
+#else
+    ((void) transport);
+#endif
 
     /*
      * Things that are common to all presets
