diff options
| author | Laxmikant Rashinkar <LK.Rashinkar@gmail.com> | 2014-07-26 13:33:44 -0700 |
|---|---|---|
| committer | Laxmikant Rashinkar <LK.Rashinkar@gmail.com> | 2014-07-26 13:33:44 -0700 |
| commit | 56e43c4a3899f9efd4c02f8a2abc0407691b20b5 (patch) | |
| tree | 02f28e8bb0b93e4a1916bb39eba27893aedde777 /libxrdp/xrdp_rdp.c | |
| parent | 27055d5762d23ae3996e7e41ef45ef6454fa2d65 (diff) | |
| parent | 0f9bd232d91a431f68853a308b768e782ab37ff1 (diff) | |
| download | xrdp-proprietary-56e43c4a3899f9efd4c02f8a2abc0407691b20b5.tar.gz xrdp-proprietary-56e43c4a3899f9efd4c02f8a2abc0407691b20b5.zip | |
Merge branch 'devel' of github.com:NeutrinoLabs/xrdp into devel
Diffstat (limited to 'libxrdp/xrdp_rdp.c')
| -rw-r--r-- | libxrdp/xrdp_rdp.c | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/libxrdp/xrdp_rdp.c b/libxrdp/xrdp_rdp.c index c99074fd..b4ef19a8 100644 --- a/libxrdp/xrdp_rdp.c +++ b/libxrdp/xrdp_rdp.c @@ -177,6 +177,38 @@ xrdp_rdp_read_config(struct xrdp_client_info *client_info) client_info->security_layer = PROTOCOL_SSL | PROTOCOL_HYBRID | PROTOCOL_HYBRID_EX; } } + else if (g_strcasecmp(item, "certificate") == 0) + { + g_memset(client_info->certificate, 0, sizeof(char) * 1024); + if (value[0] != '/') + { + /* default certificate path */ + g_snprintf(client_info->certificate, 1023, "%s/cert.pem", XRDP_CFG_PATH); + log_message(LOG_LEVEL_ALWAYS,"WARNING: Invalid x.509 certificate path defined, " + "default path will be used: %s", client_info->certificate); + } + else + { + /* use user defined certificate */ + g_strncpy(client_info->certificate, value, 1023); + } + } + else if (g_strcasecmp(item, "key_file") == 0) + { + g_memset(client_info->key_file, 0, sizeof(char) * 1024); + if (value[0] != '/') + { + /* default key_file path */ + g_snprintf(client_info->key_file, 1023, "%s/key.pem", XRDP_CFG_PATH); + log_message(LOG_LEVEL_ALWAYS,"WARNING: Invalid x.509 certificate path defined, " + "default path will be used: %s", client_info->key_file); + } + else + { + /* use user defined key_file */ + g_strncpy(client_info->key_file, value, 1023); + } + } } @@ -253,10 +285,7 @@ xrdp_rdp_create(struct xrdp_session *session, struct trans *trans) /* read ini settings */ xrdp_rdp_read_config(&self->client_info); /* create sec layer */ - self->sec_layer = xrdp_sec_create(self, trans, - self->client_info.crypt_level, - self->client_info.channel_code, - self->client_info.multimon); + self->sec_layer = xrdp_sec_create(self, trans); /* default 8 bit v1 color bitmap cache entries and size */ self->client_info.cache1_entries = 600; self->client_info.cache1_size = 256; @@ -352,6 +381,15 @@ xrdp_rdp_recv(struct xrdp_rdp *self, struct stream *s, int *code) chan = 0; error = xrdp_sec_recv(self->sec_layer, s, &chan); + if (error == 3) + { + /* unencrypted confirm active msg arrived */ + s->next_packet = 0; + *code = 3; + DEBUG(("out (0) xrdp_rdp_recv")); + return 0; + } + if (error == -1) /* special code for send demand active */ { s->next_packet = 0; |
