drdynvc: fix value of cb field

This commit is contained in:
Marc-André Moreau 2012-04-25 14:27:38 -04:00
parent fa4d8fca1b
commit 8e64d1803b
2 changed files with 15 additions and 3 deletions

View File

@ -45,6 +45,7 @@ struct drdynvc_plugin
int PriorityCharge1; int PriorityCharge1;
int PriorityCharge2; int PriorityCharge2;
int PriorityCharge3; int PriorityCharge3;
int channel_error;
IWTSVirtualChannelManager* channel_mgr; IWTSVirtualChannelManager* channel_mgr;
}; };
@ -65,7 +66,7 @@ static int drdynvc_write_variable_uint(STREAM* stream, uint32 val)
} }
else else
{ {
cb = 3; cb = 2;
stream_write_uint32(stream, val); stream_write_uint32(stream, val);
} }
return cb; return cb;
@ -82,6 +83,9 @@ int drdynvc_write_data(drdynvcPlugin* drdynvc, uint32 ChannelId, uint8* data, ui
DEBUG_DVC("ChannelId=%d size=%d", ChannelId, data_size); DEBUG_DVC("ChannelId=%d size=%d", ChannelId, data_size);
if (drdynvc->channel_error != CHANNEL_RC_OK)
return 1;
data_out = stream_new(CHANNEL_CHUNK_LENGTH); data_out = stream_new(CHANNEL_CHUNK_LENGTH);
stream_set_pos(data_out, 1); stream_set_pos(data_out, 1);
cbChId = drdynvc_write_variable_uint(data_out, ChannelId); cbChId = drdynvc_write_variable_uint(data_out, ChannelId);
@ -139,6 +143,7 @@ int drdynvc_write_data(drdynvcPlugin* drdynvc, uint32 ChannelId, uint8* data, ui
} }
if (error != CHANNEL_RC_OK) if (error != CHANNEL_RC_OK)
{ {
drdynvc->channel_error = error;
DEBUG_WARN("VirtualChannelWrite failed %d", error); DEBUG_WARN("VirtualChannelWrite failed %d", error);
return 1; return 1;
} }
@ -182,6 +187,8 @@ static int drdynvc_process_capability_request(drdynvcPlugin* drdynvc, int Sp, in
DEBUG_WARN("VirtualChannelWrite failed %d", error); DEBUG_WARN("VirtualChannelWrite failed %d", error);
return 1; return 1;
} }
drdynvc->channel_error = error;
return 0; return 0;
} }
@ -329,6 +336,7 @@ static void drdynvc_process_connect(rdpSvcPlugin* plugin)
DEBUG_DVC("connecting"); DEBUG_DVC("connecting");
drdynvc->channel_mgr = dvcman_new(drdynvc); drdynvc->channel_mgr = dvcman_new(drdynvc);
drdynvc->channel_error = 0;
dvcman_load_plugin(drdynvc->channel_mgr, svc_plugin_get_data(plugin)); dvcman_load_plugin(drdynvc->channel_mgr, svc_plugin_get_data(plugin));
dvcman_init(drdynvc->channel_mgr); dvcman_init(drdynvc->channel_mgr);
} }

View File

@ -384,8 +384,12 @@ int svc_plugin_send(rdpSvcPlugin* plugin, STREAM* data_out)
DEBUG_SVC("length %d", stream_get_length(data_out)); DEBUG_SVC("length %d", stream_get_length(data_out));
if (!plugin || !plugin->priv)
error = CHANNEL_RC_BAD_INIT_HANDLE;
else
error = plugin->channel_entry_points.pVirtualChannelWrite(plugin->priv->open_handle, error = plugin->channel_entry_points.pVirtualChannelWrite(plugin->priv->open_handle,
stream_get_data(data_out), stream_get_length(data_out), data_out); stream_get_data(data_out), stream_get_length(data_out), data_out);
if (error != CHANNEL_RC_OK) if (error != CHANNEL_RC_OK)
{ {
stream_free(data_out); stream_free(data_out);