/[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 738 by astrand, Mon Jul 12 21:07:39 2004 UTC revision 830 by jdmeijer, Tue Mar 8 00:23:02 2005 UTC
# Line 1  Line 1 
1  /* -*- c-basic-offset: 8 -*-  /* -*- c-basic-offset: 8 -*-
2     rdesktop: A Remote Desktop Protocol client.     rdesktop: A Remote Desktop Protocol client.
3     Protocol services - RDP layer     Protocol services - RDP layer
4     Copyright (C) Matthew Chapman 1999-2002     Copyright (C) Matthew Chapman 1999-2005
5    
6     This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
# Line 58  rdp_recv(uint8 * type) Line 58  rdp_recv(uint8 * type)
58                  rdp_s = sec_recv(&rdpver);                  rdp_s = sec_recv(&rdpver);
59                  if (rdp_s == NULL)                  if (rdp_s == NULL)
60                          return NULL;                          return NULL;
61                  if (rdpver != 3)                  if (rdpver == 0xff)
62                    {
63                            g_next_packet = rdp_s->end;
64                            *type = 0;
65                            return rdp_s;
66                    }
67                    else if (rdpver != 3)
68                  {                  {
69                          /* rdp5_process should move g_next_packet ok */                          /* rdp5_process should move g_next_packet ok */
70                          rdp5_process(rdp_s);                          rdp5_process(rdp_s);
# Line 380  static void Line 386  static void
386  rdp_enum_bmpcache2(void)  rdp_enum_bmpcache2(void)
387  {  {
388          STREAM s;          STREAM s;
389          uint8 idlist[BMPCACHE2_NUM_PSTCELLS * sizeof(BITMAP_ID)];          HASH_KEY keylist[BMPCACHE2_NUM_PSTCELLS];
390          uint32 nids, offset, count, flags;          uint32 num_keys, offset, count, flags;
391    
392          offset = 0;          offset = 0;
393          nids = pstcache_enumerate(2, idlist);          num_keys = pstcache_enumerate(2, keylist);
394    
395          while (offset < nids)          while (offset < num_keys)
396          {          {
397                  count = MIN(nids - offset, 169);                  count = MIN(num_keys - offset, 169);
398    
399                  s = rdp_init_data(24 + count * sizeof(BITMAP_ID));                  s = rdp_init_data(24 + count * sizeof(HASH_KEY));
400    
401                  flags = 0;                  flags = 0;
402                  if (offset == 0)                  if (offset == 0)
403                          flags |= PDU_FLAG_FIRST;                          flags |= PDU_FLAG_FIRST;
404                  if (nids - offset <= 169)                  if (num_keys - offset <= 169)
405                          flags |= PDU_FLAG_LAST;                          flags |= PDU_FLAG_LAST;
406    
407                  /* header */                  /* header */
# Line 405  rdp_enum_bmpcache2(void) Line 411  rdp_enum_bmpcache2(void)
411                  out_uint16_le(s, 0);                  out_uint16_le(s, 0);
412                  out_uint16_le(s, 0);                  out_uint16_le(s, 0);
413                  out_uint16_le(s, 0);                  out_uint16_le(s, 0);
414                  out_uint16_le(s, nids);                  out_uint16_le(s, num_keys);
415                  out_uint32_le(s, 0);                  out_uint32_le(s, 0);
416                  out_uint32_le(s, flags);                  out_uint32_le(s, flags);
417    
418                  /* list */                  /* list */
419                  out_uint8a(s, idlist + offset * sizeof(BITMAP_ID), count * sizeof(BITMAP_ID));                  out_uint8a(s, keylist[offset], count * sizeof(HASH_KEY));
420    
421                  s_mark_end(s);                  s_mark_end(s);
422                  rdp_send_data(s, 0x2b);                  rdp_send_data(s, 0x2b);
# Line 1085  process_data_pdu(STREAM s, uint32 * ext_ Line 1091  process_data_pdu(STREAM s, uint32 * ext_
1091    
1092          if (ctype & RDP_MPPC_COMPRESSED)          if (ctype & RDP_MPPC_COMPRESSED)
1093          {          {
1094                    if (len > RDP_MPPC_DICT_SIZE)
1095                            error("error decompressed packet size exceeds max\n");
1096                  if (mppc_expand(s->p, clen, ctype, &roff, &rlen) == -1)                  if (mppc_expand(s->p, clen, ctype, &roff, &rlen) == -1)
1097                          error("error while decompressing packet\n");                          error("error while decompressing packet\n");
1098    

Legend:
Removed from v.738  
changed lines
  Added in v.830

  ViewVC Help
Powered by ViewVC 1.1.26