<div dir="ltr">ack<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, May 8, 2013 at 4:06 PM, Yonit Halperin <span dir="ltr"><<a href="mailto:yhalperi@redhat.com" target="_blank">yhalperi@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">---<br>
 server/main_channel.c | 10 +++++++++-<br>
 server/main_channel.h |  6 ++++++<br>
 2 files changed, 15 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/server/main_channel.c b/server/main_channel.c<br>
index dd927ab..4cf7e19 100644<br>
--- a/server/main_channel.c<br>
+++ b/server/main_channel.c<br>
@@ -164,6 +164,7 @@ enum NetTestStage {<br>
     NET_TEST_STAGE_WARMUP,<br>
     NET_TEST_STAGE_LATENCY,<br>
     NET_TEST_STAGE_RATE,<br>
+    NET_TEST_STAGE_COMPLETE,<br>
 };<br>
<br>
 static void main_channel_release_pipe_item(RedChannelClient *rcc,<br>
@@ -962,6 +963,7 @@ static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint<br>
                 if (roundtrip <= mcc->latency) {<br>
                     // probably high load on client or server result with incorrect values<br>
                     mcc->latency = 0;<br>
+                    mcc->net_test_stage = NET_TEST_STAGE_INVALID;<br>
                     spice_printerr("net test: invalid values, latency %" PRIu64<br>
                                " roundtrip %" PRIu64 ". assuming high"<br>
                                "bandwidth", mcc->latency, roundtrip);<br>
@@ -969,18 +971,19 @@ static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint<br>
                 }<br>
                 mcc->bitrate_per_sec = (uint64_t)(NET_TEST_BYTES * 8) * 1000000<br>
                                         / (roundtrip - mcc->latency);<br>
+                mcc->net_test_stage = NET_TEST_STAGE_COMPLETE;<br>
                 spice_printerr("net test: latency %f ms, bitrate %"PRIu64" bps (%f Mbps)%s",<br>
                            (double)mcc->latency / 1000,<br>
                            mcc->bitrate_per_sec,<br>
                            (double)mcc->bitrate_per_sec / 1024 / 1024,<br>
                            main_channel_client_is_low_bandwidth(mcc) ? " LOW BANDWIDTH" : "");<br>
-                mcc->net_test_stage = NET_TEST_STAGE_INVALID;<br>
                 break;<br>
             default:<br>
                 spice_printerr("invalid net test stage, ping id %d test id %d stage %d",<br>
                            ping->id,<br>
                            mcc->net_test_id,<br>
                            mcc->net_test_stage);<br>
+                mcc->net_test_stage = NET_TEST_STAGE_INVALID;<br>
             }<br>
             break;<br>
         }<br>
@@ -1139,6 +1142,11 @@ void main_channel_close(MainChannel *main_chan)<br>
     }<br>
 }<br>
<br>
+int main_channel_client_is_network_info_initialized(MainChannelClient *mcc)<br>
+{<br>
+    return mcc->net_test_stage == NET_TEST_STAGE_COMPLETE;<br>
+}<br>
+<br>
 int main_channel_client_is_low_bandwidth(MainChannelClient *mcc)<br>
 {<br>
     // TODO: configurable?<br>
diff --git a/server/main_channel.h b/server/main_channel.h<br>
index b2f0e6f..27367a4 100644<br>
--- a/server/main_channel.h<br>
+++ b/server/main_channel.h<br>
@@ -67,9 +67,15 @@ int main_channel_getsockname(MainChannel *main_chan, struct sockaddr *sa, sockle<br>
 int main_channel_getpeername(MainChannel *main_chan, struct sockaddr *sa, socklen_t *salen);<br>
 uint32_t main_channel_client_get_link_id(MainChannelClient *mcc);<br>
<br>
+/*<br>
+ * return TRUE if network test had been completed successfully.<br>
+ * If FALSE, bitrate_per_sec is set to MAX_UINT64 and the roundtrip is set to 0<br>
+ */<br>
+int main_channel_client_is_network_info_initialized(MainChannelClient *mcc);<br>
 int main_channel_client_is_low_bandwidth(MainChannelClient *mcc);<br>
 uint64_t main_channel_client_get_bitrate_per_sec(MainChannelClient *mcc);<br>
 uint64_t main_channel_client_get_roundtrip_ms(MainChannelClient *mcc);<br>
+<br>
 int main_channel_is_connected(MainChannel *main_chan);<br>
 RedChannelClient* main_channel_client_get_base(MainChannelClient* mcc);<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
1.8.1.4<br>
<br>
_______________________________________________<br>
Spice-devel mailing list<br>
<a href="mailto:Spice-devel@lists.freedesktop.org">Spice-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/spice-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/spice-devel</a><br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br>Marc-André Lureau
</div>