summaryrefslogtreecommitdiffstats
path: root/tests/remote.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/remote.tcl')
-rw-r--r--tests/remote.tcl43
1 files changed, 27 insertions, 16 deletions
diff --git a/tests/remote.tcl b/tests/remote.tcl
index 097e41f..4ac3607 100644
--- a/tests/remote.tcl
+++ b/tests/remote.tcl
@@ -30,9 +30,11 @@ proc __doCommands__ {l s} {
puts "---"
}
set callerSocket $s
- set ::errorInfo ""
- set code [catch {uplevel "#0" $l} msg]
- return [list $code $::errorInfo $msg]
+ if {[catch {uplevel #0 $l} msg]} {
+ list error $msg
+ } else {
+ list success $msg
+ }
}
proc __readAndExecute__ {s} {
@@ -40,9 +42,10 @@ proc __readAndExecute__ {s} {
set l [gets $s]
if {[string compare $l "--Marker--Marker--Marker--"] == 0} {
- puts $s [__doCommands__ $command($s) $s]
+ if {[info exists command($s)]} {
+ puts $s [list error incomplete_command]
+ }
puts $s "--Marker--Marker--Marker--"
- set command($s) ""
return
}
if {[string compare $l ""] == 0} {
@@ -54,26 +57,28 @@ proc __readAndExecute__ {s} {
}
return
}
+ append command($s) $l "\n"
+ if {[info complete $command($s)]} {
+ set cmds $command($s)
+ unset command($s)
+ puts $s [__doCommands__ $cmds $s]
+ }
if {[eof $s]} {
if {$VERBOSE} {
puts "Server closing $s, eof from client"
}
close $s
- unset command($s)
- return
}
- append command($s) $l "\n"
}
proc __accept__ {s a p} {
- global command VERBOSE
+ global VERBOSE
if {$VERBOSE} {
puts "Server accepts new connection from $a:$p on $s"
}
- set command($s) ""
- fconfigure $s -buffering line -translation crlf
fileevent $s readable [list __readAndExecute__ $s]
+ fconfigure $s -buffering line -translation crlf
}
set serverIsSilent 0
@@ -146,14 +151,20 @@ if {$serverIsSilent == 0} {
flush stdout
}
-proc getPort sock {
- lindex [fconfigure $sock -sockname] 2
-}
-
if {[catch {set serverSocket \
[socket -myaddr $serverAddress -server __accept__ $serverPort]} msg]} {
puts "Server on $serverAddress:$serverPort cannot start: $msg"
} else {
- puts ready
vwait __server_wait_variable__
}
+
+
+
+
+
+
+
+
+
+
+