A continuación tienes la lista completa de nuevas funcionalidades y correcciones de errores incluidas en sgcWebSockets 4.4.5:
[+] : Nuevo componente TsgcHTTP_OAuth2_Server, implementación de servidor del protocolo OAuth2; permite autorizar y emitir Access Tokens a clientes OAuth2.
[+] : Nueva demo que muestra cómo activar OAuth2 en los componentes servidor (en la carpeta Demos\20.HTTP_Protocol\02.OAuth2_Authentication).
[+] : Mejorado el cliente Azure IoT MQTT: ahora DeviceToCloud permite enviar Propiedades en el mensaje (parejas clave-valor).
[+] : Nueva propiedad HTTPClientOptions en TsgcHTTP_OAuth2_Client, permite personalizar el cliente HTTP al solicitar un nuevo token.
[+] : Nueva propiedad BindingOptions en el servidor HTTP.SYS, permite configurar si el servidor configura el certificado SSL al arrancar (requiere permisos de administrador) o no. Por defecto está habilitada.
[+] : Nuevo evento "OnBeforeBinding" en el servidor HTTP.SYS, permite personalizar las URLs que serán reservadas por el servidor.
[+] : Mejorado TsgcWebSocketClient_WinHTTP, nueva propiedad Options.FragmentedMessages que funciona como en TsgcWebSocketClient.
[+] : Mejorado TsgcWebSocketClient_WinHTTP, nuevo evento OnFragmented.
[+] : Nueva propiedad ConnectHeaders en TsgcWSPClient_STOMP, permite enviar cabeceras personalizadas en el método connect.
[*] : Corregido error de puntero inválido cuando NotifyEvents = neAsynchronous y se llamaba a CheckSynchronize mientras el evento se procesaba. (Gracias a Dirk por avisar).
[*] : Corregido error al procesar mensajes fragmentados: el primer fragmento se sobrescribía cuando llegaba el segundo. (Gracias a Patrik por avisar).
[*] : Corregido error en TsgcWebSocketClient: cuando había una desconexión, los hilos internos se detenían, pero este método se invocaba varias veces en algunos casos.
[*] : Corregido posible Thread-Lock cuando NotifyEvents = neAsynchronous, la conexión se había desconectado y había mensajes pendientes de procesar.
[*] : Corregido error de Access Violation al ejecutar el método "Start" cuando el cliente/servidor ya estaba destruido.
[*] : Corregido error en TsgHTTP_OAuth2: tras recibir el authorization code, el valor de state no se comparaba con el enviado; ahora, si no coincide, se devuelve un error.
[*] : Corregido error en el cliente Telegram: el hilo de lectura no arrancaba tras conectarse a los servidores de Telegram.
[*] : Corregido error en el cliente Telegram: el Title del mensaje de chat no se descodificaba correctamente. (Gracias a Hyeonwoo por avisar).
[*] : Corregidos warnings al compilar desde Rad Studio XE8 hasta 10.1 Berlin.
[*] : Corregido error en los servidores Indy: si la conexión ya estaba cerrada pero el buffer aún tenía datos por procesar, el hilo no terminaba y consumía toda la CPU.
[*] : Corregido error en el servidor HTTP.SYS: si el evento OnHTTPRequest no estaba asignado, no había respuesta del servidor; ahora devuelve un error 404.
[*] : Corregido error en el servidor HTTP.SYS al descodificar los métodos HTTP: solo se admitían GET y POST.
[*] : Corregido error en el servidor HTTP.SYS: memory leak al destruir una conexión en el objeto TsgcWSMSG.
[*] : Corregido error en el servidor HTTP.SYS: excepción de puntero inválido al intentar liberar un objeto durante la desconexión.
[*] : Corregido error en el servidor HTTP.SYS: cuando había un error al arrancar el servidor, el mensaje de error real no se mostraba al usuario.
[*] : Corregido error en el componente TsgcWSAPI_SocketIO al inicializar la conexión cuando ioAPI0 estaba seleccionado como API. (Gracias a Jean por avisar).
[*] : Corregido error al conectarse cuando WriteTimeOut > 0 en sistemas operativos que no son Windows; ahora esta propiedad solo aplica a Windows.
[/] : El componente TsgHTTP_OAuth2 se ha renombrado a TsgcHTTP_OAuth2_Client.
[/] : La unidad sgcHTTP_OAuth.pas se ha renombrado a sgcHTTP_OAuth_Client.pas.
[/] : La unidad sgcHTTP_OAuth2.pas se ha renombrado a sgcHTTP_OAuth2_Client.pas.
