]> git.saurik.com Git - apple/security.git/blobdiff - Network/ftp-protocol.cpp
Security-54.1.tar.gz
[apple/security.git] / Network / ftp-protocol.cpp
index cef9777b2e83e40d985417aba693b08913f4b834..ae94568247cf1d5ee6c6b0a0f276f2b55732d8e9 100644 (file)
@@ -332,8 +332,12 @@ void FTPProtocol::FTPConnection::transit(Event event, char *input, size_t length
             case transferSent:
                 switch (reply) {
                 case 150:
             case transferSent:
                 switch (reply) {
                 case 150:
+                case 125:
+                    transfer().ftpResponse() = input;  // remember response for caller.
+                    transfer().ftpResponseCode() = reply;
                     if (!mPassive)
                         mReceiver.receive(mDataPath);  // accept incoming connection and stop listening
                     if (!mPassive)
                         mReceiver.receive(mDataPath);  // accept incoming connection and stop listening
+                    observe(Observer::resultCodeReady, input);
                     
                     // engage the data path
                     switch (operation()) {
                     
                     // engage the data path
                     switch (operation()) {
@@ -341,9 +345,11 @@ void FTPProtocol::FTPConnection::transit(Event event, char *input, size_t length
                     case downloadDirectory:
                     case downloadListing:
                         mDataPath.start(sink());
                     case downloadDirectory:
                     case downloadListing:
                         mDataPath.start(sink());
+                        observe(Observer::downloading, input);
                         break;
                     case upload:
                         mDataPath.start(source());
                         break;
                     case upload:
                         mDataPath.start(source());
+                        observe(Observer::uploading, input);
                         break;
                     default:
                         assert(false);
                         break;
                     default:
                         assert(false);