コード例 #1
0
ファイル: chansrv.c プロジェクト: skdong/nfs-ovd
/* returns error */
	static int APP_CC
process_message_channel_data(struct stream* s)
{
	int chan_id;
	int chan_flags;
	int rv;
	int length;
	int total_length;

	in_uint16_le(s, chan_id);
	in_uint16_le(s, chan_flags);
	in_uint16_le(s, length);
	in_uint32_le(s, total_length);
	log_message(&log_conf, LOG_LEVEL_DEBUG, "chansrv[process_message_channel_data]: "
			"chan_id %d chan_flags %d", chan_id, chan_flags);
	rv = send_channel_data_response_message();
	if (rv == 0)
	{
		/*    if (chan_id == g_cliprdr_chan_id)
			  {
			  rv = clipboard_data_in(s, chan_id, chan_flags, length, total_length);
			  }
			  else if (chan_id == g_rdpsnd_chan_id)
			  {
			  rv = sound_data_in(s, chan_id, chan_flags, length, total_length);
			  }
			  else if (chan_id == g_rdpdr_chan_id)
			  {
			  rv = dev_redir_data_in(s, chan_id, chan_flags, length, total_length);
			  }*/
		/*    else if (chan_id == g_seamrdp_chan_id)
			  {
			  rv = seamrdp_data_in(s, chan_id, chan_flags, length, total_length);
			  }
		 */
		//    else
		//    {
		rv = user_channel_data_in(s, chan_id, chan_flags, length, total_length);
		//    }
	}
	return rv;
}
コード例 #2
0
ファイル: chansrv.c プロジェクト: eric011/xrdp
/* returns error */
static int APP_CC
process_message_channel_data(struct stream *s)
{
    int chan_id = 0;
    int chan_flags = 0;
    int rv = 0;
    int length = 0;
    int total_length = 0;
    struct stream *ls;

    in_uint16_le(s, chan_id);
    in_uint16_le(s, chan_flags);
    in_uint16_le(s, length);
    in_uint32_le(s, total_length);
    LOGM((LOG_LEVEL_DEBUG, "process_message_channel_data: chan_id %d "
          "chan_flags %d", chan_id, chan_flags));
    LOG(10, ("process_message_channel_data"));
    rv = send_channel_data_response_message();

    if (rv == 0)
    {
        if (chan_id == g_cliprdr_chan_id)
        {
            rv = clipboard_data_in(s, chan_id, chan_flags, length, total_length);
        }
        else if (chan_id == g_rdpsnd_chan_id)
        {
            rv = sound_data_in(s, chan_id, chan_flags, length, total_length);
        }
        else if (chan_id == g_rdpdr_chan_id)
        {
            rv = dev_redir_data_in(s, chan_id, chan_flags, length, total_length);
        }
        else if (chan_id == g_rail_chan_id)
        {
            rv = rail_data_in(s, chan_id, chan_flags, length, total_length);
        }
        else if (chan_id == g_drdynvc_chan_id)
        {
            rv = drdynvc_data_in(s, chan_id, chan_flags, length, total_length);
        }
        else if (chan_id == ((struct xrdp_api_data *)
                             (g_api_con_trans->callback_data))->chan_id)
        {
            LOG(10, ("process_message_channel_data length %d total_length %d "
                     "chan_flags 0x%8.8x", length, total_length, chan_flags));
            ls = g_api_con_trans->out_s;

            if (chan_flags & 1) /* first */
            {
                init_stream(ls, total_length);
            }

            out_uint8a(ls, s->p, length);

            if (chan_flags & 2) /* last */
            {
                s_mark_end(ls);
                trans_force_write(g_api_con_trans);
            }
        }
    }

    return rv;
}