Posted to tcl by dgood` at Fri Jan 24 20:53:37 GMT 2014view raw
- 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"