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