Hi All!

Per Francois' private reply, I coded the following for my problem:

function TWebConnection.SendSync(Data: PChar; DataLen: Integer): integer;
begin
        MessageBox(0, Data, Data, MB_OK); // for debug

        Pause();

        Result := WSocket_send(HSocket,
                    Data,
                    DataLen,
                    0);

        Resume();
end;

Now, even though the MessageBox shows the correct ASCII/HTML data with 
header, the socket shows garbage with SocketSpy:

06.10.2005 10:54:14 Connection Opened

06.10.2005 10:54:14 From Local

GET /index.php HTTP/1.1..Host: localhost:81..User-Agent: Mozilla/5.0
(Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511
Firefox/1.0.4..Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5..Accept-Language:
en-us,en;q=0.5..Accept-Encoding: gzip,deflate..Accept-Charset:
ISO-8859-1,utf-8;q=0.7,*;q=0.7..Keep-Alive: 300..Connection:
keep-alive..Referer: http://localhost:81/....

06.10.2005 10:54:21 From Remote

°S»...¹..à..Dæ..Dë..İæ...à..øü!."[½.........................................................................°S».`1».....o1».Ê.

Any idea why this happens?

Best Regards,

SubZ

----- Original Message ----- 
From: "Fastream Technologies" <[EMAIL PROTECTED]>
To: "ICS support mailing" <twsocket@elists.org>
Sent: Wednesday, October 05, 2005 3:46 PM
Subject: [twsocket] Sync THttpConnection derivative


> Hello,
>
> I know most of you are very inclined to say that "sync is no good!" but it
> is not that simple. I have licensed code from BPDX.com for ISAPI and ISAPI
> filters andt hese units (more than 100k!) need to read, write and alter
> header or an existing THttpConnection derivative class. Starting with
> writing, I wrote the below function:
>
> function TWebConnection.SendSync(Data: PChar; DataLen: Integer): integer;
> var
>        Count: integer;
> begin
>        if FTerminated then
>        begin
>                Result := 0;
>                Exit;
>        end;
>
>        fDataLen := DataLen;
>        fTotalSentDataLen := 0;
>        //OldDataAvailable := FOnDataAvailable;
>        //OldSendData := FOnSendData;
>        //OldDataSent := FOnDataSent;
>        FOnDataAvailable := InternalDataAvailable;
>        FOnSendData := ConnectionSendDataISAPI;
>        FOnDataSent := nil;
>        DoneFlag := false;
>
>        ISAPIDownloadPauseDelay;
>
>        Count := Send(Data, DataLen);
>        Result := Count;
>
>        if (Result = 0) or FTerminated then
>        begin
>                Result := 0;
>                Exit;
>        end;
>
>        if WaitUntilReady(DoneFlag) <> 0 then
>                Result := 0
>        else
>        begin
>                DataSent := DataSent + Count;
>                FOnDataAvailable := nil;
>                FOnSendData := nil;
>                FOnDataSent := nil;
>        end;
> end;
>
> InternalDataAvailable, and WaitUntilReady are the same as Francois'.
>
> procedure TWebConnection.ConnectionSendDataISAPI(Sender: TObject;
> BytesSent:
> Integer);
> begin
>        fTotalSentDataLen := fTotalSentDataLen + BytesSent;
>
>        if fTotalSentDataLen >= fDataLen then
>                DoneFlag := true;
> end;
>
> So far so good but when I launch many client threads to the PHP5ISAPI.dll
> script, in a few seconds it gives access violation in kernel32.dll! I
> think
> considering also the logic of ISAPI filters, we still need sync functions
> in
> parallel. Do you see the bug above?
>
> Regards,
>
> SubZ
>
> -- 
> 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