int max_fds;
int rcount;
int wcount;
+ int ret = 0;
void* rfds[32];
void* wfds[32];
fd_set rfds_set;
fd_set wfds_set;
+ int select_status;
rdpChannels* channels;
- int ret = 0;
+ struct timeval timeout;
memset(rfds, 0, sizeof(rfds));
memset(wfds, 0, sizeof(wfds));
+ memset(&timeout, 0, sizeof(struct timeval));
if (!freerdp_connect(instance))
return XF_EXIT_CONN_FAILED;
if (max_fds == 0)
break;
- if (select(max_fds + 1, &rfds_set, &wfds_set, NULL, NULL) == -1)
+ timeout.tv_sec = 5;
+ select_status = select(max_fds + 1, &rfds_set, &wfds_set, NULL, &timeout);
+
+ if (select_status == 0)
+ {
+ //freerdp_send_keep_alive(instance);
+ continue;
+ }
+ else if (select_status == -1)
{
/* these are not really errors */
if (!((errno == EAGAIN) ||
FREERDP_API boolean freerdp_get_fds(freerdp* instance, void** rfds, int* rcount, void** wfds, int* wcount);
FREERDP_API boolean freerdp_check_fds(freerdp* instance);
+FREERDP_API void freerdp_send_keep_alive(freerdp* instance);
FREERDP_API uint32 freerdp_error_info(freerdp* instance);
FREERDP_API freerdp* freerdp_new();
return true;
}
+void freerdp_send_keep_alive(freerdp* instance)
+{
+ input_send_synchronize_event(instance->context->rdp->input, 0);
+}
+
static int freerdp_send_channel_data(freerdp* instance, int channel_id, uint8* data, int size)
{
return rdp_send_channel_data(instance->context->rdp, channel_id, data, size);
return -1;
}
}
- else if (strcmp("--nsc", argv[index]) == 0)
+ else if (strcmp("--nsc", argv[index]) == 0)
{
settings->ns_codec = true;
}