Ir para conteúdo
  • Cadastre-se

Recommended Posts

Postado

Prezados,
Estou tentando enviar uma NF-e para o ambiente de homologação de RS, porém ocorre o erro abaixo:
Erro HTTP: 500
URL: https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
Network subsystem is unusable

Estou usando a seguinte configuração:

  • Geral.SSLLib := libOpenSSL;
  • Geral.SSLCryptLib := cryOpenSSL;
  • Geral.SSLHttpLib := httpOpenSSL;
  • Geral.SSLXmlSignLib := xsLibxml2;
  • SSL.SSLType := LT_TLSv1_2;

OBSERVAÇÃO: Estou utilizando a versão 1.1.1.10 (x86) do OpenSSL.


Somente consegui enviar a NF-e quando mudo a configuração para:
Geral.SSLHttpLib := httpIndy;

Não consegui identificar a razão de não estar funcionando com OpenSSL para RS, mas funcionar com o Indy. Conseguiriam ajudar ?

  • Fundadores
Postado

No meu último teste da noite (reiniciando a máquina a cada teste)... notei que o problema ocorre na primeira consulta... mas após tentar novamente, passa a funcionar... 

 

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Consultores
Postado
12 horas atrás, Daniel Simoes disse:

No meu último teste da noite (reiniciando a máquina a cada teste)... notei que o problema ocorre na primeira consulta... mas após tentar novamente, passa a funcionar... 

 

Aqui fiz a mesma coisa com um certificado vencido. Notei que usando CNG a primeira tentativa também gera erro. Embora seja por outro motivo, duas exceptions em sequência:

//Retorno usando CNG...

---------------------------
Debugger Exception Notification
---------------------------
Project ACBrNFe_Exemplo.exe raised exception class EACBrWinReqResp with message 'Falha Enviando a Requisição. Erro: 12030 - A conexão com o servidor foi redefinida ou encerrada, ou um protocolo SSL incompatível foi encontrado'.
---------------------------
Break   Continue   Copy   Help   
---------------------------

---------------------------
Debugger Exception Notification
---------------------------
Project ACBrNFe_Exemplo.exe raised exception class EACBrDFeException with message 'Erro Interno: 12030
Erro HTTP: 0
URL: https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
Erro: 12030 - A conexão com o servidor foi redefinida ou encerrada, ou um protocolo SSL incompatível foi encontrado
'.
---------------------------
Break   Continue   Copy   Help   
---------------------------

Depois desse primeiro erro, ao fazer consultas subsequentes eu recebo o 403 normalmente.

O estranho é que em produção isso não acontece.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Fundadores
Postado

Se for um simples "retry" poderíamos fazer um Workaround (POG), para o componente tentar transmitir até 3 vezes, antes de estourar o erro para a aplicação...

Mas vamos investigar mais um pouco, para compreender melhor o que pode estar ocorrendo

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Consultores
Postado
10 minutos atrás, danieloliveira-mm disse:

Bom dia, testei no programa exemplo NFe -Lazarus/windows 32bit, e não tive esse erro.

@Daniel Simoes seus testes foram com Lazarus? Aqui no Lazarus win 32 eu também não consegui reproduzir. Só no Delphi.

Possível problema ansi/utf8?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado
12 minutos atrás, Daniel Simoes disse:

sim, Lazarus

20 minutos atrás, danieloliveira-mm disse:

Consegui reproduzir o erro 

Estranho... aqui roda sem erro algum, no Lazarus 4.4 compilando para win32 ou para win64.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

@José Barbosa você ainda está com problemas? Aqui de repente parou de gerar o erro.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado
4 minutos atrás, Calmeida79 disse:

Mudei para  Wincry e sempre na segunda tentativa passa... 

Esse comportamento nos nossos testes aconteceu até mesmo com OpenSSL. Sempre funciona no segundo teste.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Membros Pro
Postado

eu uso o acbrmonitor 32 bits ultimo e dá erro na primeira tentativa em homologacao apenas... vai explicar... 

  • Consultores
Postado
45 minutos atrás, Daniel Simoes disse:

@EMBarbosa, o que acha de criarmos uma propriedade em DFe, de quantas tentativas precisamos fazer na conexão, antes de Elevar uma exceção ?

Temos uma configuração semelhante no webservice. Acho que pode funcionar.

Mas continuamos sem entender a raiz do problema. E se outras tentativas subsequente voltarem a dar erro, vai ficar na tentativa e erro.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

ACBr\Fontes\Terceiros\synalist\httpsend.pas

Identifiquei que o problema no FSock que esta destruido na primeira vez:

Fiz uma medida de contenção, esta funcionando.

if FSock.Socket = INVALID_SOCKET then
    FSock.CreateSocket;

function THTTPSend.InternalDoConnect(needssl: Boolean): Boolean;
begin
  Result := False;

  for var liTentativas := 1 to 3 do
  begin
    try
      FSock.CloseSocket;
      Sleep(300);

      if FSock.Socket = INVALID_SOCKET then
        FSock.CreateSocket;

      if FSock.LastError <> 0 then
        Continue;

      FSock.Bind(FIPInterface, cAnyPort);

      if FSock.LastError <> 0 then
        Continue;

      FSock.Connect(FTargetHost, FTargetPort);
      if FSock.LastError <> 0 then
      begin
        Sleep(500);
        Continue;
      end;

      if needssl then
      begin
        FSock.SSL.SNIHost := FTargetHost;
        FSock.SSLDoConnect;

        if FSock.LastError <> 0 then
        begin
          FSock.CloseSocket;
          Sleep(500);
          Continue;
        end;
      end;

      FAliveHost := FTargetHost;
      FAlivePort := FTargetPort;

      Result := True;
      Break;
    except
      FSock.CloseSocket;
      Sleep(500);
    end;
  end;
end;


 

  • Consultores
Postado

Boa tarde, o método relatado está diferente do que eu tenho no trunk2, mas irei avaliar sua medida de contenção

function THTTPSend.InternalDoConnect(needssl: Boolean): Boolean;
begin
  Result := False;
  FSock.CloseSocket;
  FSock.Bind(FIPInterface, cAnyPort);
  if FSock.LastError <> 0 then
    Exit;
  FSock.Connect(FTargetHost, FTargetPort);
  if FSock.LastError <> 0 then
    Exit;
  if needssl then
  begin
    if (FSock.SSL.SNIHost='') then
      FSock.SSL.SNIHost:=FTargetHost;
    FSock.SSLDoConnect;
    FSock.SSL.SNIHost:=''; //don't need it anymore and don't wan't to reuse it in next connection
    if FSock.LastError <> 0 then
      Exit;
  end;
  FAliveHost := FTargetHost;
  FAlivePort := FTargetPort;
  Result := True;
end;

 

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.