aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-07-08 09:11:55 -0700
committerBen Pfaff <blp@nicira.com>2011-07-08 09:11:55 -0700
commit12d685891c72d6009f0303edb94b3b6fabcd6228 (patch)
tree8ed88ca90d6ce1f5ab2808bdcea18369af68b8ab
parent9bdea45ba4bac25504f3fe23909b656ec6ecc214 (diff)
vconn-stream: Always call the stream's run function from vconn_stream_run().
The stream's run function ensures that data buffered in the stream itself gets pushed to the network. Only the SSL stream class has such a run function, which means that SSL stream data failed to be pushed to the remote peer in a timely manner in some cases. Many thanks to Alex Yip for narrowing this down. Reported-by: Alex Yip <alex@nicira.com> Tested-by: Alex Yip <alex@nicira.com> Bug #6221.
-rw-r--r--lib/vconn-stream.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/vconn-stream.c b/lib/vconn-stream.c
index 39f1c94d..a9890b59 100644
--- a/lib/vconn-stream.c
+++ b/lib/vconn-stream.c
@@ -227,6 +227,7 @@ vconn_stream_run(struct vconn *vconn)
struct vconn_stream *s = vconn_stream_cast(vconn);
ssize_t retval;
+ stream_run(s->stream);
if (!s->txbuf) {
return;
}
@@ -252,6 +253,7 @@ vconn_stream_run_wait(struct vconn *vconn)
{
struct vconn_stream *s = vconn_stream_cast(vconn);
+ stream_run_wait(s->stream);
if (s->txbuf) {
stream_send_wait(s->stream);
}