Below a simple test program, if you don't have ICS-SSL exchange
TSslHttpCli by THttpCli. Does it work for you?

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OverbyteIcsWndControl, OverbyteIcsHttpProt, StdCtrls;

type
  TMyThread = class(TThread)
  public
    procedure Execute; override;
  end;
  TForm1 = class(TForm)
    SslHttpCli1: TSslHttpCli;
    SslHttpCli2: TSslHttpCli;
    btnAttachTothread: TButton;
    btnAttachtoMainThread: TButton;
    procedure btnAttachTothreadClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btnAttachtoMainThreadClick(Sender: TObject);
  private
    FThread : TMyThread;
  public
    { Public declarations }
  protected
    procedure WmAttachMain(var Msg: TMessage); message WM_USER + 3;  
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyThread }

procedure TMyThread.Execute;
var
    Msg: tagMsg;
begin
    while GetMessage(Msg, 0, 0, 0) do
    begin
        if Msg.message = WM_USER + 1  then
            TSslHttpCli(Msg.WParam).ThreadAttach
        else if Msg.message = WM_USER + 2 then
        begin
            TSslHttpCli(Msg.WParam).ThreadDetach;
            Postmessage(Form1.Handle, WM_USER + 3, Msg.WParam, 0);
        end
        else begin
            TranslateMessage(Msg);
            DispatchMessage(Msg);
        end;
    end;
    Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    FThread := TMyThread.Create(False);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
    PostThreadMessage(FThread.ThreadID, WM_QUIT, 0, 0);
end;

procedure TForm1.WmAttachMain(var Msg: TMessage);
begin
    TSslHttpCli(Msg.WParam).ThreadAttach;
end;

procedure TForm1.btnAttachtoMainThreadClick(Sender: TObject);
begin
    PostThreadMessage(FThread.ThreadID, WM_USER + 2, Integer(SslHttpCli1), 0);
    PostThreadMessage(FThread.ThreadID, WM_USER + 2, Integer(SslHttpCli2), 0);
end;

procedure TForm1.btnAttachTothreadClick(Sender: TObject);
begin
    SslHttpCli1.ThreadDetach;
    PostThreadMessage(FThread.ThreadID, WM_USER + 1, Integer(SslHttpCli1), 0);
    SslHttpCli2.ThreadDetach;
    PostThreadMessage(FThread.ThreadID, WM_USER + 1, Integer(SslHttpCli2), 0);
end;

end.

// DFM //

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 293
  ClientWidth = 426
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object btnAttachTothread: TButton
    Left = 38
    Top = 88
    Width = 127
    Height = 25
    Caption = 'AttachTothread'
    TabOrder = 0
    OnClick = btnAttachTothreadClick
  end
  object btnAttachtoMainThread: TButton
    Left = 38
    Top = 119
    Width = 127
    Height = 25
    Caption = 'AttachtoMainThread'
    TabOrder = 1
    OnClick = btnAttachtoMainThreadClick
  end
  object SslHttpCli1: TSslHttpCli
    LocalAddr = '0.0.0.0'
    ProxyPort = '80'
    Agent = 'Mozilla/4.0 (compatible; ICS)'
    Accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'
    NoCache = False
    ContentTypePost = 'application/x-www-form-urlencoded'
    MultiThreaded = False
    RequestVer = '1.0'
    FollowRelocation = True
    LocationChangeMaxCount = 5
    BandwidthLimit = 10000
    BandwidthSampling = 1000
    Options = []
    SocksAuthentication = socksNoAuthentication
    Left = 32
    Top = 36
  end
  object SslHttpCli2: TSslHttpCli
    LocalAddr = '0.0.0.0'
    ProxyPort = '80'
    Agent = 'Mozilla/4.0 (compatible; ICS)'
    Accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'
    NoCache = False
    ContentTypePost = 'application/x-www-form-urlencoded'
    MultiThreaded = False
    RequestVer = '1.0'
    FollowRelocation = True
    LocationChangeMaxCount = 5
    BandwidthLimit = 10000
    BandwidthSampling = 1000
    Options = []
    SocksAuthentication = socksNoAuthentication
    Left = 64
    Top = 36
  end
end


Fastream Technologies wrote:
> Hello,
> 
> ----- Original Message -----
> From: "Arno Garrels" <[EMAIL PROTECTED]>
> To: "ICS support mailing" <twsocket@elists.org>
> Sent: Thursday, June 08, 2006 7:48 PM
> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
> 
> 
>> Fastream Technologies wrote:
>>> Arno,
>>> 
>>> In the last code you sent, this problem STILL exists!
>> 
>> I'm afraid, the fix below is in the code since Monday.
> 
> Perhaps we need another -more comprehensive- fix. Francois, AFAIK you
> were able to reproduce the problem, right? Could you check with the
> latest code. Something must have gone bad because when I said it was
> fixed, it was fixed. 
> 
>> 
>>> The other
>>> problem was because of wrong package lib included in the project.
>> 
>> What "other problem" do you mean (sounds very mysterious to me)?
> 
> I mean the half downloads problem. That was because two ics packages
> were linked. :o( Sorry for bothering you guys. Your suggestion that
> the package was not good worked for me to find out...
> 
> Best Regards,
> 
> SZ
> 
>> 
>>> Sorry for that.
>>> 
>>> Best Regards,
>>> 
>>> SZ
>>> 
>>> ----- Original Message -----
>>> From: "Francois PIETTE" <[EMAIL PROTECTED]>
>>> To: "ICS support mailing" <twsocket@elists.org>
>>> Sent: Monday, June 05, 2006 2:35 PM
>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>> 
>>> 
>>>> Still one problem. Arno fixed it (He sent a private message to me).
>>>> Move the line
>>>>    FWndHandler := nil;                 // THIS ONE ADDED
>>>> from ThreadDetach to DeallocateHWnd so that the later looks like:
>>>> procedure TIcsWndControl.DeallocateHWnd;
>>>> begin
>>>>    if FHandle = 0 then
>>>>        Exit;              // Already done
>>>> 
>>>>    GWndHandlerPool.Lock;
>>>>    try
>>>>        FreeMsgHandlers;
>>>>        if Assigned(FWndHandler) and (FWndHandler.FMsgCnt <= 0) then
>>>>            GWndHandlerPool.FreeWndHandler(FWndHandler);
>>>>        FHandle     := 0;
>>>>        FWndHandler := nil;         // THIS ONE ADDED
>>>>    finally
>>>>        GWndHandlerPool.UnLock;
>>>>    end;
>>>> end;
>>>> 
>>>> Thank to Arno.
>>>> 
>>>> --
>>>> Contribute to the SSL Effort. Visit
>>>> http://www.overbyte.be/eng/ssl.html --
>>>> [EMAIL PROTECTED]
>>>> http://www.overbyte.be
>>>> 
>>>> 
>>>> 
>>>> ----- Original Message -----
>>>> From: "Francois PIETTE" <[EMAIL PROTECTED]>
>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>> Sent: Monday, June 05, 2006 1:11 PM
>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>> 
>>>> 
>>>>> Problem fixed !
>>>>> 
>>>>> In OverbyteIcsHttpProt.pas, add:
>>>>> 
>>>>> {$IFDEF COMPILER2_UP}
>>>>> procedure THttpCli.ThreadAttach;
>>>>> begin
>>>>>    inherited ThreadAttach;
>>>>>    FCtrlSocket.ThreadAttach;
>>>>> end;
>>>>> 
>>>>> procedure THttpCli.ThreadDetach;
>>>>> begin
>>>>>    inherited ThreadDetach;
>>>>>    FCtrlSocket.ThreadDetach;
>>>>> end;
>>>>> {$ENDIF}
>>>>> 
>>>>> Don't forget to add the declarations in the public section.
>>>>> 
>>>>> In OverbyteIcsWndControl, add a line in ThreadDetach so that it
>>>>> looks like:
>>>>> procedure TIcsWndControl.ThreadDetach;
>>>>> begin
>>>>>    if GetCurrentThreadID <> FThreadID then
>>>>>        raise EIcsException.Create('Cannot detach from another
>>>>> thread');    Self.DeallocateHWnd;
>>>>>    FWndHandler := nil;                 // THIS ONE ADDED
>>>>> end;
>>>>> 
>>>>> 
>>>>> In OverbyteIcsWSocket.pas, delete the declaration of
>>>>> TCustomWSocket.FThreadID.
>>>>> 
>>>>> That's it.
>>>>> Should work. At least it work in my small test prog:
>>>>> Create a form, drop a TButton, a TMemo and a THttpCli. Add the
>>>>> following code:
>>>>> 
>>>>> unit OverbyteIcsSimpleThread1;
>>>>> 
>>>>> interface
>>>>> 
>>>>> uses
>>>>>  Windows, Messages, SysUtils, Variants, Classes, Graphics,
>>>>> Controls, Forms,
>>>>>  Dialogs, StdCtrls, OverbyteIcsWndControl, OverbyteIcsWSocket,
>>>>>  OverbyteIcsHttpProt;
>>>>> 
>>>>> type
>>>>>  TWorkerThread = class(TThread)
>>>>>  public
>>>>>      FHttpCli : THttpCli;
>>>>>      procedure HttpCliRequestDone(Sender : TObject; RqType:
>>>>> THttpRequest; ErrCode : Word);
>>>>>      procedure Execute; override;
>>>>>      procedure ShowDoc;
>>>>>  end;
>>>>> 
>>>>>  TForm1 = class(TForm)
>>>>>    HttpCli1: THttpCli;
>>>>>    DoButton: TButton;
>>>>>    Memo1: TMemo;
>>>>>    procedure DoButtonClick(Sender: TObject);
>>>>>  private
>>>>>    FWorkerThread : TWorkerThread;
>>>>>  end;
>>>>> 
>>>>> var
>>>>>  Form1: TForm1;
>>>>> 
>>>>> implementation
>>>>> 
>>>>> {$R *.dfm}
>>>>> 
>>>>> procedure TWorkerThread.Execute;
>>>>> begin
>>>>>    FHttpCli.ThreadAttach;
>>>>>    FHttpCli.MultiThreaded := TRUE;
>>>>>    FHttpCli.URL           := 'http://localhost';
>>>>>    FHttpCli.RcvdStream    := TMemoryStream.Create;
>>>>>    FHttpCli.OnRequestDone := HttpCliRequestDone;
>>>>>    FHttpCli.GetASync;
>>>>>    FHttpCli.MessageLoop;
>>>>>    FHttpCli.ThreadDetach;
>>>>>    FHttpCli.MultiThreaded := FALSE;
>>>>> end;
>>>>> 
>>>>> procedure TWorkerThread.HttpCliRequestDone(Sender : TObject;
>>>>> RqType: THttpRequest; ErrCode : Word);
>>>>> begin
>>>>>    FHttpCli.RcvdStream.Seek(0, 0);
>>>>>    Synchronize(ShowDoc);
>>>>>    FHttpCli.RcvdStream.Free;
>>>>>    FHttpCli.RcvdStream := nil;
>>>>>    PostMessage(FHttpCli.Handle, WM_QUIT, 0, 0);
>>>>> end;
>>>>> 
>>>>> procedure TWorkerThread.ShowDoc;
>>>>> begin
>>>>>    Form1.Memo1.Lines.LoadFromStream(FHttpCli.RcvdStream);
>>>>> end;
>>>>> 
>>>>> procedure TForm1.DoButtonClick(Sender: TObject);
>>>>> begin
>>>>>    HttpCli1.ThreadDetach;
>>>>>    FWorkerThread                 := TWorkerThread.Create(TRUE);
>>>>>    FWorkerThread.FreeOnTerminate := TRUE;
>>>>>    FWorkerThread.FHttpCli        := HttpCli1;
>>>>>    FWorkerThread.Resume;
>>>>> end;
>>>>> 
>>>>> end.
>>>>> --
>>>>> [EMAIL PROTECTED]
>>>>> http://www.overbyte.be
>>>>> 
>>>>> 
>>>>> 
>>>>> ----- Original Message -----
>>>>> From: "Francois PIETTE" <[EMAIL PROTECTED]>
>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>> Sent: Monday, June 05, 2006 12:25 PM
>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>> 
>>>>> 
>>>>>> Yes, I found the problem. More complex to solve than what I
>>>>>> thought first.
>>>>>> 
>>>>>> --
>>>>>> [EMAIL PROTECTED]
>>>>>> http://www.overbyte.be
>>>>>> 
>>>>>> ----- Original Message -----
>>>>>> From: "Fastream Technologies" <[EMAIL PROTECTED]>
>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>> Sent: Monday, June 05, 2006 11:37 AM
>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>> 
>>>>>> 
>>>>>>> Francois,
>>>>>>> 
>>>>>>> Have you been able to reproduce the problem there?
>>>>>>> 
>>>>>>> Regards,
>>>>>>> 
>>>>>>> SZ
>>>>>>> 
>>>>>>> ----- Original Message -----
>>>>>>> From: "Fastream Technologies" <[EMAIL PROTECTED]>
>>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>>> Sent: Sunday, June 04, 2006 6:24 PM
>>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>>> 
>>>>>>> 
>>>>>>>> AFAIU, instead of FWindowHandle being defined as window, we now
>>>>>>>> have the
>>>>>>>> entire hierarchy being derived from a Twndcontrol which pools
>>>>>>>> and shares
>>>>>>>> the
>>>>>>>> windows. But I am clueless in terms of this bug as well. I
>>>>>>>> sent a private
>>>>>>>> email to Francois asking for consultancy about this.
>>>>>>>> 
>>>>>>>> Thanks anyway,
>>>>>>>> 
>>>>>>>> SZ
>>>>>>>> 
>>>>>>>> ----- Original Message -----
>>>>>>>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>>>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>>>> Sent: Sunday, June 04, 2006 6:06 PM
>>>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Fastream Technologies wrote:
>>>>>>>>>> Nothing changes. This is my second answer to this question as
>>>>>>>>>> sometimes my email server gets swamped :(...
>>>>>>>>>> 
>>>>>>>>>> I still get the exception even though the package compiles
>>>>>>>>>> with no errors.
>>>>>>>>> 
>>>>>>>>> Looks like a bit more complicated. Francois probably knows
>>>>>>>>> better how to fix it, I still haven't fully got the logic of
>>>>>>>>> the new version, sorry.
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Regards,
>>>>>>>>>> 
>>>>>>>>>> SZ
>>>>>>>>>> 
>>>>>>>>>> ----- Original Message -----
>>>>>>>>>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>>>>>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>>>>>> Sent: Sunday, June 04, 2006 5:31 PM
>>>>>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> Fastream Technologies wrote:
>>>>>>>>>>>> It is used here:
>>>>>>>>>>> 
>>>>>>>>>>> Yes I know, but what happens? As Francois already supposed
>>>>>>>>>>> it is in fact redefined and never assigned in
>>>>>>>>>>> TCustomWSocket. 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> ---
>>>>>>>>>>> Arno Garrels [TeamICS]
>>>>>>>>>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> To unsubscribe or change your settings for TWSocket mailing
>>>>>>>>>>> list please goto
>>>>>>>>>>> http://www.elists.org/mailman/listinfo/twsocket Visit our
>>>>>>>>>>> website at http://www.overbyte.be
>>>>>>>>> --
>>>>>>>>> To unsubscribe or change your settings for TWSocket mailing
>>>>>>>>> list please goto
>>>>>>>>> http://www.elists.org/mailman/listinfo/twsocket Visit our
>>>>>>>>> website at http://www.overbyte.be 
>>>>>>>> 
>>>>>>>> --
>>>>>>>> To unsubscribe or change your settings for TWSocket mailing
>>>>>>>> list please goto
>>>>>>>> http://www.elists.org/mailman/listinfo/twsocket Visit our
>>>>>>>> website at http://www.overbyte.be 
>>>>>>> 
>>>>>>> --
>>>>>>> To unsubscribe or change your settings for TWSocket mailing list
>>>>>>> please goto http://www.elists.org/mailman/listinfo/twsocket
>>>>>>> Visit our website at http://www.overbyte.be
>>>>>> 
>>>>>> --
>>>>>> To unsubscribe or change your settings for TWSocket mailing list
>>>>>> please goto http://www.elists.org/mailman/listinfo/twsocket
>>>>>> Visit our website at http://www.overbyte.be
>>>>> 
>>>>> --
>>>>> To unsubscribe or change your settings for TWSocket mailing list
>>>>> please goto http://www.elists.org/mailman/listinfo/twsocket
>>>>> Visit our website at http://www.overbyte.be
>>>> 
>>>> --
>>>> To unsubscribe or change your settings for TWSocket mailing list
>>>> please goto http://www.elists.org/mailman/listinfo/twsocket
>>>> Visit our website at http://www.overbyte.be
>> --
>> To unsubscribe or change your settings for TWSocket mailing list
>> please goto http://www.elists.org/mailman/listinfo/twsocket
>> Visit our website at http://www.overbyte.be
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to