Resume HTTP Post / upload con Indy

Estoy tratando de reanudar una carga usando indy (HTTP Post), el código se ve así (usando Delphi 2010, Indy 10.4736):

 IdHttp.Head('http://localhost/_tests/resume/large-file.bin');
 ByteRange           := IdHttp.Response.ContentLength + 1;

 // Attach the file to post/upload
 Stream              := TIdMultipartFormDataStream.Create;
 with Stream.AddFile('upload_file', 'D:\large-file.bin', 'application/octet-stream') do
 begin
      HeaderCharset  := 'utf-8';
      HeaderEncoding := '8';
 end;    // with

 with IdHTTP do
 begin
      IOHandler.LargeStream           := True;

      with Request do
      begin
           ContentRangeStart          := ByteRange;
           ContentRangeEnd            := (Stream.Size - ByteRange);
           ContentLength              := ContentRangeEnd;
           ContentRangeInstanceLength := ContentLength;
      end;    // with

      Post('http://localhost/_tests/resume/t1.php', Stream);
 end;    // with

pero el currículum de carga no funciona:

Miré el código de Indy, parece que esta función en IdIOHandler.pas

TIdIOHandler.Write ()

siempre trata con secuencias / archivos completos (ya que el parámetro ASize: TIdStreamSize parece ser siempre 0, lo que según el código significa enviar el archivo / secuencia completo).

Esto evita que indy reanude la carga.

Mi pregunta es: ¿es posible evitar enviar el archivo completo?

Establecer el rango de contenido no cambió nada. También modifiqué el código de Indy (3 líneas modificadas) para hacer que Indy obedezca al rango de contenido / posición de transmisión, pero es defectuoso e Indy siempre termina colgando en IdStackWindows.pas debido a un tiempo de espera infinito aquí:

TIdSocketListWindows.FDSelect ()

Respuestas a la pregunta(2)

Su respuesta a la pregunta