Posted to tcl by dgood` at Fri Jan 24 20:53:37 GMT 2014view pretty
This code will cause the ftp module to throw errors into the event loop. Any ideas on how to work around this situation? Code: ====== package require log package require ftp namespace import ::log::log* namespace import ::ftp::* # Set log package options ::log::lvSuppressLE warning 0 ::log::lvSuppress debug 0 ::log::lvCmdForall logCmd proc logCmd {lvl txt} { if {[info level] > 2} { set method [lindex [info level -2] 0] } else { set method "global" } set line "\[[clock format [clock seconds] -format {%Y-%m-%dT%H:%M:%S}]\] \[$lvl\] \[$method\] $txt" puts stdout $line flush stdout } # Set ftp package options namespace eval ftp { set VERBOSE 1 set DEBUG 1 # Override default output routine proc DisplayMsg {s msg {state "info"}} { ::log::log debug "ftp: $state | $msg" # if {$state eq "error" && [info exists ::errorInfo]} { # ::log::log debug $::errorInfo # } return } } proc bgerror {msg} { log error "bgerror: $msg" if {[info exists ::errorInfo]} { log error "$::errorInfo" } else { log error "errorInfo does not exist" } } proc connect {addr} { log info "Opening anonymous FTP connection to $addr" set ftp [::ftp::Open $addr anonymous anonymous -port 21 -timeout 20] } proc disconnect {ftp} { ::ftp::Close $ftp } proc stress {ftp count} { for {set n 0} {$n < $count} {incr n} { set nlist [::ftp::NList $ftp /Outbox/Store_11420] log info "Count $n/$count NList = $nlist" } } ====== Output: [2014-01-24T14:26:34] [info] [stress] Count 19/100 NList = /Outbox/Store_11420/Done /Outbox/Store_11420/PCO-11420-140123-183131.xml [2014-01-24T14:26:34] [debug] [DisplayMsg] ftp: info | -> rc=" " [2014-01-24T14:26:34] [debug] [DisplayMsg] -> msgtext="" [2014-01-24T14:26:34] [debug] [DisplayMsg] -> state="type" [2014-01-24T14:26:34] [debug] [DisplayMsg] ftp: info | ---> TYPE A [2014-01-24T14:26:34] [debug] [DisplayMsg] ftp: info | -> rc="200" [2014-01-24T14:26:34] [debug] [DisplayMsg] -> msgtext="200 Type set to A." [2014-01-24T14:26:34] [debug] [DisplayMsg] -> state="type_sent" [2014-01-24T14:26:34] [debug] [DisplayMsg] ftp: control | C: 200 Type set to A. [2014-01-24T14:26:34] [debug] [DisplayMsg] ftp: info | -> rc=" " [2014-01-24T14:26:34] [debug] [DisplayMsg] -> msgtext="" [2014-01-24T14:26:34] [debug] [DisplayMsg] -> state="nlist_active" [2014-01-24T14:26:34] [debug] [DisplayMsg] ftp: data | D: Port is 59758 [2014-01-24T14:26:34] [debug] [DisplayMsg] ftp: info | ---> PORT 192,168,16,140,233,110 [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc="200" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="200 PORT command successful." [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="nlist_open" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | ---> NLST /Outbox/Store_11420 [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: control | C: 200 PORT command successful. [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc="150" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="150 Opening ASCII mode data connection." [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="list_sent" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: control | C: 150 Opening ASCII mode data connection. [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: data | D: Connection from <ip addr>:20 [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc="226" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="226 Transfer complete." [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="list_close" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: data | D: Port closed [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: control | C: 226 Transfer complete. [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc=" " [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="type" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | ---> TYPE I [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc="200" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="200 Type set to I." [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="type_sent" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: control | C: 200 Type set to I. [2014-01-24T14:26:35] [info] [stress] Count 20/100 NList = /Outbox/Store_11420/Done /Outbox/Store_11420/PCO-11420-140123-183131.xml [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc=" " [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="type" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | ---> TYPE A [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc="200" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="200 Type set to A." [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="type_sent" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: control | C: 200 Type set to A. [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc=" " [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="nlist_active" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: data | D: Port is 59759 [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | ---> PORT 192,168,16,140,233,111 [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc="200" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="200 PORT command successful." [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="nlist_open" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | ---> NLST /Outbox/Store_11420 [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: control | C: 200 PORT command successful. [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc="150" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="150 Opening ASCII mode data connection." [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="list_sent" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: control | C: 150 Opening ASCII mode data connection. [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc="226" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="226 Transfer complete." [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="list_close" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: control | C: 226 Transfer complete. [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | -> rc=" " [2014-01-24T14:26:35] [debug] [DisplayMsg] -> msgtext="" [2014-01-24T14:26:35] [debug] [DisplayMsg] -> state="type" [2014-01-24T14:26:35] [debug] [DisplayMsg] ftp: info | ---> TYPE I [2014-01-24T14:26:35] [error] [bgerror] bgerror: Unknown state "type_sent" [2014-01-24T14:26:35] [error] [bgerror] Unknown state "type_sent" [2014-01-24T14:26:35] [error] [bgerror] while executing [2014-01-24T14:26:35] [error] [bgerror] "error "Unknown state \"$ftp(State)\""" [2014-01-24T14:26:35] [error] [bgerror] (procedure "::ftp::InitDataConn" line 55) [2014-01-24T14:26:35] [error] [bgerror] invoked from within [2014-01-24T14:26:35] [error] [bgerror] "::ftp::InitDataConn 0 sock560 <ip addr> 20" [2014-01-24T14:26:36] [debug] [DisplayMsg] ftp: info | -> rc="200" [2014-01-24T14:26:36] [debug] [DisplayMsg] -> msgtext="200 Type set to I." [2014-01-24T14:26:36] [debug] [DisplayMsg] -> state="type_sent"