diff --git a/lang/en b/lang/en
index 92c91da97..6293a4ed6 100644
--- a/lang/en
+++ b/lang/en
@@ -475,6 +475,14 @@ time_in_mins=In $1 minutes
time_in_sec=In $1 second
time_in_secs=In $1 seconds
time_now=Just now
+time_second=second
+time_seconds=seconds
+time_minute=minute
+time_minutes=minutes
+time_hour=hour
+time_hours=hours
+time_day=day
+time_days=days
defcert_error=Default $1 bundled SSL certificate is being used. It is highly advised to update default $2 certificate before proceeding with login.
diff --git a/webmin/change_session.cgi b/webmin/change_session.cgi
index b29feca02..8a1164d21 100755
--- a/webmin/change_session.cgi
+++ b/webmin/change_session.cgi
@@ -180,6 +180,12 @@ $in{'passreset_timeout'} =~ /^\d+$/ && $in{'passreset_timeout'} > 0 ||
&error($text{'session_epassreset_timeout'});
$gconfig{'passreset_timeout'} = $in{'passreset_timeout'};
+# RPC timeout
+my $rpc_timeout = $in{'rpc_timeout'};
+$rpc_timeout =~ /^\d+$/ && $rpc_timeout > 0 ||
+ &error($text{'session_erpc_timeout'});
+$gconfig{'rpc_timeout'} = $rpc_timeout;
+
&write_file("$config_directory/config", \%gconfig);
&unlock_file("$config_directory/config");
diff --git a/webmin/edit_session.cgi b/webmin/edit_session.cgi
index 3a54c2490..54847d39e 100755
--- a/webmin/edit_session.cgi
+++ b/webmin/edit_session.cgi
@@ -174,6 +174,11 @@ print &ui_table_row($text{'session_md5'},
[ 2, $text{'session_sha512'}."
" ],
[ 3, $text{'session_yescrypt'} ] ]));
+# RPC timeout
+print &ui_table_row(&hlink($text{'session_rpc_timeout'}, 'rpc_timeout'),
+ &ui_textbox("rpc_timeout", $gconfig{'rpc_timeout'} || 60, 3).
+ " ".$text{'time_seconds'});
+
print ui_table_end();
print ui_form_end([ [ "save", $text{'save'} ] ]);
diff --git a/webmin/help/rpc_timeout.html b/webmin/help/rpc_timeout.html
new file mode 100644
index 000000000..66e5d89c2
--- /dev/null
+++ b/webmin/help/rpc_timeout.html
@@ -0,0 +1,6 @@
+
+
+Sets how many seconds Webmin keeps an RPC session open while it is waiting with
+no activity.
+
+