diff --git a/cs/src/Contracts/TunnelOptions.cs b/cs/src/Contracts/TunnelOptions.cs
index c21931a7..b6690cc1 100644
--- a/cs/src/Contracts/TunnelOptions.cs
+++ b/cs/src/Contracts/TunnelOptions.cs
@@ -94,5 +94,18 @@ public class TunnelOptions
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
public bool? IsPartitionedSiteAuthenticationEnabled { get; set; }
+
+ ///
+ /// Gets or sets the timeout for HTTP requests to the tunnel or port.
+ ///
+ ///
+ /// The default timeout is 100 seconds. Set this to 0 to disable the timeout. The timeout
+ /// will reset when response headers are received or after successfully reading or writing
+ /// any request, response, or streaming data like gRPC or WebSockets. TCP keep-alives and
+ /// HTTP/2 protocol pings will not reset the timeout, but WebSocket pings will. When a
+ /// request times out, the tunnel relay aborts the request and returns 504 Gateway Timeout.
+ ///
+ [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
+ public int? RequestTimeoutSeconds { get; set; }
}
}
diff --git a/go/tunnels/tunnel_options.go b/go/tunnels/tunnel_options.go
index 5dbf80b0..fcddc61b 100644
--- a/go/tunnels/tunnel_options.go
+++ b/go/tunnels/tunnel_options.go
@@ -58,4 +58,14 @@ type TunnelOptions struct {
// A partitioned cookie always also has SameSite=None for compatbility with browsers that
// do not support partitioning.
IsPartitionedSiteAuthenticationEnabled bool `json:"isPartitionedSiteAuthenticationEnabled,omitempty"`
+
+ // Gets or sets the timeout for HTTP requests to the tunnel or port.
+ //
+ // The default timeout is 100 seconds. Set this to 0 to disable the timeout. The timeout
+ // will reset when response headers are received or after successfully reading or writing
+ // any request, response, or streaming data like gRPC or WebSockets. TCP keep-alives and
+ // HTTP/2 protocol pings will not reset the timeout, but WebSocket pings will. When a
+ // request times out, the tunnel relay aborts the request and returns 504 Gateway
+ // Timeout.
+ RequestTimeoutSeconds int32 `json:"requestTimeoutSeconds,omitempty"`
}
diff --git a/go/tunnels/tunnels.go b/go/tunnels/tunnels.go
index 6c1d2a2d..953e288e 100644
--- a/go/tunnels/tunnels.go
+++ b/go/tunnels/tunnels.go
@@ -10,7 +10,7 @@ import (
"github.com/rodaine/table"
)
-const PackageVersion = "0.1.17"
+const PackageVersion = "0.1.18"
func (tunnel *Tunnel) requestObject() (*Tunnel, error) {
convertedTunnel := &Tunnel{
diff --git a/java/src/main/java/com/microsoft/tunnels/contracts/TunnelOptions.java b/java/src/main/java/com/microsoft/tunnels/contracts/TunnelOptions.java
index 9062111a..e43b486d 100644
--- a/java/src/main/java/com/microsoft/tunnels/contracts/TunnelOptions.java
+++ b/java/src/main/java/com/microsoft/tunnels/contracts/TunnelOptions.java
@@ -87,4 +87,17 @@ public class TunnelOptions {
*/
@Expose
public boolean isPartitionedSiteAuthenticationEnabled;
+
+ /**
+ * Gets or sets the timeout for HTTP requests to the tunnel or port.
+ *
+ * The default timeout is 100 seconds. Set this to 0 to disable the timeout. The
+ * timeout will reset when response headers are received or after successfully reading
+ * or writing any request, response, or streaming data like gRPC or WebSockets. TCP
+ * keep-alives and HTTP/2 protocol pings will not reset the timeout, but WebSocket
+ * pings will. When a request times out, the tunnel relay aborts the request and
+ * returns 504 Gateway Timeout.
+ */
+ @Expose
+ public int requestTimeoutSeconds;
}
diff --git a/rs/src/contracts/tunnel_options.rs b/rs/src/contracts/tunnel_options.rs
index 9b2d36ca..ed62c933 100644
--- a/rs/src/contracts/tunnel_options.rs
+++ b/rs/src/contracts/tunnel_options.rs
@@ -69,4 +69,15 @@ pub struct TunnelOptions {
// that do not support partitioning.
#[serde(default)]
pub is_partitioned_site_authentication_enabled: Option,
+
+ // Gets or sets the timeout for HTTP requests to the tunnel or port.
+ //
+ // The default timeout is 100 seconds. Set this to 0 to disable the timeout. The
+ // timeout will reset when response headers are received or after successfully reading
+ // or writing any request, response, or streaming data like gRPC or WebSockets. TCP
+ // keep-alives and HTTP/2 protocol pings will not reset the timeout, but WebSocket
+ // pings will. When a request times out, the tunnel relay aborts the request and
+ // returns 504 Gateway Timeout.
+ #[serde(default)]
+ pub request_timeout_seconds: Option,
}
diff --git a/ts/src/connections/package.json b/ts/src/connections/package.json
index 6fe45eb5..89b40383 100644
--- a/ts/src/connections/package.json
+++ b/ts/src/connections/package.json
@@ -18,8 +18,8 @@
"buffer": "^5.2.1",
"debug": "^4.1.1",
"vscode-jsonrpc": "^4.0.0",
- "@microsoft/dev-tunnels-contracts": "^1.3.0",
- "@microsoft/dev-tunnels-management": "^1.3.0",
+ "@microsoft/dev-tunnels-contracts": "^1.3.6",
+ "@microsoft/dev-tunnels-management": "^1.3.6",
"@microsoft/dev-tunnels-ssh": "^3.12.12",
"@microsoft/dev-tunnels-ssh-tcp": "^3.12.12",
"uuid": "^3.3.3",
diff --git a/ts/src/contracts/tunnelOptions.ts b/ts/src/contracts/tunnelOptions.ts
index 14aea734..70c71ddb 100644
--- a/ts/src/contracts/tunnelOptions.ts
+++ b/ts/src/contracts/tunnelOptions.ts
@@ -76,4 +76,16 @@ export interface TunnelOptions {
* that do not support partitioning.
*/
isPartitionedSiteAuthenticationEnabled?: boolean;
+
+ /**
+ * Gets or sets the timeout for HTTP requests to the tunnel or port.
+ *
+ * The default timeout is 100 seconds. Set this to 0 to disable the timeout. The
+ * timeout will reset when response headers are received or after successfully reading
+ * or writing any request, response, or streaming data like gRPC or WebSockets. TCP
+ * keep-alives and HTTP/2 protocol pings will not reset the timeout, but WebSocket
+ * pings will. When a request times out, the tunnel relay aborts the request and
+ * returns 504 Gateway Timeout.
+ */
+ requestTimeoutSeconds?: number;
}
diff --git a/ts/src/management/package.json b/ts/src/management/package.json
index fad6a4cb..2bc2a21b 100644
--- a/ts/src/management/package.json
+++ b/ts/src/management/package.json
@@ -18,7 +18,7 @@
"buffer": "^5.2.1",
"debug": "^4.1.1",
"vscode-jsonrpc": "^4.0.0",
- "@microsoft/dev-tunnels-contracts": "^1.3.0",
+ "@microsoft/dev-tunnels-contracts": "^1.3.6",
"axios": "^1.8.4"
}
}