/[rdesktop]/sourceforge.net/trunk/rdesktop/mcs.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/mcs.c

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

revision 381 by jsorg71, Fri May 30 21:59:56 2003 UTC revision 432 by matthewc, Tue Jul 1 09:31:25 2003 UTC
# Line 21  Line 21 
21  #include "rdesktop.h"  #include "rdesktop.h"
22    
23  uint16 g_mcs_userid;  uint16 g_mcs_userid;
24  extern BOOL use_rdp5;  extern VCHANNEL g_channels[];
25    extern unsigned int g_num_channels;
26    
27  /* Parse an ASN.1 BER header */  /* Parse an ASN.1 BER header */
28  static BOOL  static BOOL
# Line 256  mcs_send_cjrq(uint16 chanid) Line 257  mcs_send_cjrq(uint16 chanid)
257  {  {
258          STREAM s;          STREAM s;
259    
260            DEBUG_RDP5(("Sending CJRQ for channel #%d\n", chanid));
261    
262          s = iso_init(5);          s = iso_init(5);
263    
264          out_uint8(s, (MCS_CJRQ << 2));          out_uint8(s, (MCS_CJRQ << 2));
# Line 310  mcs_init(int length) Line 313  mcs_init(int length)
313          return s;          return s;
314  }  }
315    
316  /* Send an MCS transport data packet */  /* Send an MCS transport data packet to a specific channel */
317  void  void
318  mcs_send(STREAM s)  mcs_send_to_channel(STREAM s, uint16 channel)
319  {  {
320          uint16 length;          uint16 length;
321    
# Line 322  mcs_send(STREAM s) Line 325  mcs_send(STREAM s)
325    
326          out_uint8(s, (MCS_SDRQ << 2));          out_uint8(s, (MCS_SDRQ << 2));
327          out_uint16_be(s, g_mcs_userid);          out_uint16_be(s, g_mcs_userid);
328          out_uint16_be(s, MCS_GLOBAL_CHANNEL);          out_uint16_be(s, channel);
329          out_uint8(s, 0x70);     /* flags */          out_uint8(s, 0x70);     /* flags */
330          out_uint16_be(s, length);          out_uint16_be(s, length);
331    
332          iso_send(s);          iso_send(s);
333  }  }
334    
335    /* Send an MCS transport data packet to the global channel */
336    void
337    mcs_send(STREAM s)
338    {
339            mcs_send_to_channel(s, MCS_GLOBAL_CHANNEL);
340    }
341    
342  /* Receive an MCS transport data packet */  /* Receive an MCS transport data packet */
343  STREAM  STREAM
344  mcs_recv(uint16 * channel)  mcs_recv(uint16 * channel)
# Line 365  mcs_recv(uint16 * channel) Line 375  mcs_recv(uint16 * channel)
375  BOOL  BOOL
376  mcs_connect(char *server, STREAM mcs_data, char *username)  mcs_connect(char *server, STREAM mcs_data, char *username)
377  {  {
378            unsigned int i;
379    
380          if (!iso_connect(server, username))          if (!iso_connect(server, username))
381                  return False;                  return False;
382    
# Line 378  mcs_connect(char *server, STREAM mcs_dat Line 390  mcs_connect(char *server, STREAM mcs_dat
390          if (!mcs_recv_aucf(&g_mcs_userid))          if (!mcs_recv_aucf(&g_mcs_userid))
391                  goto error;                  goto error;
392    
393          mcs_send_cjrq(g_mcs_userid + 1001);          mcs_send_cjrq(g_mcs_userid + MCS_USERCHANNEL_BASE);
394    
395          if (!mcs_recv_cjcf())          if (!mcs_recv_cjcf())
396                  goto error;                  goto error;
397    
# Line 386  mcs_connect(char *server, STREAM mcs_dat Line 399  mcs_connect(char *server, STREAM mcs_dat
399          if (!mcs_recv_cjcf())          if (!mcs_recv_cjcf())
400                  goto error;                  goto error;
401    
402          if (use_rdp5)          for (i = 0; i < g_num_channels; i++)
403          {          {
404                  /* Note: If we send this cjrq after telling the server we support RDP4 only,                  mcs_send_cjrq(g_channels[i].mcs_id);
                    the server won't respond with a cjcf and we will hang. */  
                 mcs_send_cjrq(MCS_GLOBAL_CHANNEL + 1);  /* hack - clipboard */  
405                  if (!mcs_recv_cjcf())                  if (!mcs_recv_cjcf())
406                          goto error;                          goto error;
407          }          }
   
408          return True;          return True;
409    
410        error:        error:

Legend:
Removed from v.381  
changed lines
  Added in v.432

  ViewVC Help
Powered by ViewVC 1.1.26