diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2011-02-27 13:14:00 +0100 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2011-02-28 16:36:28 +0100 |
commit | fc5d7f76257bf51c693dfb888c1a3dd61d8d2318 (patch) | |
tree | 8dede81cb8a758700339c3c2306fd152657d5bce /server/red_channel.c | |
parent | f32503258fa1f0a88de410005609770bd23cac97 (diff) | |
download | spice-fc5d7f76257bf51c693dfb888c1a3dd61d8d2318.tar.gz spice-fc5d7f76257bf51c693dfb888c1a3dd61d8d2318.tar.xz spice-fc5d7f76257bf51c693dfb888c1a3dd61d8d2318.zip |
server: use the new reds_stream_{read,write}
https://bugs.freedesktop.org/show_bug.cgi?id=34795
Diffstat (limited to 'server/red_channel.c')
-rw-r--r-- | server/red_channel.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/server/red_channel.c b/server/red_channel.c index 10bc054f..3676b5a0 100644 --- a/server/red_channel.c +++ b/server/red_channel.c @@ -41,7 +41,8 @@ static int red_peer_receive(RedsStream *peer, uint8_t *buf, uint32_t size) if (peer->shutdown) { return -1; } - if ((now = peer->cb_read(peer->ctx, pos, size)) <= 0) { + now = reds_stream_read(peer, pos, size); + if (now <= 0) { if (now == 0) { return -1; } @@ -154,7 +155,8 @@ void red_channel_receive(RedChannel *channel) static void red_peer_handle_outgoing(RedsStream *peer, OutgoingHandler *handler) { - int n; + ssize_t n; + if (handler->size == 0) { handler->vec = handler->vec_buf; handler->size = handler->get_msg_size(handler->opaque); @@ -162,9 +164,11 @@ static void red_peer_handle_outgoing(RedsStream *peer, OutgoingHandler *handler) return; } } + for (;;) { handler->prepare(handler->opaque, handler->vec, &handler->vec_size, handler->pos); - if ((n = peer->cb_writev(peer->ctx, handler->vec, handler->vec_size)) == -1) { + n = reds_stream_writev(peer, handler->vec, handler->vec_size); + if (n == -1) { switch (errno) { case EAGAIN: handler->on_block(handler->opaque); |