[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: FTPAPI FTP_exitproc
Helge,
Yes, this is the expected behavior. when you register an exitProc with
FTP_DEFAULT_SOCKET it will apply to all new connections that are
created thereafter. Unless this is what you want, you should not use
the FTP_DEFAULT_SOCKET.
FTP_Conn() has actually been split into two separate procedures for
exactly this reason. The new procedures are FTP_Open() which
establishes the socket number, and FTP_Login() which does the login
portion of the FTP protocol. In current versions of FTPAPI, FTP_Conn()
actually just calls these two procedures in succession.
So you should change your code to:
FtpSess = FTP_Open(FtpRmtSys: FTPPort: FTPCnnTio);
FTP_exitProc( FtpSess: FTP_EXTLOG: %paddr(FTPExitProc):
%addr(LastMsg));
if FTP_Login( FtpSess: FtpUsr: FtpPwd ) < 0;
// error occurred.
endif;
Now the exit procedure will only fire for this particular session, and
will not apply to any others.
You'll want to call FTP_Quit() when this FTP session is done (unless
FTP_open failed for some reason.)
On 2/12/2014 8:53 AM, Helge Bichel wrote:
Dear Group.
I have some problems getting the FTP_exitproc working across FTP
session within the same 5250 session.
Having:
(1) FTP_exitProc( FTP_DEFAULT_SOCKET : FTP_EXTLOG :
%paddr(FTPExitProc) : %addr(LastMsg) );
(1) FtpSess =
FTP_Conn(FtpRmtSys:FtpUsr:FtpPwd:FTPPort:FTPCnnTio);
Starting the FTP_exitproc with FTP_DEFAULT_SOCKET before FTP_conn is
for getting the connection message from the FTP server
Connecting to host xxx.xxx.xxx.xxx at address
xxx.xxx.xxx.xxx using port 21.
220 <<<Connect:Enterprise UNIX 2.4.04 Build 134 >>> at
espdev01 FTP server ready. Time = 07:19:29
> USER
yyyyyyyy
331 Password required for
yyyyyyyy
> PASS
**********
230 Connect:Enterprise UNIX login ok, access
restrictions apply.
this would be missing if I used
(2) FtpSess =
FTP_Conn(FtpRmtSys:FtpUsr:FtpPwd:FTPPort:FTPCnnTio);
(2) FTP_exitProc( FtpSess : FTP_EXTLOG :
%paddr(FTPExitProc) : %addr(LastMsg) );
Now the problem:
Calling MyFTPPgmA
Using (1) causes problems if the FTP_Conn for some reason (server not
available, invalid pw etc.) fails.
The FTP_exitporoc is set at this time and does not get 'cleared'.
I think this is because I can't do a FTP_Quit since the session isn't
established.
Calling MyFTPPgmB
While still in the same 5250 session I call a different program using
the same setup (1) and connecting to another FTP server.
MyFTPPgmB crashes when doing the FTP_Conn. Reason is the FTP_exitproc
still pointing to the routine set by MyFTPPgmA.
The FTPExitProc in MyFTPPgmA writes to a file A and this routine
still is in effect when running MyFTPPgmB.
The required file A isn't open since MyFTPPgmB uses file B, not A..
To summarize the problem:
The FTP_exitproc set in one program 'hangs' when not doing a FTP_Quit
and that's seems not to be possible to do when FTP_Conn fails.
Hoping for a wise solution.
Best regards
Helge
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
[1]http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
References
1. http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------