--- sourceforge.net/trunk/rdesktop/secure.c 2003/12/10 08:02:59 557 +++ sourceforge.net/trunk/rdesktop/secure.c 2004/04/26 13:48:39 677 @@ -412,7 +412,8 @@ if (hostlen > 30) hostlen = 30; - out_uint16_be(s, 5); /* unknown */ + /* Generic Conference Control (T.124) ConferenceCreateRequest */ + out_uint16_be(s, 5); out_uint16_be(s, 0x14); out_uint8(s, 0x7c); out_uint16_be(s, 1); @@ -425,7 +426,7 @@ out_uint16_le(s, 0xc001); out_uint8(s, 0); - out_uint32_le(s, 0x61637544); /* "Duca" ?! */ + out_uint32_le(s, 0x61637544); /* OEM ID: "Duca", as in Ducati. */ out_uint16_be(s, ((length - 14) | 0x8000)); /* remaining length */ /* Client information */ @@ -448,22 +449,7 @@ out_uint32(s, 0); out_uint32_le(s, 12); out_uint8s(s, 64); /* reserved? 4 + 12 doublewords */ - - switch (g_server_bpp) - { - case 8: - out_uint16_le(s, 0xca01); - break; - case 15: - out_uint16_le(s, 0xca02); - break; - case 16: - out_uint16_le(s, 0xca03); - break; - case 24: - out_uint16_le(s, 0xca04); - break; - } + out_uint16_le(s, 0xca01); /* colour depth? */ out_uint16_le(s, 1); out_uint32(s, 0); @@ -628,16 +614,16 @@ uint32 certcount; DEBUG_RDP5(("We're going for the RDP5-style encryption\n")); - in_uint32_le(s, certcount); /* Number of certificates */ + in_uint32_le(s, certcount); /* Number of certificates */ - if(certcount < 2) + if (certcount < 2) { error("Server didn't send enough X509 certificates\n"); return False; } - for(; certcount > 2; certcount--) - { /* ignore all the certificates between the root and the signing CA */ + for (; certcount > 2; certcount--) + { /* ignore all the certificates between the root and the signing CA */ uint32 ignorelen; X509 *ignorecert; @@ -647,13 +633,13 @@ DEBUG_RDP5(("Ignored Certificate length is %d\n", ignorelen)); ignorecert = d2i_X509(NULL, &(s->p), ignorelen); - if(ignorecert == NULL) - { /* XXX: error out? */ + if (ignorecert == NULL) + { /* XXX: error out? */ DEBUG_RDP5(("got a bad cert: this will probably screw up the rest of the communication\n")); } #ifdef WITH_DEBUG_RDP5 - DEBUG_RDP5(("cert #%d (ignored):\n",certcount)); + DEBUG_RDP5(("cert #%d (ignored):\n", certcount)); X509_print_fp(stdout, ignorecert); #endif } @@ -770,7 +756,10 @@ in_uint16_le(s, g_server_rdp_version); DEBUG_RDP5(("Server RDP version is %d\n", g_server_rdp_version)); if (1 == g_server_rdp_version) + { g_use_rdp5 = 0; + g_server_bpp = 8; + } } @@ -782,7 +771,7 @@ uint8 *next_tag; uint8 len; - in_uint8s(s, 21); /* header (T.124 stuff, probably) */ + in_uint8s(s, 21); /* header (T.124 ConferenceCreateResponse) */ in_uint8(s, len); if (len & 0x80) in_uint8(s, len);