summaryrefslogtreecommitdiffstats
path: root/xrdp/xrdp_mcs.c
diff options
context:
space:
mode:
authorjsorg71 <jsorg71>2005-01-14 03:59:36 +0000
committerjsorg71 <jsorg71>2005-01-14 03:59:36 +0000
commit520301d70aafd53287b0f4d153a2b27dc025ea76 (patch)
treeb3bdd74bba8fa0989b703272581fd2c466c6b4cf /xrdp/xrdp_mcs.c
parent1d03bafb9e8ff4cef59b041235a986d6e4ae2fce (diff)
downloadxrdp-proprietary-520301d70aafd53287b0f4d153a2b27dc025ea76.tar.gz
xrdp-proprietary-520301d70aafd53287b0f4d153a2b27dc025ea76.zip
set bitmap cache and bitmap compression from the config file
Diffstat (limited to 'xrdp/xrdp_mcs.c')
-rw-r--r--xrdp/xrdp_mcs.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/xrdp/xrdp_mcs.c b/xrdp/xrdp_mcs.c
index cbe5d6e1..035e5497 100644
--- a/xrdp/xrdp_mcs.c
+++ b/xrdp/xrdp_mcs.c
@@ -41,7 +41,9 @@ struct xrdp_mcs* xrdp_mcs_create(struct xrdp_sec* owner)
void xrdp_mcs_delete(struct xrdp_mcs* self)
{
if (self == 0)
+ {
return;
+ }
xrdp_iso_delete(self->iso_layer);
g_free(self);
}
@@ -86,11 +88,15 @@ int xrdp_mcs_recv(struct xrdp_mcs* self, struct stream* s, int* chan)
while (1)
{
if (xrdp_iso_recv(self->iso_layer, s) != 0)
+ {
return 1;
+ }
in_uint8(s, opcode);
appid = opcode >> 2;
if (appid == MCS_DPUM)
+ {
return 1;
+ }
if (appid == MCS_CJRQ)
{
xrdp_mcs_send_cjcf(self, self->userid + MCS_USERCHANNEL_BASE);
@@ -108,7 +114,9 @@ int xrdp_mcs_recv(struct xrdp_mcs* self, struct stream* s, int* chan)
in_uint8s(s, 1);
in_uint8(s, len);
if (len & 0x80)
+ {
in_uint8s(s, 1);
+ }
DEBUG((" out xrdp_mcs_recv\n\r"));
return 0;
}
@@ -145,11 +153,17 @@ int xrdp_mcs_ber_parse_header(struct xrdp_mcs* self, struct stream* s,
}
}
else
+ {
*len = l;
+ }
if (s_check(s))
+ {
return 0;
+ }
else
+ {
return 1;
+ }
}
/*****************************************************************************/
@@ -159,12 +173,18 @@ int xrdp_mcs_parse_domain_params(struct xrdp_mcs* self, struct stream* s)
int len;
if (xrdp_mcs_ber_parse_header(self, s, MCS_TAG_DOMAIN_PARAMS, &len) != 0)
+ {
return 1;
+ }
in_uint8s(s, len);
if (s_check(s))
+ {
return 0;
+ }
else
+ {
return 1;
+ }
}
/*****************************************************************************/
@@ -479,25 +499,45 @@ int xrdp_mcs_incoming(struct xrdp_mcs* self)
{
DEBUG((" in xrdp_mcs_incoming\n\r"));
if (xrdp_iso_incoming(self->iso_layer) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_recv_connect_initial(self) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_send_connect_response(self) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_recv_edrq(self) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_recv_aurq(self) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_send_aucf(self) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_recv_cjrq(self) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_send_cjcf(self, self->userid + MCS_USERCHANNEL_BASE) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_recv_cjrq(self) != 0)
+ {
return 1;
+ }
if (xrdp_mcs_send_cjcf(self, MCS_GLOBAL_CHANNEL) != 0)
+ {
return 1;
+ }
DEBUG((" out xrdp_mcs_incoming\n\r"));
return 0;
}
@@ -527,7 +567,9 @@ int xrdp_mcs_send(struct xrdp_mcs* self, struct stream* s)
out_uint8(s, 0x70);
out_uint16_be(s, len);
if (xrdp_iso_send(self->iso_layer, s) != 0)
+ {
return 1;
+ }
DEBUG((" out xrdp_mcs_send\n\r"));
return 0;
}