Código aleatorio Indy ResponseCode = -1 / EIdSocketError Socket Error # 0 excepciones
Tengo un código de Delphi que básicamente carga archivos a remotoseguro servidor usandoIndy 10.4.704:
<code> IdHTTP := TIdHTTP.Create(nil); try TheCompressor := TIdCompressorZLib.Create(nil); TheSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil); with IdHTTP do begin HTTPOptions := [hoForceEncodeParams]; AllowCookies := True; HandleRedirects := True; ProtocolVersion := pv1_1; IOHandler := TheSSL; Compressor := TheCompressor; end; // with // Get upload resume offset try IdHttp.Head('https://www.domain.com/my-file.bin'); if (IdHttp.Response.ResponseCode <> 404) And (IdHttp.Response.ContentLength >= 0) then StartPos := IdHttp.Response.ContentLength else StartPos := 0; except StartPos := 0; end; // try/except // Upload File TheFile := TFileStream.Create(FileName, fmOpenRead OR fmShareDenyWrite); RangeStream := TIdHTTPRangeStream.Create(TheFile, StartPos, -1, True); try if (RangeStream.ResponseCode = 206) then IdHTTP.Post(https://www.domain.com/upload.php', RangeStream); finally RangeStream.Free; end; // try/finally finally FreeAndNil(IdHTTP); end; // try/finally </code>
El problema es esealgunas veces el código falla con Indy lanzando unError EIdSocketError Socket # 0 excepciónidHTTP.ResponseCode es -1)
Dada mi mala conexión a Internet, lancé una instancia de Windows EC2 y probé mi código en ella (la instancia de Windows se ejecuta en la nube, así que asumo la conexiónno es un problema), pero tengo el mismo problema!
El error parece ser aleatorio, a veces la carga funciona, a veces no. Depuré con TidLogFile, todo lo que pude encontrar es algo como esto:
<code>Stat Connected. Sent 4/26/2012 4:18:42: POST /app/upload.php... Sent 4/26/2012 4:18:42: <uploaded_file_data_here> Stat Disconnected. </code>
¿Alguien sabe lo que está causando esto / cómo solucionar esto?
EDITAR
I rastreó la excepción de nuevo a TIdSSLIOHandlerSocketOpenSSL. Busqué en Google mucho, parece que no es un error de SSL.