"1408F10B: rutinas SSL: SSL3_GET_RECORD: llamada de número de versión incorrecta:" en Indy

Tengo una aplicación web que hace frecuentesTIdHTTP llamadas a la API de Google Analytics (alrededor de 25,000-50,000 por día). De vez en cuando, las llamadas a la API fallan con el mensaje de error en la línea de asunto (con poca frecuencia, menos de 1 de cada 1000 veces). Nunca he podido encontrar un patrón para que suceda. Y volver a intentar la llamada fallida generalmente funciona. Entonces parece completamente al azar.

Tengo la última versión de openssl (1.0.2.1 - 20/03/2015). Y la última versión de Indy (archivos de código fuente del 01/07/2015).

A continuación se muestra el código fuente básico para realizar estas llamadas.

Alguien tiene alguna idea de lo que podría ser?

¿Hacer dos llamadas simultáneas a la API afectaría las cosas (esto está teniendo lugar en una aplicación web multiproceso)?

IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
IdSSLIOHandlerSocket1.PassThrough := True;
IdHTTP := TIdHTTP.create(nil);
IdHTTP.reusesocket := rsTrue;
IdSSLIOHandlerSocket1.reusesocket := rsTrue;
idhttp.handleredirects := True;
with IdSSLIOHandlerSocket1 do begin
  SSLOptions.Method := sslvTLSv1_2;
  SSLOptions.SSLVersions := [sslvTLSv1_2];
  SSLOptions.VerifyMode := [];
  SSLOptions.VerifyDepth := 2;
end;
with IdHTTP do begin
  IOHandler := IdSSLIOHandlerSocket1;
  ProxyParams.BasicAuthentication := False;
  Request.UserAgent := 'EmbeddedAnalytics API Interface';
  Request.ContentType := 'text/html';
  request.connection := 'close';
  Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
  Request.BasicAuthentication := False;
  Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
  HTTPOptions := [hoForceEncodeParams];
  Request.AcceptEncoding := 'gzip,deflate';
  Request.CustomHeaders.Add('Accept-Language: en-us,en;q=0.5');
  idhttp.Request.CustomHeaders.Add('Authorization: Bearer '+FToken);
end;
idhttp.get(':https://www.googleapis.com/analytics/v3/data/realtime?ids=..........');

Actualización 1 actualizar algunas líneas de código para:

SSLOptions.Method := sslvSSLv3;
SSLOptions.SSLVersions := [sslvSSLv3];

Funciona. Monitorearé y veré si los errores SSL desaparecen.

Solución Resulta que los cambios a sslVSSLv3 lo arreglaron. ¡Ya no recibo los errores! Esto es algo sorprendente, ya que la mayoría de los demás servicios están adoptando TLS en su lugar.

Respuestas a la pregunta(3)

Su respuesta a la pregunta