sgcWebSockets 2026.4

· Versioni

Rad Studio

[+] : Aggiunto supporto per Rad Studio 13.1: la nuova piattaforma WinARM64EC è supportata.
[+] : Nuovo TsgcWSFirewall component: firewall completo per server WebSocket con blacklist/whitelist IP (supporto CIDR), protezione brute force con auto-ban, rilevamento SQL injection, rilevamento XSS, rate limiting e protezione da flood.
[+] : Nuovo Demo per Server Firewall: mostra le principali funzionalità del nuovo Firewall e si trova nella cartella: "Demos\04.WebSocket_Other_Samples\13.Firewall".
[+] : Nuovo Demo per HTTP/2 file di grandi dimensioni Transfer: demo server + client per testare download di file da oltre 1 GB tramite HTTP/2, si trova in "Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer".
[+] : Nuovo HTTP/2 debug logging: invio/ricezione frame, incrementi WINDOW_UPDATE, e le letture dei chunk di streaming vengono loggate tramite LoggerPro quando {$DEFINE SGC_DEBUG} è abilitato in sgcVer.inc.
[+] : Migliorato MQTT Client: nuova proprietà RcvMsg per ottenere accesso all'ultimo messaggio MQTT ricevuto dal server.
[+] : Nuovo TsgcTCPClient component: client TCP completo basato sull'infrastruttura del client WebSocket, che supporta TLS/SSL, proxy, watchdog e integrazione di protocolli. I protocolli (MQTT, AMQP, STOMP, WAMP, ecc.) possono ora utilizzare sia TsgcTCPClient sia TsgcWebSocketClient tramite la loro proprietà Client.
[+] : Nuovo OAuth2 Client Token Revocation supporto (RFC 7009): metodo Revoke() con eventi OnBeforeRevokeToken, OnAfterRevokeToken e OnRevokeTokenError.
[+] : Nuovo OAuth2 Client Token Introspection supporto (RFC 7662): metodo Introspect() con eventi OnBeforeIntrospectToken, OnAfterIntrospectToken e OnIntrospectTokenError.
[+] : Nuovo OAuth2 Client Device Authorization Grant (RFC 8628): grant type auth2DeviceCode con polling automatico, eventi OnDeviceCode e OnDeviceCodeExpired.
[+] : Nuovo OAuth2 Server Token Revocation endpoint (RFC 7009): /sgc/oauth2/revoke con evento OnOAuth2AfterRevokeToken.
[+] : Nuovo OAuth2 Server Token Introspection endpoint (RFC 7662): /sgc/oauth2/introspect con evento OnOAuth2AfterIntrospectToken.
[+] : Nuovo OAuth2 Server Device Authorization endpoint (RFC 8628): /sgc/oauth2/device e /sgc/oauth2/device/verify con eventi OnOAuth2DeviceAuthorization e OnOAuth2DeviceCodeVerification.
[+] : Nuovo OAuth2 Server gestione Resource Owner Password Credentials grant (password grant_type).
[+] : Nuovo OAuth2 Server token exchange Device Code (grant_type urn:ietf:params:oauth:grant-type:device_code).
[+] : Nuovo OAuth2 Client DPoP supporto (RFC 9449): token con vincolo sender tramite DPoPOptions con signing ES256/RS256, generazione automatica di JWT DPoP proof, calcolo JWK thumbprint (RFC 7638), e gestione retry DPoP-Nonce.
[+] : Nuovo OAuth2 Client DPoP metodi: GetDPoPProof() per richieste di risorse, GetDPoPJWKThumbprint() per la verifica del binding del token.
[+] : Nuovo OAuth2 Server DPoP supporto (RFC 9449): validazione DPoP proof, binding del token con JWK thumbprint, emissione token_type DPoP e evento OnOAuth2ValidateDPoP.
[+] : Migliorato Deflate extension: la velocità è stata migliorata specialmente per messaggi piccoli. (Grazie a Michael per la correzione).
[+] : Nuovo TsgcWebView2 component: wrapper VCL visuale per Microsoft Edge WebView2 con navigazione, JavaScript (async/sync/init script), gestione cookie, controllo download, gestione profilo, stampa, audio/mute, gestione certificati, menu contestuali, favicon, mapping virtual host, cattura screenshot e oltre 20 eventi. Supporta Delphi 7 fino a Delphi 13.
[+] : Nuovo Demo per WebView2 Browser: mostra navigazione, esecuzione JavaScript, cookie, stampa, mute, cancellazione dati, mapping virtual host e logging eventi. Si trova in "Demos\50.Other\WebView2_Browser".
[+] : Nuovo Gemini API: integrazione Google Gemini con Content Generation (con streaming), Vision, Structured JSON Output, Tool Utilizza (function calling), Token Counting, Embeddings e listing dei Model.
[+] : Nuovo DeepSeek API: integrazione DeepSeek con Chat Completions (con streaming), Vision, Tool Utilizza (function calling) e listing dei Model.
[+] : Nuovo Ollama API: integrazione LLM locale Ollama con Chat Completions (con streaming), gestione modelli (show, pull, delete, list tags) ed Embeddings.
[+] : Nuovo Grok API: integrazione xAI Grok con Chat Completions (con streaming), Vision, Tool Utilizza (function calling) e listing dei Model.
[+] : Nuovo Mistral API: integrazione Mistral AI con Chat Completions (con streaming), Vision, Structured JSON Output, Tool Utilizza (function calling), Embeddings e listing dei Model.

[*] : Risolto streaming HTTP/2 lato server per risposte di grandi dimensioni: elimina i crash out-of-memory quando si servono file di grandi dimensioni e riduce la memoria di picco del server.
[*] : Risolto riallocazione della memoria HTTP/2 lato client durante la ricezione di risposte di grandi dimensioni: il buffer payload ora utilizza una strategia di crescita di capacità con limiti specifici per piattaforma (128 MB su Win32, 1 GB su Win64) invece di riallocare a ogni frame DATA.
[*] : Risolto deadlock SSL di scrittura HTTP/2 su trasferimenti di file di grandi dimensioni: i WINDOW_UPDATE vengono ora messi in coda e flushati tra le iterazioni di lettura invece di essere scritti inline durante l'elaborazione dei frame, evitando che client e server si blocchino contemporaneamente su SSL_write.
[*] : Risolto overflow Integer HTTP/2 per file più grandi di 2 GB: modificati FrameLength, Offset, WindowSize, PayLoadCapacity, ReadWindowSize e gli accumulator di flow control da Integer a Int64.
[*] : Risolto stato dello stream HTTP/2: frame RST_STREAM ricevuti su stream inattivi (dopo la pulizia dello stream) ora passano correttamente in chiuso invece di sollevare un PROTOCOL_ERROR.
[*] : Risolto HPACK encoder: GetBestMatchingIndex ora restituisce correttamente i match name-only della static table, prevenendo errori di compressione su connessioni HTTP/2.
[*] : Risolto HPACK encoder: la maschera di bit Huffman utilizza la corretta operazione shift-left.
[*] : Risolto HPACK decoder: il conteggio dei byte e i calcoli dei byte disponibili tengono ora correttamente conto dell'offset del buffer.
[*] : Risolto SetBytesFromInteger: le estrazioni di byte intermedi sono ora mascherate con $FF per prevenire errori di range verificare su values like incrementi WINDOW_UPDATE.
[*] : Risolto incompatibilità di typed pointer durante la compilazione con l'opzione attiva "Typed @ operator".
[*] : Risolto JWT RSA signing: il parametro vLength in DoSignRSA era dichiarato come Integer invece di TIdNativeUInt, causando potenziale corruzione dello stack su piattaforme a 64 bit. (Grazie a Gabriel per la correzione).
[*] : Risolto troncamento di pointer Win64 in sgcHTTP_API_OpenAI: le chiamate mciSendCommand utilizzavano il cast Cardinal() sui pointer, sostituite con NativeUInt().
[*] : Risolto OAuth2 Server: corretto memory leak in SetOAuth2Options.
[*] : Risolto AWS Signature V4: corretto l'ordinamento dei parametri della query string nella canonical request.
[*] : Risolto access violation Bitfinex durante l'unsubscribe da un canale.
[*] : Risolto memory leak nei server Indy causati da lazy initialization non thread-safe dei campi FSpecifications e FConnections. I worker thread Indy concorrenti potevano fare race in creazione, lasciando istanze orfane.

[/] : L'evento OnMQTTPublishEx ha cambiato la firma aggiungendo un nuovo parametro aMessage di tipo TsgcWSMQTTMessage. 

.NET

[+] : Nuovo TsgcWSFirewall component: firewall completo per server WebSocket con blacklist/whitelist IP (supporto CIDR), protezione brute force con auto-ban, rilevamento SQL injection, rilevamento XSS, rate limiting e protezione da flood.
[+] : Nuovo Demo per Server Firewall: mostra le principali funzionalità del nuovo Firewall e si trova nella cartella: "Demos\04.WebSocket_Other_Samples\13.Firewall".
[+] : Nuovo Demo per HTTP/2 file di grandi dimensioni Transfer: demo server + client per testare download di file da oltre 1 GB tramite HTTP/2, si trova in "Demos\20.HTTP_Protocol\13.HTTP2_LargeFile_Transfer".
[+] : Nuovo OAuth2 Client Token Revocation supporto (RFC 7009): metodo Revoke() con eventi OnBeforeRevokeToken, OnAfterRevokeToken e OnRevokeTokenError.
[+] : Nuovo OAuth2 Client Token Introspection supporto (RFC 7662): metodo Introspect() con eventi OnBeforeIntrospectToken, OnAfterIntrospectToken e OnIntrospectTokenError.
[+] : Nuovo OAuth2 Client Device Authorization Grant (RFC 8628): grant type auth2DeviceCode con polling automatico, eventi OnDeviceCode e OnDeviceCodeExpired.
[+] : Nuovo OAuth2 Server Token Revocation endpoint (RFC 7009): /sgc/oauth2/revoke con evento OnOAuth2AfterRevokeToken.
[+] : Nuovo OAuth2 Server Token Introspection endpoint (RFC 7662): /sgc/oauth2/introspect con evento OnOAuth2AfterIntrospectToken.
[+] : Nuovo OAuth2 Server Device Authorization endpoint (RFC 8628): /sgc/oauth2/device e /sgc/oauth2/device/verify con eventi OnOAuth2DeviceAuthorization e OnOAuth2DeviceCodeVerification.
[+] : Nuovo OAuth2 Server gestione Resource Owner Password Credentials grant (password grant_type).
[+] : Nuovo OAuth2 Server token exchange Device Code (grant_type urn:ietf:params:oauth:grant-type:device_code).
[+] : Nuovo OAuth2 Client DPoP supporto (RFC 9449): token con vincolo sender tramite DPoPOptions con signing ES256/RS256, generazione automatica di JWT DPoP proof, calcolo JWK thumbprint (RFC 7638), e gestione retry DPoP-Nonce.
[+] : Nuovo OAuth2 Client DPoP metodi: GetDPoPProof() per richieste di risorse, GetDPoPJWKThumbprint() per la verifica del binding del token.
[+] : Nuovo OAuth2 Server DPoP supporto (RFC 9449): validazione DPoP proof, binding del token con JWK thumbprint, emissione token_type DPoP e evento OnOAuth2ValidateDPoP.
[+] : Migliorato Deflate extension: la velocità è stata migliorata specialmente per messaggi piccoli. (Grazie a Michael per la correzione).
[+] : Nuovo Gemini API: integrazione Google Gemini con Content Generation (con streaming), Vision, Structured JSON Output, Tool Utilizza (function calling), Token Counting, Embeddings e listing dei Model.
[+] : Nuovo DeepSeek API: integrazione DeepSeek con Chat Completions (con streaming), Vision, Tool Utilizza (function calling) e listing dei Model.
[+] : Nuovo Ollama API: integrazione LLM locale Ollama con Chat Completions (con streaming), gestione modelli (show, pull, delete, list tags) ed Embeddings.
[+] : Nuovo Grok API: integrazione xAI Grok con Chat Completions (con streaming), Vision, Tool Utilizza (function calling) e listing dei Model.
[+] : Nuovo Mistral API: integrazione Mistral AI con Chat Completions (con streaming), Vision, Structured JSON Output, Tool Utilizza (function calling), Embeddings e listing dei Model.

[*] : Risolto streaming HTTP/2 lato server per risposte di grandi dimensioni: elimina i crash out-of-memory quando si servono file di grandi dimensioni e riduce la memoria di picco del server.
[*] : Risolto riallocazione della memoria HTTP/2 lato client durante la ricezione di risposte di grandi dimensioni: il buffer payload ora utilizza una strategia di crescita di capacità con limiti specifici per piattaforma (128 MB su Win32, 1 GB su Win64) invece di riallocare a ogni frame DATA.
[*] : Risolto deadlock SSL di scrittura HTTP/2 su trasferimenti di file di grandi dimensioni: i WINDOW_UPDATE vengono ora messi in coda e flushati tra le iterazioni di lettura invece di essere scritti inline durante l'elaborazione dei frame, evitando che client e server si blocchino contemporaneamente su SSL_write.
[*] : Risolto overflow Integer HTTP/2 per file più grandi di 2 GB: modificati FrameLength, Offset, WindowSize, PayLoadCapacity, ReadWindowSize e gli accumulator di flow control da Integer a Int64.
[*] : Risolto stato dello stream HTTP/2: frame RST_STREAM ricevuti su stream inattivi (dopo la pulizia dello stream) ora passano correttamente in chiuso invece di sollevare un PROTOCOL_ERROR.
[*] : Risolto HPACK encoder: GetBestMatchingIndex ora restituisce correttamente i match name-only della static table, prevenendo errori di compressione su connessioni HTTP/2.
[*] : Risolto HPACK encoder: la maschera di bit Huffman utilizza la corretta operazione shift-left.
[*] : Risolto HPACK decoder: il conteggio dei byte e i calcoli dei byte disponibili tengono ora correttamente conto dell'offset del buffer.
[*] : Risolto SetBytesFromInteger: le estrazioni di byte intermedi sono ora mascherate con $FF per prevenire errori di range verificare su values like incrementi WINDOW_UPDATE.
[*] : Risolto incompatibilità di typed pointer durante la compilazione con l'opzione attiva "Typed @ operator".
[*] : Risolto JWT RSA signing: il parametro vLength in DoSignRSA era dichiarato come Integer invece di TIdNativeUInt, causando potenziale corruzione dello stack su piattaforme a 64 bit. (Grazie a Gabriel per la correzione).
[*] : Risolto troncamento di pointer Win64 in sgcHTTP_API_OpenAI: le chiamate mciSendCommand utilizzavano il cast Cardinal() sui pointer, sostituite con NativeUInt().
[*] : Risolto OAuth2 Server: corretto memory leak in SetOAuth2Options.
[*] : Risolto access violation Bitfinex durante l'unsubscribe da un canale.

[*] : Risolto memory leak nei server Indy causati da lazy initialization non thread-safe dei campi FSpecifications e FConnections. I worker thread Indy concorrenti potevano fare race in creazione, lasciando istanze orfane.