Also, function TWebConnection.SendSync(Data: String): boolean;
is never called from the modified DXISAPI. It is just for I believe
the HEAD command. (I know Length(Data) can return wrong info.)
Advertising
Best Regards,
SZ
On 11/22/06, Fastream Technologies <[EMAIL PROTECTED]> wrote:
> Hello,
>
> Could you look at the new code below:
>
> procedure TWebConnection.ConnectionDataSentISAPI(Sender : TObject;
> Error : WORD);
> begin
> sendError := Error;
> sendComplete := true;
> end;
>
> function TWebConnection.SendSync(Data: String): boolean;
> begin
> Result := SendSync(PChar(Data), Length(Data));
> end;
>
> function TWebConnection.SendSync(Data: PChar; DataLen: Integer): boolean;
> var
> Count: integer;
> error: integer;
> offset: integer;
> Msg: TMsg;
> begin
> packetLen := DataLen;
> packetSentLen := 0;
> offset := 0;
> sendComplete := false;
>
> if FTerminated or
> (State <> wsConnected) then
> begin
> Result := false;
> Exit;
> end;
>
> while (offset < DataLen) do
> begin
> sendError := 0;
> sendComplete := false;
> Count := Send(Data + offset, DataLen - offset);
>
> Result := Count > 0;
>
> if not Result then
> begin
> error := WSAGetLastError();
> Result := false;
> Exit;
> end;
>
> while((not FTerminated) and (not sendComplete) and
> (State = wsConnected)) do
> begin
> if GetMessage(Msg, 0, 0, 0) = true then
> begin
> DispatchMessage(Msg);
> end;
> end;
>
> DataSent := DataSent + Count;
> offset := offset + Count;
> end;
>
> Result := sendError <> 0;
>
> if(FTerminated or
> (State <> wsConnected)
> ) then
> begin
> Result := false;
> end;
> end;
>
> It works with debug compile when even NO breakpoints are set but does
> not work with release build of the server. FYI, here is the hierarchy
> of the classes:
>
> THttpConnection-->TWebConnection->httpServerClientClass
>
> Best Regards,
>
> SZ
>
> On 11/21/06, Francois PIETTE <[EMAIL PROTECTED]> wrote:
> > >I do not think the issue understood the same here and there. Why is
> > > the Count = -1 then?
> >
> > When you call Send, passing a number of bytes and send is not able to send
> > it without blocking and non-blocking mode is active, then send returns -1 to
> > tell you it can't do what you asked. Nothing is sent. WSAGetLastError tells
> > you what exactly happended.
> >
> > > What should one do to have the sync method work?
> >
> > ICS doesn't use blocking mode. Trying to change that without knowing exactly
> > what you are doing will result in unexpected results - as you can see.
> >
> > You'd better design your code to use non blocking mode.
> > If ISAPI is what you want, have a look at IcsIsap1.pas in the demos.
> >
> > --
> > Contribute to the SSL Effort. Visit http://www.overbyte.be/eng/ssl.html
> > --
> > [EMAIL PROTECTED]
> > 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