From: ian Date: Sun, 15 Mar 2009 22:06:41 +0000 (+0000) Subject: fix race where we send too much stuff X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=4e5097b295bdb198dafe7b3689b5c4b61409d26e;p=trains.git fix race where we send too much stuff --- diff --git a/hostside/measure-speeds b/hostside/measure-speeds index 360d166..27bca79 100755 --- a/hostside/measure-speeds +++ b/hostside/measure-speeds @@ -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 {} {