Árvore de páginas

Correções

Ocorrência: Ao executar a função File2Printer em um AppServer em ambiente Linux headless enviando o parâmetro "-RFS", ele é ignorado na chamada feita ao executável da pdfprinter.

Solução: Adicionado o parâmetro na construção da chamada do comando da pdfprinter feita pela função File2Printer.

Chamado: DTAPPSRV-5057

Ocorrência: No envio da mensagem SMS_MENUADDITEM para o smartclient, o TMenuItem estava sem texto no menu causando a queda do smartclient

Solução : Foi feito uma verificação antes de enviar a mensagem ao smartclient derrubando assim a conexão caso o menu esteja com texto vazio

Chamado: DTAPPSRV-5114

Ocorrência : Queda do TOTVS Application Server com Access Violation em caso de chamadas da função manualjob() por mais de uma thread/processo simultaneamente.

Correção : Implementar mecanismo de proteção Thread-Safe para a função manualjob()

Chamado: DTAPPSRV-5159

Ocorrência: Queda / Access Violation no TOTVS Application Server, precedidas pelas mensagens de erro "Unlink Underflow on tClassInstance::delRef()" no log de console, em sequencia específica de uso de objetos JSON.

Solução: Refatoração do mecanismo de controle de alocação e referências de objetos JSON.Environment is empty".

Chamado: DTAPPSRV-5140

Ocorrência: Ao realizar a execução do LOGPROFILER, quando tinhamos uma mudança de variável de tipo objeto de classe para codeblock, o Application Server se encerrava.

Solução: Foi protegido e indicado no encerramento do programa a variável onde ocorria a mudança, sendo necessário a correção utilizando variáveis distintas.

Chamado: DTAPPSRV-5097

Ocorrência: Encerramento inesperado no Totvs Application Server, após o registro de uma ocorrëncia de erro "stack depth overflow in function ..."

Solução: A finalização de contexto do processo ao ser finalizado com esse erro foi corrigida, para nao derrubar o serviço.

Chamado: DTAPPSRV-5075

Ocorrência: Invasão de memória em cache de strings constantes do runtime da linguagem AdvPL ocasionavam queda do servidor de aplicação com ocorrências de "Access Violation on tIdentifier".

Correção : As invasões no cache eram causadas por acessos indevidos a strings constantes, corrigidas no runtime do AdvPL.

Chamado: DTAPPSRV-5006

Ocorrência : Uma falha no cache de constantes do runtime do AdvPL causava um comportamento inesperado na execução da função AdvPL ChangeQuery(), gerando queries sintaticamente inválidas para o banco de dados.

Correção: O cache de strings constantes do runtime do Advpl foi protegido e corrigido, e as operações que causavam anomalias de comportamento apareciam no log de console do TOTVS Application Server informando a mensagem "Cannot update a constant string".

Chamado: DTAPPSRV-5062

Ocorrência: Alteração no comportamento da função GetJsonText quando do valor nulo.

Correção: Mantido o comportamento original para retorna o texto "null" quando o conteúdo do elemento é nulo.

Chamado: DTAPPSRV-5024

Ocorrência: A função round(), quando utilizado com o segundo parâmetro negativo, não funciona da mesma maneira dos parâmetros positivos. Retornando um valor default de zero (0).

Solução: Analisado o problema e corrigido agora o segundo parâmetro fará o arredondamento tanto a esquerda (negativo), quanto a direita (positivo). Funcionando da mesma maneira.

Chamado: DTAPPSRV-5105

Ocorrência: Durante a compilação, o compilador não levava em consideração uma macro, deixando um warning de variável nunca usada.

Solução: Agora ele faz a varredura em macros para verificar se elas foram utilizadas e não informar mais o warning.

Chamado: DTAPPSRV-5021

Ocorrência: Erro -2 no uso da função SFTPUserPassFileDownload.

Solução: Alteração na biblioteca utiliza para conexão SFTP.

Chamado: DTAPPSRV-5003

Ocorrência: Encerramento inesperado do Application Server causada por erros de SSL.

Solução: Correção na implementação do SSL.

Chamado: DTAPPSRV-4127

Ocorrência: Exceção do servidor devido acesso à codeblock previamente removido.

Solução: Correção do runtime AdvPL em codeblock específico para limpar removidos.

Chamado: DTAPPSRV-4880

Ocorrência : Uso de localfiles=sqlite e falso positivo ao testar a existência de um arquivo em disco com o mesmo nome de um arquivo criado dentro do banco de dados db_sys\sysmte.db do sqlite.

Correção : O desvio para testar existência de arquivos no SQLITE deve ser feito internamente pelo Application Server apenas para testar a existência de indices ( .cdx / .idx ), caso contrário prevalesce apenas o retorno do sistema de arquivos.


Chamado: DTAPPSRV-5243

Ocorrência : Problema no arredondamento de números negativos, passando eles para Json.

Solução: Alterado a escrita de números negativos nos Json, utilizando a mesma para ambos.

Chamado: DTAPPSRV-4857

Ocorrência : Aumento de memória consumida pelo serviço do Totvs Application Server ao longo do uso do sistema, crescendo continuamente ao longo do uso do sistema.

Correção : Foram identificadas e corrigidas situações de retenção indevida de memória no runtime do AdvPL, relacionadas a execução de código em geral, objetos, classes e blocos de código.

Chamado: DTAPPSRV-4669

Ocorrência : O método AttachFile() da classe TMAILMESSAGE, em caso de falha na abertura do arquivo informado para ser anexado ao e-mail, interrompia a execução do programa Advpl com a ocorrência de erro "invalid handle used in file D:\appserver-19.3.1.x\lib_base\diskman.cpp at line 321", sem detalhes sobre a ocorrência ou a causa.

Correção : Foi implementado o tratamento de erro interno no método, para que uma ocorrência de falha de acesso ao arquivo anexo faça o método AttachFile() retornar o valor -1, indicando uma falha na execução, e no log de console do Totvs Application Server ( console.log ) será registrada uma mensagem de advertência com os detalhes da ocorrência -- arquivo envolvido e causa da falha de abertura, por exemplo :

[WARN ][SERVER] [tMsgMail::AddAttachment] File open error. Unable to attach file : D:\Protheus12\envp12127\anexo2.pdfError : Win : The process cannot access the file because it is being used by another process.

Chamado: DTAPPSRV-4716

Ocorrência: Access Violation no recebimento de emails quando o anexo está codificado como quoted-printable, mas a informação de codificação do anexo dentro da estrutura do email informa uso de codificação base64.

Correção : Caso seja recebido um e-mail com estas características, não será mais apresentada Access Violation no Application Server, porém o anexo será retornado ao Advpl com tamanho 0 ( zero bytes )

Chamado: DTAPPSRV-4665

Incidente: A classe TWSDLManager apresentava erro no parse de schemas que não declaram targetNamespace ou namespace.

Solução: Corrigido na classe TWSDLManager o parse de schemas.

Chamado: DTAPPSRV-4547

Ocorrência: Caso a TWSDLManager faça parse de um WSDL que faz import de tag binding, a classe não reconhece o binding e dá erro na parse. Caso seja chamado método SetPort e o Port não tiver sido processado, o AppServer dá access violation.

Correção: Corrigido o parse da TWSDLManager para tratar import de binding e a chamada do método SetPort.

Chamado: DTAPPSRV-4835

Ocorrência: A classe TWSDLManager apresenta erro de parse quando o WSDL que contém imports de WSDL com locations iguais mas com cases diferentes (por exemplo, http://www.url.com.br/service/import.wsdl e http://www.url.com.br/Service/import.wsdl).

Correção: Corrigido na classe TWSDLManager o import de WSDL.

Chamado: DTAPPSRV-5192

Melhorias

Solução: Atualização da biblioteca SQLITE

Chamado: DTAPPSRV-5151

Situação: Caso seja recebido um e-mail com estas características, não será mais apresentada Access Violation no Application Server, porém o anexo será retornado ao Advpl com tamanho 0 ( zero bytes )

Melhoria : Para permitir que o mecanismo de recebimento de emails recupere o anexo tratando o conteúdo como quoted-printable, em caso de falha na decodificação em base64, basta insrerir no appserver.ini, na seção [MAIL], a chave TryEncode=1

Chamado: DTAPPSRV-4665