]> git.sesse.net Git - rdpsrv/blobdiff - mcs.c
Various changes to try to work better with MS RDC (no big luck)
[rdpsrv] / mcs.c
diff --git a/mcs.c b/mcs.c
index aa8e90357d71fd4616d7300154c2fb339398fc54..4a8fc3fd87379284b5ff4add82e2b62f9cd42745 100644 (file)
--- a/mcs.c
+++ b/mcs.c
@@ -155,8 +155,9 @@ void
 mcs_send_connect_response()
 {
        STREAM s;
+       int i;
 
-       s = iso_init(80);  // FIXME
+       s = iso_init(92);
 
        ber_out_header(s, MCS_CONNECT_RESPONSE, 80);
        ber_out_header(s, BER_TAG_RESULT, 1);
@@ -167,17 +168,21 @@ mcs_send_connect_response()
        
        mcs_out_domain_params(s, 34, 2, 0, 0xffff);  // dumdidum?
 
-       ber_out_header(s, BER_TAG_OCTET_STRING, 28);
+       ber_out_header(s, BER_TAG_OCTET_STRING, 40);
 
        out_uint8s(s, 21);   // ick
        out_uint8(s, 0);
 
-       // server info -- we claim to support RDP5
+       // server info -- we claim to support RDP1
        out_uint16_le(s, SEC_TAG_SRV_INFO);
        out_uint16_le(s, 6);  // length
-       out_uint16_le(s, 5);
+       out_uint16_le(s, 1);
 
-       // aiee, no crypto info yet! :-)
+       // crypto info
+       out_uint16_le(s, SEC_TAG_SRV_CRYPT);
+       out_uint16_le(s, 12); // length
+       out_uint32_le(s, 1); // 40-bit
+       out_uint32_le(s, 0); // no encryption
        
        s_mark_end(s);
        printf("LEN: %u\n", s->p - s->iso_hdr);
@@ -288,7 +293,7 @@ mcs_send_to_channel(STREAM s, uint16 channel)
        length = s->end - s->p - 8;
        length |= 0x8000;
 
-       out_uint8(s, (MCS_SDRQ << 2));
+       out_uint8(s, (MCS_SDIN << 2));
        out_uint16_be(s, g_mcs_userid);
        out_uint16_be(s, channel);
        out_uint8(s, 0x70);     /* flags */
@@ -319,7 +324,7 @@ mcs_recv(uint16 * channel)
        appid = opcode >> 2;
 
        switch (appid) {
-       case MCS_SDIN:
+       case MCS_SDRQ:
                in_uint8s(s, 2);        /* userid */
                in_uint16_be(s, *channel);
                in_uint8s(s, 1);        /* flags */