/[rdesktop]/jpeg/rdesktop/trunk/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 /jpeg/rdesktop/trunk/rdp.c

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

revision 668 by astrand, Sat Apr 17 07:37:07 2004 UTC revision 676 by astrand, Tue Apr 20 07:01:21 2004 UTC
# Line 886  process_update_pdu(STREAM s) Line 886  process_update_pdu(STREAM s)
886    
887  }  }
888    
889    /* Process a disconnect PDU */
890    void
891    process_disconnect_pdu(STREAM s, uint32 * ext_disc_reason)
892    {
893            in_uint32_le(s, *ext_disc_reason);
894    
895            DEBUG(("Received disconnect PDU\n"));
896    }
897    
898  /* Process data PDU */  /* Process data PDU */
899  static void  static BOOL
900  process_data_pdu(STREAM s)  process_data_pdu(STREAM s, uint32 * ext_disc_reason)
901  {  {
902          uint8 data_pdu_type;          uint8 data_pdu_type;
903          uint8 ctype;          uint8 ctype;
# Line 939  process_data_pdu(STREAM s) Line 948  process_data_pdu(STREAM s)
948                          process_update_pdu(s);                          process_update_pdu(s);
949                          break;                          break;
950    
951                    case RDP_DATA_PDU_CONTROL:
952                            DEBUG(("Received Control PDU\n"));
953                            break;
954    
955                    case RDP_DATA_PDU_SYNCHRONISE:
956                            DEBUG(("Received Sync PDU\n"));
957                            break;
958    
959                  case RDP_DATA_PDU_POINTER:                  case RDP_DATA_PDU_POINTER:
960                          process_pointer_pdu(s);                          process_pointer_pdu(s);
961                          break;                          break;
# Line 953  process_data_pdu(STREAM s) Line 970  process_data_pdu(STREAM s)
970                          break;                          break;
971    
972                  case RDP_DATA_PDU_DISCONNECT:                  case RDP_DATA_PDU_DISCONNECT:
973                          /* Normally received when user logs out or disconnects from a                          process_disconnect_pdu(s, ext_disc_reason);
974                             console session on Windows XP and 2003 Server */                          return True;
                         DEBUG(("Received disconnect PDU\n"));  
                         break;  
975    
976                  default:                  default:
977                          unimpl("data PDU %d\n", data_pdu_type);                          unimpl("data PDU %d\n", data_pdu_type);
978          }          }
979            return False;
980  }  }
981    
982  /* Process incoming packets */  /* Process incoming packets */
983  BOOL  void
984  rdp_main_loop(void)  rdp_main_loop(BOOL * deactivated, uint32 * ext_disc_reason)
985  {  {
986          uint8 type;          uint8 type;
987            BOOL disc = False;      /* True when a disconnect PDU was received */
988          STREAM s;          STREAM s;
989    
990          while ((s = rdp_recv(&type)) != NULL)          while ((s = rdp_recv(&type)) != NULL)
# Line 976  rdp_main_loop(void) Line 993  rdp_main_loop(void)
993                  {                  {
994                          case RDP_PDU_DEMAND_ACTIVE:                          case RDP_PDU_DEMAND_ACTIVE:
995                                  process_demand_active(s);                                  process_demand_active(s);
996                                    *deactivated = False;
997                                  break;                                  break;
998    
999                          case RDP_PDU_DEACTIVATE:                          case RDP_PDU_DEACTIVATE:
1000                                  DEBUG(("RDP_PDU_DEACTIVATE\n"));                                  *deactivated = True;
                                 /* We thought we could detect a clean  
                                    shutdown of the session by this  
                                    packet, but it seems Windows 2003  
                                    is sending us one of these when we  
                                    reconnect to a disconnected session  
                                    return True; */  
1001                                  break;                                  break;
1002    
1003                          case RDP_PDU_DATA:                          case RDP_PDU_DATA:
1004                                  process_data_pdu(s);                                  disc = process_data_pdu(s, ext_disc_reason);
1005                                  break;                                  break;
1006    
1007                          case 0:                          case 0:
# Line 998  rdp_main_loop(void) Line 1010  rdp_main_loop(void)
1010                          default:                          default:
1011                                  unimpl("PDU %d\n", type);                                  unimpl("PDU %d\n", type);
1012                  }                  }
1013    
1014                    if (disc)
1015                    {
1016                            return;
1017                    }
1018          }          }
1019          return True;          return;
         /* We want to detect if we got a clean shutdown, but we  
            can't. Se above.    
            return False;  */  
1020  }  }
1021    
1022  /* Establish a connection up to the RDP layer */  /* Establish a connection up to the RDP layer */

Legend:
Removed from v.668  
changed lines
  Added in v.676

  ViewVC Help
Powered by ViewVC 1.1.26