server: proxy: refactor usage of pf_context_copy_settings
This commit is contained in:
parent
7ed39ce724
commit
f5d32f4617
@ -57,14 +57,18 @@
|
|||||||
* Re-negotiate with original client after negotiation between the proxy
|
* Re-negotiate with original client after negotiation between the proxy
|
||||||
* and the target has finished.
|
* and the target has finished.
|
||||||
*/
|
*/
|
||||||
static void proxy_server_reactivate(rdpContext* ps, const rdpContext* target)
|
static BOOL proxy_server_reactivate(rdpContext* ps, const rdpContext* pc)
|
||||||
{
|
{
|
||||||
pf_context_copy_settings(ps->settings, target->settings, TRUE);
|
if (!pf_context_copy_settings(ps->settings, pc->settings))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* DesktopResize causes internal function rdp_server_reactivate to be called,
|
/* DesktopResize causes internal function rdp_server_reactivate to be called,
|
||||||
* which causes the reactivation.
|
* which causes the reactivation.
|
||||||
*/
|
*/
|
||||||
ps->update->DesktopResize(ps);
|
if (!ps->update->DesktopResize(ps))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pf_OnErrorInfo(void* ctx, ErrorInfoEventArgs* e)
|
static void pf_OnErrorInfo(void* ctx, ErrorInfoEventArgs* e)
|
||||||
@ -220,8 +224,7 @@ static BOOL pf_client_post_connect(freerdp* instance)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pf_client_register_update_callbacks(update);
|
pf_client_register_update_callbacks(update);
|
||||||
proxy_server_reactivate(ps, context);
|
return proxy_server_reactivate(ps, context);
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ BOOL init_p_server_context(freerdp_peer* client)
|
|||||||
* when using this function, is_dst_server must be set to TRUE if the destination
|
* when using this function, is_dst_server must be set to TRUE if the destination
|
||||||
* settings are server's settings. otherwise, they must be set to FALSE.
|
* settings are server's settings. otherwise, they must be set to FALSE.
|
||||||
*/
|
*/
|
||||||
BOOL pf_context_copy_settings(rdpSettings* dst, const rdpSettings* src, BOOL is_dst_server)
|
BOOL pf_context_copy_settings(rdpSettings* dst, const rdpSettings* src)
|
||||||
{
|
{
|
||||||
rdpSettings* before_copy = freerdp_settings_clone(dst);
|
rdpSettings* before_copy = freerdp_settings_clone(dst);
|
||||||
if (!before_copy)
|
if (!before_copy)
|
||||||
@ -97,7 +97,7 @@ BOOL pf_context_copy_settings(rdpSettings* dst, const rdpSettings* src, BOOL is_
|
|||||||
free(dst->CertificateContent);
|
free(dst->CertificateContent);
|
||||||
|
|
||||||
/* adjust pointer to instance pointer */
|
/* adjust pointer to instance pointer */
|
||||||
dst->ServerMode = is_dst_server;
|
dst->ServerMode = before_copy->ServerMode;
|
||||||
|
|
||||||
/* revert some values that must not be changed */
|
/* revert some values that must not be changed */
|
||||||
dst->ConfigPath = _strdup(before_copy->ConfigPath);
|
dst->ConfigPath = _strdup(before_copy->ConfigPath);
|
||||||
@ -109,12 +109,7 @@ BOOL pf_context_copy_settings(rdpSettings* dst, const rdpSettings* src, BOOL is_
|
|||||||
dst->CertificateName = _strdup(before_copy->CertificateName);
|
dst->CertificateName = _strdup(before_copy->CertificateName);
|
||||||
dst->CertificateContent = _strdup(before_copy->CertificateContent);
|
dst->CertificateContent = _strdup(before_copy->CertificateContent);
|
||||||
|
|
||||||
if (is_dst_server)
|
if (!dst->ServerMode)
|
||||||
{
|
|
||||||
free(dst->ServerCertificate);
|
|
||||||
dst->ServerCertificateLength = before_copy->ServerCertificateLength;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/* adjust instance pointer for client's context */
|
/* adjust instance pointer for client's context */
|
||||||
dst->instance = before_copy->instance;
|
dst->instance = before_copy->instance;
|
||||||
@ -137,9 +132,7 @@ rdpContext* p_client_context_create(rdpSettings* clientSettings)
|
|||||||
if (!context)
|
if (!context)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
pf_context_copy_settings(context->settings, clientSettings, FALSE);
|
if (!pf_context_copy_settings(context->settings, clientSettings))
|
||||||
|
|
||||||
if (!context->settings)
|
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
return context;
|
return context;
|
||||||
|
@ -107,9 +107,9 @@ rdpContext* p_client_context_create(rdpSettings* clientSettings);
|
|||||||
proxyData* proxy_data_new(void);
|
proxyData* proxy_data_new(void);
|
||||||
void proxy_data_free(proxyData* pdata);
|
void proxy_data_free(proxyData* pdata);
|
||||||
|
|
||||||
BOOL pf_context_copy_settings(rdpSettings* dst, const rdpSettings* src, BOOL is_dst_server);
|
BOOL pf_context_copy_settings(rdpSettings* dst, const rdpSettings* src);
|
||||||
void proxy_data_abort_connect(proxyData* pdata);
|
|
||||||
BOOL proxy_data_shall_disconnect(proxyData* pdata);
|
BOOL proxy_data_shall_disconnect(proxyData* pdata);
|
||||||
|
void proxy_data_abort_connect(proxyData* pdata);
|
||||||
|
|
||||||
/* server */
|
/* server */
|
||||||
BOOL init_p_server_context(freerdp_peer* client);
|
BOOL init_p_server_context(freerdp_peer* client);
|
||||||
|
Loading…
Reference in New Issue
Block a user