FTP Debugging

Note: these debugging tips do not apply when the FTP2 protocol is being used (i.e. XFTPF_VERSION flag set in FTPDLX.SBX, /2 switch in ZTXFER.LIT, /V2 switch in ATSYNC.LIT, etc.). See FTP2 for more details.

Aside from the error codes listed in this section, the FTPDLX.SBR also writes a human readable log file, ftpdlx.log in the current directory, which may identify discrepancies between what you thought you were asking it to do and what it was actually trying to do. In addition, if the environment variable ASHFTPDEBUG is defined, a more detailed, lower-level log will written to %temp%\ftpdebug.log (or, prior to A-Shell 5.1.1153 of June 2009, c:\debug.log).

The two DLLs mentioned early must be recorded in the Windows Registry, and this process will normally be taken care of automatically by the A-Shell installation program. However, if FTPDLX doesn't work even if the DLLs and the ALIAS statement are in place, you may need to manually register to the two DLLs:

Start..Run..REGSVR32 <bin-path>\WODFTPDLX.DLL

Start..Run..REGSVR32 <bin-path>\FTPDLXCALL.DLL

FTPDLX Error Codes

The following error codes may be returned from the FTPDLX control based on logic within the subroutine itself.

Value

Description

-1

User abort

-2

Error retrieving subroutine parameters

-3

Error setting remote address

-4

Error setting username

-5

Error setting password

-6

Error setting port (may suggest you have the 1.0 version of EZFTP.OCX)

-7

Error setting remote directory and file

-8

Error displaying progress dialog

-9

Error during connect

-10

Error setting binary/ASCII transfer mode

-11

Error in get or put operation

-12

Error setting local file

 

wodFTPDLX.DLL Error Codes

Value

Description

30001

Cannot connect at this time. Use Disconnect first.

30002

Cannot execute, not yet connected.

30003

Component busy.

30004

Cannot change Hostname at this time. Use Disconnect first.

30005

Cannot change Port at this time. Use Disconnect first.

30006

Cannot change Protocol at this time. Use Disconnect first.

30007

Please set login, and password/certificate first.

30009

Invalid local file name or path.

30010

Could not resolve given Hostname.

30011

Invalid data received from remote server. Protocol error.

30012

Protocol version mismatch error.

30013

Server signature does not match. Aborted by user.

30014

Bad server public DH value.

30015

Server signature does not match.

30016

Invalid username or password reported by server.

30017

Could not obtain pty on remote server.

30018

Server does not support password authentication.

30019

Server rejected due to bad fingerprint/certificate information.

30020

Failed to open channel on the server.

30021

LocalPath should specify a file, and such file does not exist.

30022

Error occurred trying to open local file.

30023

Error occurred trying to read from local file.

30024

Error occurred trying to write to local file.

30025

Server replied with invalid response ID.

30026

Failed to load key or certificate. Password invalid?

30027

Cannot use Append method when Resume property is set to True.

30028

Please set Hostname property.

30029

Component was busy while disconnected by the server.

30030

Given path on the server is a directory.

30031

Server returned an error:

30032

Failed to create temporary file.

30033

Server returned invalid response to FXP_ATTRS.

30034

Server cannot write to a given path.

30035

Data connection has timed out.

30037

Not enabled in SFTP protocol.

30038

Selected proxy type cannot be used with selected protocol.

30039

Selected proxy type requires passive mode connection.

30040

Proxy server has closed the connection.

30041

Proxy server rejected supplied login credentials.

30042

Crypto algorithm could not be negotiated.

30043

Buffer size out of range 1kb-1mb.

30044

Only valid in SSL secured protocols.

39999

License key missing. You can not use this component in design environment.

 

FTP Protocol return codes

Value

Description

40110

Restart marker reply.

40120

Service ready in few minutes.

40125

Data connection already open; transfer starting.

40150

File status okay; about to open data connection.

40200

Command okay.

40202

Command not implemented, superfluous at this site.

40211

System status, or system help reply.

40212

Directory status.

40213

File status.

40214

Help message.

40215

System type.

40220

Service ready for new user.

40221

Service closing control connection.

40225

Data connection open; no transfer in progress.

40226

Closing data connection.

40227

Entering Passive Mode.

40230

User logged in, proceed.

40250

Requested file action okay, completed.

40257

Path created.

40331

User name okay, need password.

40332

Need account for login.

40350

Requested file action pending further information.

40421

Service not available, closing control connection.

40425

Can't open data connection.

40426

Connection closed; transfer aborted.

40450

Requested file action not taken. File unavailable (e.g., file busy).

40451

Requested action aborted: local error in processing.

40452

Requested action not taken. Insufficient storage space in system.

40500

Syntax error, command unrecognized.

40501

Syntax error in parameters or arguments.

40502

Command not implemented.

40503

Bad sequence of commands.

40504

Command not implemented for that parameter.

40530

Not logged in.

40532

Need account for storing files.

40550

Requested action not taken. File unavailable (e.g., file not found, no access).

40551

Action aborted: broken pipe.

40552

Requested file action aborted. Exceeded storage allocation (for current directory or dataset).

40553

Requested action not taken. File name not allowed.

 

Certificate Errors

Value

Description

50000

Certificate ok

50002

Certificate error: Unable to get issuer certificate.

50003

Certificate error: Unable to get CRL (Certificate revocation list).

50004

Certificate error: Unable to decrypt certificate signature.

50005

Certificate error: Unable to decrypt CRL (Certificate revocation list) signature.

50006

Certificate error: Unable to decode issuer public key.

50007

Certificate error: Certificate signature failure.

50008

Certificate error: CRL (Certificate revocation list). signature failure.

50009

Certificate error: Certificate not yet valid;

50010

Certificate error: Certificate has expired.

50011

Certificate error: CRL not yet valid.

50012

Certificate error: CRL has expired.

50013

Certificate error: Certificate does not have 'before' field.

50014

Certificate error: Certificate does not have 'after' field.

50015

Certificate error: CRL does not have 'last update' field.

50016

Certificate error: CRL error in 'next update' field.

50017

Certificate error: Out of memory while reading certificate.

50018

Certificate error: Depth zero self signed certificate.

50019

Certificate error: Self signed certificate in chain.

50020

Certificate error: Unable to get issuer certificate locally.

50021

Certificate error: Unable to verify the first certificate.

50022

Certificate error: Certificate chain too long.

50023

Certificate error: Certificate revoked.

50024

Certificate error: Invalid Certificate Authority.

50025

Certificate error: Path length exceeded.

50026

Certificate error: Invalid certificate purpose.

50027

Certificate error: Certificate not trusted.

50028

Certificate error: Certificate rejected.

50029

Certificate error: Subject issuer mismatch.

50030

Certificate error: Authority and subject key identifier mismatch.

50031

Certificate error: Authority and issuer serial number mismatch.

50032

Certificate error: Key usage does not include certificate signing.

50050

Certificate error: Application verification failure.

 

Winsock Errors

Value

Description

10004

Interrupted function call. A blocking operation was interrupted by a call to WSACancelBlockingCall.

10009

Generic error for invalid format, bad format.

10013

Permission denied. An attempt was made to access a socket in a way forbidden by its access permissions. An example is using a broadcast address for "sendto" without broadcast permission being set using setsockopt (SO_BROADCAST).

10014

Bad address. The system detected an invalid pointer address in attempting to use a pointer argument of a call. This error occurs if an program passes an invalid pointer value, or if the length of the buffer is too small. For instance, if the length of an argument which is a struct sockaddr is smaller than sizeof(struct sockaddr).

10022

Invalid argument. Some invalid argument was supplied (for example, specifying an invalid level to the setsockopt function). In some instances, it also refers to the current state of the socket - for instance, calling accept on a socket that is not listening.

10024

Too many open files. Too many open sockets. Each implementation may have a maximum number of socket handles available, either globally, per process or per thread.

10025

The IP address provided is not valid or the host specified by the IP does not exist.

10038

Socket operation on a non-socket. An operation was attempted on something that is not a socket. Either the socket handle parameter did not reference a valid socket, or for select, a member of an fd_set was not valid.

10048

Address already in use. Only one usage of each socket address (protocol/IP address/port) is normally permitted. This error occurs if a program attempts to bind a socket to an IP address/port that has already been used for an existing socket, or a socket that wasn't closed properly, or one that is still in the process of closing. For server programs that need to bind multiple sockets to the same port number, consider using setsockopt(SO_REUSEADDR). Client programs usually need not call bind at all - connect will choose an unused port automatically.

10049

Cannot assign requested address. The requested address is not valid in its context. Normally results from an attempt to bind to an address that is not valid for the local machine, or connect/sendto an address or port that is not valid for a remote machine (e.g. port 0).

10050

Network is down. A socket operation encountered a dead network. This could indicate a serious failure of the network system (the protocol stack that the WinSock DLL runs over), the network interface, or the local network itself.

10051

Network is unreachable. A socket operation was attempted to an unreachable network. This usually means the local software knows no route to reach the remote host.

10052

Network dropped connection on reset. The host you were connected to crashed and rebooted. May also be returned by setsockopt if an attempt is made to set SO_KEEPALIVE on a connection that has already failed.

10053

Software caused connection abort. An established connection was aborted by the software in your host machine, possibly due to a data transmission timeout or protocol error.

10054

Connection reset by peer. An existing connection was forcibly closed by the remote host. This normally results if the peer program on the remote host is suddenly stopped, the host is rebooted, or the remote host used a "hard close" (see setsockopt for more information on the SO_LINGER option on the remote socket.)

10057

Socket is not connected. A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using sendto) no address was supplied. Any other type of operation might also return this error - for example, setsockopt setting SO_KEEPALIVE if the connection has been reset.

10058

Cannot send after socket shutdown. A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call. By calling shutdown a partial close of a socket is requested, which is a signal that sending or receiving or both has been discontinued.

10060

Connection timed out. A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

10061

Connection refused. No connection could be made because the target machine actively refused it. This usually results from trying to connect to a service that is inactive on the foreign host - i.e. one with no server program running.

10063

Specified host name is too long.

10064

Host is down. A socket operation failed because the destination host was down. A socket operation encountered a dead host. Networking activity on the local host has not been initiated. These conditions are more likely to be indicated by the error WSAETIMEDOUT.

10065

No route to host. A socket operation was attempted to an unreachable host. See WSAENETUNREACH

10091

Network subsystem is unavailable. This error is returned by WSAStartup if the Windows Sockets implementation cannot function at this time because the underlying system it uses to provide network services is currently unavailable.

10093

Successful WSAStartup not yet performed. Either the program has not called WSAStartup or WSAStartup failed. The program may be accessing a socket which the current active task does not own (i.e. trying to share a socket between tasks), or WSACleanup has been called too many times.

10094

Graceful shutdown in progress. Returned by recv, WSARecv to indicate the remote party has initiated a graceful shutdown sequence.

11001

Host not found. No such host is known. The name is not an official hostname or alias, or it cannot be found in the database(s) being queried. This error may also be returned for protocol and service queries, and means the specified name could not be found in the relevant database.

11002

Authoritative host not found. This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. A retry at some time later may be successful.