chiark / gitweb /
fix race where we send too much stuff
authorian <ian>
Sun, 15 Mar 2009 22:06:41 +0000 (22:06 +0000)
committerian <ian>
Sun, 15 Mar 2009 22:06:41 +0000 (22:06 +0000)
hostside/measure-speeds

index 360d166d4224259ea966a8c2cfa800a9fa07f244..27bca79a01ddcdfd4ceb19572f9f44ba36f03b3b 100755 (executable)
@@ -139,13 +139,18 @@ proc bgerror {m} {
     puts stderr "----------\nBGERROR\n$m\n$errorInfo\n$errorCode\n----------"
 }
 
-proc xmit-now {} {
+proc xmit-now {until_funcs} {
     global xmit_after xmit_msg funcs_msgs
-    set funcs_msg [lindex $funcs_msgs 0]
-    set funcs_msgs [lreplace $funcs_msgs 0 0]
-    lappend funcs_msgs $funcs_msg
-    send-now $xmit_msg$funcs_msg
-    set xmit_after [after 10 xmit-now]
+    set m $xmit_msg
+    if {![incr until_funcs -1]} {
+       set funcs_msg [lindex $funcs_msgs 0]
+       set funcs_msgs [lreplace $funcs_msgs 0 0]
+       lappend funcs_msgs $funcs_msg
+       append m $funcs_msg
+       set until_funcs 5
+    }
+    send-now $m
+    set xmit_after [after 10 xmit-now $until_funcs]
 }
 proc xmit {nmral} {
     global xmit_msg xmit_after detend settle_detend settle_time funcs_msgs
@@ -153,7 +158,7 @@ proc xmit {nmral} {
     set xmit_msg [hbytes raw2h $msg]
     debug "> $xmit_msg $nmral (E $detend $settle_detend $settle_time) \[$funcs_msgs]"
     catch { after cancel $xmit_after }
-    xmit-now
+    xmit-now 10
 }
 
 proc now-ms {} {