Freelance server, Model Two in Tcl

#
# Freelance server - Model 2
# Does some work, replies OK, with message sequencing
#

package require zmq

if {[llength $argv] != 1} {
puts "Usage: flserver2.tcl <endpoint>"
exit 1
}

zmq context context
zmq socket server context REP
server bind [lindex $argv 0]

puts "I: echo service is ready at [lindex $argv 0]"
while {1} {
set request [zmsg recv server]
if {[llength $request] == 0} {
break
}
# Fail nastily if run against wrong client
if {[llength $request] != 2} {
error "request with length 2 expected"
}

set address [zmsg pop request]

set reply {}
set reply [zmsg add $reply $address]
set reply [zmsg add $reply "OK"]
zmsg send server $reply
}

server close
context term