[EMAIL PROTECTED] wrote: > as you see, the pop component is not connected when i do the connect > cmd. that's the strange thing, the connection is closed but the > component is not in a ready state.
Sorry, now I recall that there is a BUG in the component since a long time!! I fighted for getting this fixed, however the bug is still present. What happens in your case is that GMX doesn't send a response to the QUIT command but closes the connection at once. The bug is the "Special processing for Quit" below, comment that out and rebuild all. procedure TCustomPop3Cli.TriggerRequestDone(Error: Word); begin ==> (* { Special processing for Quit (Roger Morton 24-12-99) } if FRequestType = pop3Quit then begin if FWaitingOnQuit then { When the second RqDone arrives (from WSocketSessionClosed), } { treat it as a normal event by setting a zero Error code } Error := 0 else begin { When the first RqDone arrives, set the FWaitingOnQuit flag so } { we're ready to handle a second RqDone. } { Take no other action (in particular, we don't advise the user } { that the first RqDone has happened) } FWaitingOnQuit := True; Exit; end; { Fall down here for all normal RqDone, and after the second RqDone } { following a Quit } FWaitingOnQuit := False; end; ==> *) This code prevents that RequestDone fires in case the server doesn't send a response on the Quit command, and thus the Pop3State is never reset properly. After you outcommented this code try the little test program below, don't run it w/o a break point since it would reconnect in a loop infinitely. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Pop3Prot, StdCtrls; const WM_RECONNECT = WM_USER + 1; type TForm1 = class(TForm) Button1: TButton; Pop3Cli1: TPop3Cli; procedure Pop3Cli1RequestDone(Sender: TObject; RqType: TPop3Request; Error: Word); procedure Button1Click(Sender: TObject); protected procedure WmReconnect(var Msg: TMessage); Message WM_RECONNECT; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Pop3Cli1.Connect; end; procedure TForm1.WmReconnect(var Msg: TMessage); begin Pop3Cli1.Connect; end; procedure TForm1.Pop3Cli1RequestDone(Sender: TObject; RqType: TPop3Request; Error: Word); begin case RqType of pop3Connect : if (Error = 0) then TPop3Cli(Sender).Quit; pop3Quit : begin { Regardless of Error or not Error } if TPop3Cli(Sender).Connected then TPop3Cli(Sender).Abort // No problem here since the server sent the response else // Post a custom message if you want to reconnect PostMessage(Handle, WM_RECONNECT, 0, 0); end; end; end; end. -- Arno Garrels [TeamICS] http://www.overbyte.be/eng/overbyte/teamics.html > > > > AG> [EMAIL PROTECTED] wrote: >>> procedure TMailAlert.Pop3ClientRequestDone; >>> begin >>> if (FPop.connected) and (CheckError) then begin >>> FPop.quit; >>> exit; >>> end; >>> >>> ... >>> >>> what could be the cause that the component is not ready after the >>> error ? > > AG> After sending command Quit you should receive a server response. > AG> When it's received you may either close or abort the connection > AG> yourself or wait until the server drops the connection. > AG> Anyway start next connection attempt only when you are not > connected, > AG> means after SessionClosed fired. > > AG> -- > AG> Arno Garrels > > > > > -- > Mit freundlichen Grüßen > [EMAIL PROTECTED] > mailto:[EMAIL PROTECTED] -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be