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" <[email protected]>
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