     "NLST": (reqPath = "")->
       @fileSystem.getNlst @sessionDir, reqPath, (err, files)=>
         if err?
+          if @passive
+            @dtpServer.close()
           @reply 550, "#{reqPath}: No such file or directory"
         else
-          @dtpServer.dataQueue = files.join("\r\n") + "\r\n"
-          @reply 150
+          @dtpServer.dtpSocket.sender files.join("\r\n") + "\r\n"
     
     "LIST": (reqPath = "")->
       @fileSystem.getList @sessionDir, reqPath, (err, stdout, stderr)=>
         if err?
+          if @passive
+            @dtpServer.close()
           @reply 550, "#{reqPath}: No such file or directory"
         else
-          @dtpServer.dataQueue = stdout.replace(/^total [0-9]+$/im, "").trim()
-          @reply 150
-    
-    "RETR": ()->
-      @dtpServer.dataQueue = "<html></html>"
-      @reply 150
+          @dtpServer.dtpSocket.sender stdout.replace(/^total [0-9]+$/im, "").trim()
+    
+    "RETR": (reqPath)->
+      @fileSystem.getFile @sessionDir, reqPath, (err, data)=>
+        if err?
+          if @passive
+            @dtpServer.close()
+          @reply 550, "#{reqPath}: No such file or directory"
+        else
+          @dtpServer.dtpSocket.sender data
     
     "SYST": ()->
       @reply 215, BabyFtpd.sysName

    "STAT": ()->
      @reply 202
    
    # 仮実装しているもの
    #"RETR": ()->
    
    # 各コマンドの処理
    "USER": (username)->
      @userName = username

      @end()
    
    "PASV": ()->
      @passive = true
      @dtpServer = dtpServer.call @, @
      @dtpServer.listen 0, @server.address().address
    
    "NOOP": ()->
      @reply 200
