diff options
author | Giovanni Panozzo <giovanni@panozzo.it> | 2016-02-07 19:47:14 +0300 |
---|---|---|
committer | Giovanni Panozzo <giovanni@panozzo.it> | 2016-02-14 15:50:44 +0300 |
commit | 009d0d8a0c231fa72595811a3772d2a98b3a68ac (patch) | |
tree | 6ecb6bba873eaaf29be680f957c5eed74acfea4a | |
parent | e5ce6ac29a8bf7445a730127bafde65092707046 (diff) |
RDP reconnection timing fix
-rw-r--r-- | remmina-plugins/rdp/rdp_plugin.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c index 39919e965..e7be8edd2 100644 --- a/remmina-plugins/rdp/rdp_plugin.c +++ b/remmina-plugins/rdp/rdp_plugin.c @@ -44,6 +44,7 @@ #include <errno.h> #include <pthread.h> +#include <time.h> #include <cairo/cairo-xlib.h> #include <freerdp/freerdp.h> #include <freerdp/constants.h> @@ -165,6 +166,7 @@ BOOL rf_auto_reconnect(rfContext* rfi) TRACE_CALL("rf_auto_reconnect"); rdpSettings* settings = rfi->instance->settings; RemminaPluginRdpUiObject* ui; + time_t treconn; rfi->is_reconnecting = TRUE; rfi->reconnect_maxattempts = settings->AutoReconnectMaxRetries; @@ -212,6 +214,7 @@ BOOL rf_auto_reconnect(rfContext* rfi) ui->type = REMMINA_RDP_UI_RECONNECT_PROGRESS; rf_queue_ui(rfi->protocol_widget, ui); + treconn = time(NULL); if (freerdp_reconnect(rfi->instance)) { /* Reconnection is successful */ @@ -221,7 +224,9 @@ BOOL rf_auto_reconnect(rfContext* rfi) return TRUE; } - sleep(1); + /* Wait until 5 secs have elapsed from last reconnect attempt */ + while (time(NULL) - treconn < 5) + sleep(1); } remmina_plugin_service->log_printf("[RDP][%s] maximum number of reconnection attempts exceeded.\n", |