diff --git a/include/smb2/libsmb2.h b/include/smb2/libsmb2.h
index 3cdf3fd..e2bf7e9 100644
--- a/include/smb2/libsmb2.h
+++ b/include/smb2/libsmb2.h
@@ -38,6 +38,10 @@ struct smb2_context;
 typedef void (*smb2_command_cb)(struct smb2_context *smb2, int status,
                                 void *command_data, void *cb_data);
 
+void smb2_connect_timeout(struct smb2_context *smb2, int err, const char *desc);
+
+int smb2_get_timeout(struct smb2_context *smb2);
+
 /* Stat structure */
 #define SMB2_TYPE_FILE      0x00000000
 #define SMB2_TYPE_DIRECTORY 0x00000001
diff --git a/lib/socket.c b/lib/socket.c
index 123fb5d..9233355 100644
--- a/lib/socket.c
+++ b/lib/socket.c
@@ -101,6 +101,19 @@
 static int
 smb2_connect_async_next_addr(struct smb2_context *smb2, const struct addrinfo *base);
 
+void
+smb2_connect_timeout(struct smb2_context *smb2, int err, const char *desc)
+{
+        smb2_set_error(smb2, desc);
+        smb2->connect_cb(smb2, err, NULL, smb2->connect_data);
+}
+
+int
+smb2_get_timeout(struct smb2_context *smb2)
+{
+        return smb2->timeout;
+}
+
 void
 smb2_close_connecting_fds(struct smb2_context *smb2)
 {
