[Pkg-haskell-commits] [SCM] haskell-testpack branch, master, updated. debian/1.0.2-1-4-gb0d6b36

John Goerzen jgoerzen at complete.org
Fri Apr 23 14:53:34 UTC 2010


The following commit has been merged in the master branch:
commit f6ad1ae4fa30999790b5a400bc2d1520dd3446ab
Author: John Goerzen <jgoerzen at complete.org>
Date:   Thu Dec 23 02:49:29 2004 +0100

    Checkpointing port support
    
    Keywords:
    
    
    (jgoerzen at complete.org--projects/missingh--head--0.7--patch-147)

diff --git a/ChangeLog b/ChangeLog
index 8911f56..dd4a501 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,18 @@
 # arch-tag: automatic-ChangeLog--jgoerzen at complete.org--projects/missingh--head--0.7
 #
 
+2004-12-22 19:49:29 GMT	John Goerzen <jgoerzen at complete.org>	patch-147
+
+    Summary:
+      Checkpointing port support
+    Revision:
+      missingh--head--0.7--patch-147
+
+
+    modified files:
+     ChangeLog libsrc/MissingH/Network/FTP/Server.hs
+
+
 2004-12-22 19:36:07 GMT	John Goerzen <jgoerzen at complete.org>	patch-146
 
     Summary:
diff --git a/libsrc/MissingH/Network/FTP/Server.hs b/libsrc/MissingH/Network/FTP/Server.hs
index b852a9c..fb6ff73 100644
--- a/libsrc/MissingH/Network/FTP/Server.hs
+++ b/libsrc/MissingH/Network/FTP/Server.hs
@@ -161,6 +161,7 @@ commands =
     ,("MODE", (forceLogin cmd_mode,  help_mode))
     ,("STRU", (forceLogin cmd_stru,  help_stru))
     ,("PASV", (forceLogin cmd_pasv,  help_pasv))
+    ,("PORT", (forceLogin cmd_port,  help_port))
     ]
 
 commandLoop :: FTPServer -> IO ()
@@ -277,6 +278,30 @@ closeconn h@(FTPServer _ _ state) =
            ActivePort sock -> sClose sock
        writeIORef (datachan state) NoChannel
 
+help_port = ("Initiate a port-mode connection", "")
+cmd_port :: CommandHandler
+cmd_port h@(FTPServer _ _ state) args =
+    let doIt clientsa = 
+            do writeIORef (datachan state) (PortMode clientsa)
+               str <- showSockAddr clientsa
+               sendReply h 200 $ "OK, later I will connect to " ++ str
+               return True
+        in
+        do closeconn h                      -- Close any existing connection
+           trapIOError h (fromPortString args) $  (\clientsa -> 
+            do closeconn h
+               case clientsa of
+                   SockAddrInet _ ha -> 
+                      case (local state) of
+                          SockAddrInet _ ha2 -> if ha /= ha2
+                                                  then do sendReply h 501 "Will only connect to same client as command channel."
+                                                          return True
+                                                  else doIt clientsa
+                          _ -> do sendReply h 501 "Require IPv4 on client"
+                                  return True
+                   _ -> do sendReply h 501 "Require IPv4 in specified address"
+                           return True
+                                                  )
 help_pasv = ("Initiate a passive-mode connection", "")
 cmd_pasv :: CommandHandler
 cmd_pasv h@(FTPServer _ _ state) args =

-- 
haskell-testpack



More information about the Pkg-haskell-commits mailing list