/[rdesktop]/sourceforge.net/trunk/rdesktop/rdp.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/rdp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 437 by jsorg71, Mon Jul 28 21:41:12 2003 UTC revision 438 by jsorg71, Fri Aug 1 17:01:58 2003 UTC
# Line 25  extern char g_username[16]; Line 25  extern char g_username[16];
25  extern BOOL g_bitmap_compression;  extern BOOL g_bitmap_compression;
26  extern BOOL g_orders;  extern BOOL g_orders;
27  extern BOOL g_encryption;  extern BOOL g_encryption;
28  extern BOOL desktop_save;  extern BOOL g_desktop_save;
29  extern BOOL use_rdp5;  extern BOOL g_use_rdp5;
30  extern uint16 server_rdp_version;  extern uint16 g_server_rdp_version;
31  extern int server_bpp;  extern int g_server_bpp;
32    
33  uint8 *next_packet;  uint8 *g_next_packet;
34  uint32 rdp_shareid;  uint32 g_rdp_shareid;
35    
36  #if WITH_DEBUG  #if WITH_DEBUG
37  static uint32 packetno;  static uint32 g_packetno;
38  #endif  #endif
39    
40  /* Receive an RDP packet */  /* Receive an RDP packet */
# Line 44  rdp_recv(uint8 * type) Line 44  rdp_recv(uint8 * type)
44          static STREAM rdp_s;          static STREAM rdp_s;
45          uint16 length, pdu_type;          uint16 length, pdu_type;
46    
47          if ((rdp_s == NULL) || (next_packet >= rdp_s->end))          if ((rdp_s == NULL) || (g_next_packet >= rdp_s->end))
48          {          {
49                  rdp_s = sec_recv();                  rdp_s = sec_recv();
50                  if (rdp_s == NULL)                  if (rdp_s == NULL)
51                          return NULL;                          return NULL;
52    
53                  next_packet = rdp_s->p;                  g_next_packet = rdp_s->p;
54          }          }
55          else          else
56          {          {
57                  rdp_s->p = next_packet;                  rdp_s->p = g_next_packet;
58          }          }
59    
60          in_uint16_le(rdp_s, length);          in_uint16_le(rdp_s, length);
61          /* 32k packets are really 8, keepalive fix */          /* 32k packets are really 8, keepalive fix */
62          if (length == 0x8000)          if (length == 0x8000)
63          {          {
64                  next_packet += 8;                  g_next_packet += 8;
65                  *type = 0;                  *type = 0;
66                  return rdp_s;                  return rdp_s;
67          }          }
# Line 70  rdp_recv(uint8 * type) Line 70  rdp_recv(uint8 * type)
70          *type = pdu_type & 0xf;          *type = pdu_type & 0xf;
71    
72  #if WITH_DEBUG  #if WITH_DEBUG
73          DEBUG(("RDP packet #%d, (type %x)\n", ++packetno, *type));          DEBUG(("RDP packet #%d, (type %x)\n", ++g_packetno, *type));
74          //      hexdump(next_packet, length);          //      hexdump(g_next_packet, length);
75  #endif /*  */  #endif /*  */
76    
77          next_packet += length;          g_next_packet += length;
78          return rdp_s;          return rdp_s;
79  }  }
80    
# Line 103  rdp_send_data(STREAM s, uint8 data_pdu_t Line 103  rdp_send_data(STREAM s, uint8 data_pdu_t
103          out_uint16_le(s, (RDP_PDU_DATA | 0x10));          out_uint16_le(s, (RDP_PDU_DATA | 0x10));
104          out_uint16_le(s, (g_mcs_userid + 1001));          out_uint16_le(s, (g_mcs_userid + 1001));
105    
106          out_uint32_le(s, rdp_shareid);          out_uint32_le(s, g_rdp_shareid);
107          out_uint8(s, 0);        /* pad */          out_uint8(s, 0);        /* pad */
108          out_uint8(s, 1);        /* streamid */          out_uint8(s, 1);        /* streamid */
109          out_uint16_le(s, (length - 14));          out_uint16_le(s, (length - 14));
# Line 147  rdp_send_logon_info(uint32 flags, char * Line 147  rdp_send_logon_info(uint32 flags, char *
147          uint32 sec_flags = g_encryption ? (SEC_LOGON_INFO | SEC_ENCRYPT) : SEC_LOGON_INFO;          uint32 sec_flags = g_encryption ? (SEC_LOGON_INFO | SEC_ENCRYPT) : SEC_LOGON_INFO;
148          STREAM s;          STREAM s;
149    
150          if (!use_rdp5 || 1 == server_rdp_version)          if (!g_use_rdp5 || 1 == g_server_rdp_version)
151          {          {
152                  DEBUG_RDP5(("Sending RDP4-style Logon packet\n"));                  DEBUG_RDP5(("Sending RDP4-style Logon packet\n"));
153    
# Line 358  rdp_out_general_caps(STREAM s) Line 358  rdp_out_general_caps(STREAM s)
358          out_uint16_le(s, 0x200);        /* Protocol version */          out_uint16_le(s, 0x200);        /* Protocol version */
359          out_uint16(s, 0);       /* Pad */          out_uint16(s, 0);       /* Pad */
360          out_uint16(s, 0);       /* Compression types */          out_uint16(s, 0);       /* Compression types */
361          out_uint16_le(s, use_rdp5 ? 0x40d : 0);          out_uint16_le(s, g_use_rdp5 ? 0x40d : 0);
362          /* Pad, according to T.128. 0x40d seems to          /* Pad, according to T.128. 0x40d seems to
363             trigger             trigger
364             the server to start sending RDP5 packets.             the server to start sending RDP5 packets.
# Line 408  rdp_out_order_caps(STREAM s) Line 408  rdp_out_order_caps(STREAM s)
408          order_caps[8] = 1;      /* line */          order_caps[8] = 1;      /* line */
409          order_caps[9] = 1;      /* line */          order_caps[9] = 1;      /* line */
410          order_caps[10] = 1;     /* rect */          order_caps[10] = 1;     /* rect */
411          order_caps[11] = (desktop_save == False ? 0 : 1);       /* desksave */          order_caps[11] = (g_desktop_save == False ? 0 : 1);     /* desksave */
412          order_caps[13] = 1;     /* memblt */          order_caps[13] = 1;     /* memblt */
413          order_caps[14] = 1;     /* triblt */          order_caps[14] = 1;     /* triblt */
414          order_caps[22] = 1;     /* polyline */          order_caps[22] = 1;     /* polyline */
# Line 426  rdp_out_order_caps(STREAM s) Line 426  rdp_out_order_caps(STREAM s)
426          out_uint8p(s, order_caps, 32);  /* Orders supported */          out_uint8p(s, order_caps, 32);  /* Orders supported */
427          out_uint16_le(s, 0x6a1);        /* Text capability flags */          out_uint16_le(s, 0x6a1);        /* Text capability flags */
428          out_uint8s(s, 6);       /* Pad */          out_uint8s(s, 6);       /* Pad */
429          out_uint32_le(s, desktop_save == False ? 0 : 0x38400);  /* Desktop cache size */          out_uint32_le(s, g_desktop_save == False ? 0 : 0x38400);        /* Desktop cache size */
430          out_uint32(s, 0);       /* Unknown */          out_uint32(s, 0);       /* Unknown */
431          out_uint32_le(s, 0x4e4);        /* Unknown */          out_uint32_le(s, 0x4e4);        /* Unknown */
432  }  }
# Line 439  rdp_out_bmpcache_caps(STREAM s) Line 439  rdp_out_bmpcache_caps(STREAM s)
439          out_uint16_le(s, RDP_CAPSET_BMPCACHE);          out_uint16_le(s, RDP_CAPSET_BMPCACHE);
440          out_uint16_le(s, RDP_CAPLEN_BMPCACHE);          out_uint16_le(s, RDP_CAPLEN_BMPCACHE);
441    
442          Bpp = (server_bpp + 7) / 8;          Bpp = (g_server_bpp + 7) / 8;
443          out_uint8s(s, 24);      /* unused */          out_uint8s(s, 24);      /* unused */
444          out_uint16_le(s, 0x258);        /* entries */          out_uint16_le(s, 0x258);        /* entries */
445          out_uint16_le(s, 0x100 * Bpp);  /* max cell size */          out_uint16_le(s, 0x100 * Bpp);  /* max cell size */
# Line 559  rdp_send_confirm_active(void) Line 559  rdp_send_confirm_active(void)
559          out_uint16_le(s, (RDP_PDU_CONFIRM_ACTIVE | 0x10));      /* Version 1 */          out_uint16_le(s, (RDP_PDU_CONFIRM_ACTIVE | 0x10));      /* Version 1 */
560          out_uint16_le(s, (g_mcs_userid + 1001));          out_uint16_le(s, (g_mcs_userid + 1001));
561    
562          out_uint32_le(s, rdp_shareid);          out_uint32_le(s, g_rdp_shareid);
563          out_uint16_le(s, 0x3ea);        /* userid */          out_uint16_le(s, 0x3ea);        /* userid */
564          out_uint16_le(s, sizeof(RDP_SOURCE));          out_uint16_le(s, sizeof(RDP_SOURCE));
565          out_uint16_le(s, caplen);          out_uint16_le(s, caplen);
# Line 589  process_demand_active(STREAM s) Line 589  process_demand_active(STREAM s)
589  {  {
590          uint8 type;          uint8 type;
591    
592          in_uint32_le(s, rdp_shareid);          in_uint32_le(s, g_rdp_shareid);
593    
594          DEBUG(("DEMAND_ACTIVE(id=0x%x)\n", rdp_shareid));          DEBUG(("DEMAND_ACTIVE(id=0x%x)\n", g_rdp_shareid));
595    
596          rdp_send_confirm_active();          rdp_send_confirm_active();
597          rdp_send_synchronise();          rdp_send_synchronise();

Legend:
Removed from v.437  
changed lines
  Added in v.438

  ViewVC Help
Powered by ViewVC 1.1.26