settings->Username = _strdup(clientSettings->Username);
settings->Password = _strdup(clientSettings->Password);
settings->Domain = _strdup(clientSettings->Domain);
- settings->ServerHostname = host;
- settings->ServerPort = port;
settings->SoftwareGdi = FALSE;
settings->RedirectClipboard = FALSE;
+ /* Client Monitor Data */
+ settings->MonitorCount = clientSettings->MonitorCount;
+ settings->SpanMonitors = clientSettings->SpanMonitors;
+ settings->UseMultimon = clientSettings->UseMultimon;
+ settings->ForceMultimon = clientSettings->ForceMultimon;
+ settings->DesktopPosX = clientSettings->DesktopPosX;
+ settings->DesktopPosY = clientSettings->DesktopPosY;
+ settings->ListMonitors = clientSettings->ListMonitors;
+ settings->NumMonitorIds = clientSettings->NumMonitorIds;
+ settings->MonitorLocalShiftX = clientSettings->MonitorLocalShiftX;
+ settings->MonitorLocalShiftY = clientSettings->MonitorLocalShiftY;
+ settings->HasMonitorAttributes = clientSettings->HasMonitorAttributes;
+ settings->MonitorCount = clientSettings->MonitorCount;
+ settings->MonitorDefArraySize = clientSettings->MonitorDefArraySize;
+
+ if (clientSettings->MonitorDefArraySize > 0)
+ {
+ settings->MonitorDefArray = (rdpMonitor*) calloc(clientSettings->MonitorDefArraySize,
+ sizeof(rdpMonitor));
+
+ if (!settings->MonitorDefArray)
+ {
+ goto error;
+ }
+
+ CopyMemory(settings->MonitorDefArray, clientSettings->MonitorDefArray,
+ sizeof(rdpMonitor) * clientSettings->MonitorDefArraySize);
+ }
+ else
+ settings->MonitorDefArray = NULL;
+
+ settings->MonitorIds = (UINT32*) calloc(16, sizeof(UINT32));
+
+ if (!settings->MonitorIds)
+ goto error;
+
+ CopyMemory(settings->MonitorIds, clientSettings->MonitorIds, 16 * sizeof(UINT32));
return context;
+error:
+ freerdp_client_context_free(context);
+ return NULL;
}
+
+ static void connection_info_free(connectionInfo* info)
+ {
+ free(info->TargetHostname);
+ free(info->ClientHostname);
+ free(info->Username);
+ free(info);
+ }
+
+ proxyData* proxy_data_new()
+ {
+ proxyData* pdata = calloc(1, sizeof(proxyData));
+
+ if (pdata == NULL)
+ {
+ return NULL;
+ }
+
+ pdata->info = calloc(1, sizeof(connectionInfo));
+
+ if (pdata->info == NULL)
+ {
+ free(pdata);
+ return NULL;
+ }
+
+ if (!(pdata->connectionClosed = CreateEvent(NULL, TRUE, FALSE, NULL)))
+ {
+ proxy_data_free(pdata);
+ return NULL;
+ }
+
+ return pdata;
+ }
+
+ BOOL proxy_data_set_connection_info(proxyData* pdata, rdpSettings* clientSettings,
+ const char* target)
+ {
+ if (!(pdata->info->TargetHostname = _strdup(target)))
+ goto out_fail;
+
+ if (!(pdata->info->ClientHostname = _strdup(clientSettings->ClientHostname)))
+ goto out_fail;
+
+ if (!(pdata->info->Username = _strdup(clientSettings->Username)))
+ goto out_fail;
+
+ return TRUE;
+ out_fail:
+ proxy_data_free(pdata);
+ return FALSE;
+ }
+
+ void proxy_data_free(proxyData* pdata)
+ {
+ connection_info_free(pdata->info);
+ free(pdata);
+ }