---
client/red_channel.cpp | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/client/red_channel.cpp b/client/red_channel.cpp
index e8c058c..1f3312f 100644
--- a/client/red_channel.cpp
+++ b/client/red_channel.cpp
@@ -215,6 +215,8 @@ void RedChannelBase::link(uint32_t connection_id, const
std::string& password,
SPICEC_ERROR_CODE_CONNECT_FAILED :
SPICEC_ERROR_CODE_CONNECT_FAILED;
THROW_ERR(error_code, "connect failed %u", link_res);
}
+
+
set_is_header_with_sub_list(!test_common_capability(SPICE_COMMON_CAP_HEADER_NO_SUB));
}
void RedChannelBase::connect(const ConnectionOptions& options, uint32_t
connection_id,
@@ -353,6 +355,8 @@ RedChannel::RedChannel(RedClient& client, uint8_t type,
uint8_t id,
{
_loop.add_trigger(_send_trigger);
_loop.add_trigger(_abort_trigger);
+ _incomming_header.sub_list = 0;
+ set_common_capability(SPICE_COMMON_CAP_HEADER_NO_SUB);
}
RedChannel::~RedChannel()
@@ -691,8 +695,8 @@ void RedChannel::on_message_complition(uint64_t serial)
void RedChannel::receive_messages()
{
for (;;) {
- uint32_t n = RedPeer::receive((uint8_t*)&_incomming_header,
sizeof(SpiceDataHeader));
- if (n != sizeof(SpiceDataHeader)) {
+ uint32_t n = RedPeer::receive((uint8_t*)&_incomming_header,
_header_size);
+ if (n != _header_size) {
_incomming_header_pos = n;
return;
}
@@ -728,8 +732,8 @@ void RedChannel::on_event()
if (_incomming_header_pos) {
_incomming_header_pos +=
RedPeer::receive(((uint8_t*)&_incomming_header) +
_incomming_header_pos,
- sizeof(SpiceDataHeader) -
_incomming_header_pos);
- if (_incomming_header_pos != sizeof(SpiceDataHeader)) {
+ _header_size -
_incomming_header_pos);
+ if (_incomming_header_pos != _header_size) {
return;
}
_incomming_header_pos = 0;
--
1.7.6.4
_______________________________________________
Spice-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/spice-devel