Hello all,

I'm currently working system for streaming (DVB-)Recordings via http/get
with the ICS V5 http server and delphi 7. 

Most of these recordings are way bigger than 2 GB (MaxInt). The problem is
easy to replicate: use VLC (videolan.org) to open a http-Stream on the http
server demo and set the clientcnx.document to a TS/MPG recording bigger than
2GB, it simply won't play, smaller recordings play without problems.

I believe all versions of ICS have these problems (at least with Delphi 7
but I don't think integer or longword are suddenly Int64 in newer delphi

The following routines have problems:

- THttpRangeStream.AddPartStream(Value: TStream; AStartPos, AEndPos:
  Integer should be THttpRangeInt

- THttpRangeStream.Read(var Buffer; Count: Longint): Integer;
  Result := FSize - FPosition; // don't -> Overflow, use seperate Variable
-> THttpRangeInt 

  ActSize := min(Count - DataRead,  Rec.Size - (ActOffset));  //Overflow
because min only handles Integer.

- THttpConnection.ConnectionDataSent(Sender : TObject; Error : WORD);
    Count  : Integer;
    ToSend : Integer;  // Overflow in both use THttpRangeInt instead.

- procedure ParseRangeString(var FromStr : String; var ToStr   : String;
const Value : String);
  Don't use StrToInt, Use StrToInt64

- THttpRangeList.InitFromString(AStr: String);
  Don't use StrToInt, Use StrToInt64

After these corrections, ICS works flawless, even jumping around in a 16 GB
HDTV Recording works without glitches. I simply love ICS! ;)


To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to