Artifact
5b3eef43e30b5037f259c89514dfd6a0affff677:
Attachment "patch.txt" to
ticket [719790ffff]
added by
davygrvy
2006-03-14 06:44:27.
Index: ftpd.tcl
===================================================================
RCS file: /cvsroot/tcllib/tcllib/modules/ftpd/ftpd.tcl,v
retrieving revision 1.26
diff -c -r1.26 ftpd.tcl
*** ftpd.tcl 5 Oct 2004 19:15:52 -0000 1.26
--- ftpd.tcl 13 Mar 2006 23:41:11 -0000
***************
*** 527,565 ****
variable CurrentSocket
set CurrentSocket $sock
! if {[eof $sock]} {
! Finish $sock
! return
! }
! switch -exact -- $data(state) {
! command {
! gets $sock command
! set parts [split $command]
! set cmd [string toupper [lindex $parts 0]]
! auto_load ::ftpd::command::$cmd
! if {($data(access) == 0) && ((![info exists data(user)]) || \
! ($data(user) == "")) && (![string equal $cmd "USER"])} {
! if {[string equal $cmd "PASS"]} {
! puts $sock "503 Login with USER first."
! } else {
! puts $sock "530 Please login with USER and PASS."
}
! } elseif {($data(access) == 0) && (![string equal $cmd "PASS"]) \
! && (![string equal $cmd "USER"]) \
! && (![string equal $cmd "QUIT"])} {
! puts $sock "530 Please login with USER and PASS."
! } elseif {[info command ::ftpd::command::$cmd] != ""} {
! Log debug $command
! ::ftpd::command::$cmd $sock [lrange $parts 1 end]
! catch {flush $sock}
! } else {
! Log error "Unknown command: $cmd"
! puts $sock "500 Unknown command $cmd"
}
}
! default {
! error "Unknown state \"$data(state)\""
! }
}
return
}
--- 527,567 ----
variable CurrentSocket
set CurrentSocket $sock
! set caught [catch {gets $sock command} err]
!
! if {!$caught && [string length $command]} {
! switch -exact -- $data(state) {
! command {
! set parts [split $command]
! set cmd [string toupper [lindex $parts 0]]
! auto_load ::ftpd::command::$cmd
! if {($data(access) == 0) && ((![info exists data(user)]) || \
! ($data(user) == "")) && (![string equal $cmd "USER"])} {
! if {[string equal $cmd "PASS"]} {
! puts $sock "503 Login with USER first."
! } else {
! puts $sock "530 Please login with USER and PASS."
! }
! } elseif {($data(access) == 0) && (![string equal $cmd "PASS"]) \
! && (![string equal $cmd "USER"]) \
! && (![string equal $cmd "QUIT"])} {
! puts $sock "530 Please login with USER and PASS."
! } elseif {[info command ::ftpd::command::$cmd] != ""} {
! Log debug $command
! ::ftpd::command::$cmd $sock [lrange $parts 1 end]
! catch {flush $sock}
! } else {
! Log error "Unknown command: $cmd"
! puts $sock "500 Unknown command $cmd"
}
! }
! default {
! error "Unknown state \"$data(state)\""
}
}
! }
! if {[eof $sock]} {
! Finish $sock
}
return
}