Android: Bug com ThreadSafeClientConnManager fazendo download de imagens

Para o meu aplicativo atual, coleciono imagens de diferentes "fornecedores de eventos" na Espanha.

  Bitmap bmp=null;
  HttpGet httpRequest = new HttpGet(strURL);

  long t = System.currentTimeMillis();
  HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
  Log.i(TAG, "Image ["+ strURL + "] fetched in [" + (System.currentTimeMillis()-t) + "ms]");

     HttpEntity entity = response.getEntity();
     InputStream instream = entity.getContent();
     bmp = BitmapFactory.decodeStream(instream);

     return bmp;

No entanto, ao baixar imagens do salir.com, recebo a seguinte saída do logcat:

13970     Gallery_Activity  I  Fetching image 2/8 URL: http://media.salir.com/_images_/verticales/a/0/1/0/2540-los_inmortales_la_trattoria-marc_aureli_27_29_no.jpg
13970     ServiceHttpRequest  I  Image [http://media.salir.com/_images_/verticales/a/0/1/0/2540-los_inmortales_la_trattoria-marc_aureli_27_29_no.jpg] fetched in [146ms]
13970     skia  D  --- decoder->decode returned false

Uma pesquisa por essa mensagem de erro não forneceu muitos resultados úteis.

Alguém tem uma idéia do que o problema poderia ser?

Gracias!

Atualização 1:

Depois de perguntar um pouco mais e testar coisas diferentes, descobri que o problema parece estar em outro lugar. Mesmo que minha saída de logcat diz

13970     ServiceHttpRequest  I  Image [http://media.salir.com/_images_/verticales/a/0/1/0/2540-los_inmortales_la_trattoria-marc_aureli_27_29_no.jpg] fetched in [146ms]
getContentLength(): 93288

qual é o comprimento correto da imagem em bytes, parece que há algo errado com o fluxo ou a conexão HTTP.

Meu código original (acima) está aproveitando oThreadSafeClientConnManager. Se eu substituí-lo com apenas um simplesURLConnection funciona perfeitamente:

URL url = new URL(strURL);
URLConnection conn = url.openConnection();
conn.connect();
InputStream instream = conn.getInputStream();
bmp = BitmapFactory.decodeStream(instream);

Então, eu estou querendo saber agora por que o meuThreadSafeClientConnManager trabalhar perfeitamente (pelo menos parece que faz) com todas as minhas outras conexões (principalmente trocandoJSONObjects) mas não com imagens de alguns sites específicos (por exemplo, salir.com - para a maioria dos outros sites, porém). Existe um parâmetro HTTP que está faltando?

Minha configuração atual é:

HttpParams parameters = new BasicHttpParams();
HttpProtocolParams.setVersion(parameters, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(parameters, HTTP.UTF_8);
HttpProtocolParams.setUseExpectContinue(parameters, false); // some webservers have problems if this is set to true
ConnManagerParams.setMaxTotalConnections(parameters, MAX_TOTAL_CONNECTIONS);
HttpConnectionParams.setConnectionTimeout(parameters, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(parameters, SOCKET_TIMEOUT);

SchemeRegistry schReg = new SchemeRegistry();
schReg.register(new Scheme("http", 
     PlainSocketFactory.getSocketFactory(), HTTP_PORT));

ClientConnectionManager conMgr = new ThreadSafeClientConnManager(parameters,schReg);

DefaultHttpClient http_client = new DefaultHttpClient(conMgr, parameters);

Atualização 2:

Agora, o estranho é que isso realmente funciona com oThreadSafeClientConnManager -as vezes-. Se eu continuar tentando baixar a imagem e decodificá-la por algumas vezes, ela pode funcionar depois de 15 a 30 tentativas. Muito estranho.

Espero que haja uma solução para isso, já que eu preferiria usar oThreadSafeClientConnManager ao invés deURLConnection.

Atualização 3:

Como sugerido por Mike Mosher abaixo, parece que usandoBufferedHttpEntity aerro de decodificação não aparece mais. No entanto, agora, embora com menos frequência do que antes, eu receboSkImageDecoder::Factory returned null erro.

questionAnswers(11)

yourAnswerToTheQuestion