diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h
index 29c8dc0..42b3473 100644
--- a/include/polarssl/ssl.h
+++ b/include/polarssl/ssl.h
@@ -713,13 +713,17 @@
     int min_major_ver;          /*!< min. major version used          */
     int min_minor_ver;          /*!< min. minor version used          */
 
+    unsigned char timeout;      /*!< DTLS: initial value of the timeout
+                                     for handshake retransmission     */
+
     /*
      * Callbacks (RNG, debug, I/O, verification)
      */
     int  (*f_rng)(void *, unsigned char *, size_t);
     void (*f_dbg)(void *, int, const char *);
-    int (*f_recv)(void *, unsigned char *, size_t);
     int (*f_send)(void *, const unsigned char *, size_t);
+    int (*f_recv)(void *, unsigned char *, size_t);
+    int (*f_recv_timeout)(void *, unsigned char *, size_t, unsigned char);
     int (*f_get_cache)(void *, ssl_session *);
     int (*f_set_cache)(void *, const ssl_session *);
 
@@ -985,17 +989,22 @@
 void ssl_set_endpoint( ssl_context *ssl, int endpoint );
 
 /**
- * \brief          Set the transport type (TLS or DTLS).
- *                 Default: TLS
+ * \brief           Set the transport type (TLS or DTLS).
+ *                  Default: TLS
  *
- * \param ssl      SSL context
+ * \param ssl       SSL context
  * \param transport transport type:
  *                  SSL_TRANSPORT_STREAM for TLS,
  *                  SSL_TRANSPORT_DATAGRAM for DTLS.
- * \return         0 on success or POLARSSL_ERR_SSL_BAD_INPUT_DATA
+ * \return          0 on success or POLARSSL_ERR_SSL_BAD_INPUT_DATA
  *
  * \note            If DTLS is selected and max and/or min version are less
  *                  than TLS 1.1 (DTLS 1.0) they are upped to that value.
+ *
+ * \note            Regarding I/O callbacks, you must either [TODO-DTLS:
+ *                  unimplemented yet: provide a recv callback that doesn't
+ *                  block], or one that handles timeouts, see
+ *                  ssl_set_bio_timeout()
  */
 int ssl_set_transport( ssl_context *ssl, int transport );
 
@@ -1080,6 +1089,36 @@
         int (*f_recv)(void *, unsigned char *, size_t), void *p_recv,
         int (*f_send)(void *, const unsigned char *, size_t), void *p_send );
 
+/**
+ * \brief          Set the underlying BIO callbacks for write, read and
+ *                 read-with-timeout.
+ *
+ * \param ssl      SSL context
+ * \param p_bio    parameter (context) shared by BIO callbacks
+ * \param f_send   write callback
+ * \param f_recv   read callback
+ * \param f_recv_timeout read callback with timeout.
+ *                 The last argument of the callback is the timeout in seconds
+ * \param timeout  Value of the recv timeout in seconds. (For DTLS, also the
+ *                 initial value of the handshake retransmission timeout.)
+ *
+ * \note           f_recv_timeout is required for DTLS, [TODO-TLS:
+ *                 unimplmented yet: unless f_recv performs non-blocking
+ *                 reads].
+ *
+ * \note           f_recv_timeout must actually block until it receives
+ *                 something or times out (or is interrupted by a signal)
+ *
+ * \note           TODO: with TLS, f_recv_timeout and timeout are ignored for
+ *                 now.
+ */
+void ssl_set_bio_timeout( ssl_context *ssl,
+        void *p_bio,
+        int (*f_send)(void *, const unsigned char *, size_t),
+        int (*f_recv)(void *, unsigned char *, size_t),
+        int (*f_recv_timeout)(void *, unsigned char *, size_t, unsigned char),
+        unsigned char timeout );
+
 #if defined(POLARSSL_SSL_DTLS_HELLO_VERIFY)
 /**
  * \brief          Set client's transport-level identification info.
