]> git.saurik.com Git - apt.git/blobdiff - methods/ftp.cc
Correct neuros problem with no source directory
[apt.git] / methods / ftp.cc
index 4f9410bfc911cfbde9eb7570f0f1e039e8d6655f..bbc4a3f22704f5b9945ca9de544eaaa2c9eba8f4 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: ftp.cc,v 1.26 2001/03/24 22:34:55 jgg Exp $
+// $Id: ftp.cc,v 1.28 2001/05/22 04:02:00 jgg Exp $
 /* ######################################################################
 
    FTP Aquire Method - This is the FTP aquire method for APT.
@@ -28,6 +28,7 @@
 #include <stdio.h>
 #include <errno.h>
 #include <stdarg.h>
+#include <iostream>
 
 // Internet stuff
 #include <netinet/in.h>
@@ -40,6 +41,8 @@
 #include "ftp.h"
                                                                        /*}}}*/
 
+using namespace std;
+
 /* This table is for the EPRT and EPSV commands, it maps the OS address
    family to the IETF address families */
 struct AFMap
@@ -153,6 +156,10 @@ bool FTPConn::Open(pkgAcqMethod *Owner)
    RotateDNS();
    if (Connect(Host,Port,"ftp",21,ServerFd,TimeOut,Owner) == false)
       return false;
+
+   // Login must be before getpeername otherwise dante won't work.
+   Owner->Status("Logging in");
+   bool Res = Login();
    
    // Get the remote server's address
    PeerAddrLen = sizeof(PeerAddr);
@@ -164,8 +171,7 @@ bool FTPConn::Open(pkgAcqMethod *Owner)
    if (getsockname(ServerFd,(sockaddr *)&ServerAddr,&ServerAddrLen) != 0)
       return _error->Errno("getsockname","Unable to determine the local name");
    
-   Owner->Status("Logging in");
-   return Login();
+   return Res;
 }
                                                                        /*}}}*/
 // FTPConn::Login - Login to the remote server                         /*{{{*/