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.)

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

Reply via email to