******************************************************* sgcWebSockets .NET ******************************************************* [*] : Bug [+] : New [-] : Deleted [/] : Breaking changes Versions -------- 2024.9.0: 2024 October [*] : Fixed Bug Indy Server when assigning a OpenSSL IOHandler that inherits from TIdServerIOHandlerSSLBase, the SSLOptions property was not found. (Thanks to Robert for letting me know). [*] : Fixed Bug Indy function TIdServerInterceptLogFileConnection.GetConnectionID when connection is not assigned. [*] : Fixed Bug Indy when getting the Certificate Signature and openSSL was greater than 1.1.1. [*] : Fixed Bug Indy when using openSSL API 3.0.0 (libraries < 3.2) and trying to load the private key with a password. 2024.8.0: 2024 September [*] : Fixed Bug Internal Compiler Directive replaced {IFDEF WINDOWS} by {IFDEF MSWINDOWS}. [*] : Fixed Bug Indy Server, when the property Specifications.RFC6455 was disabled, the TCP Connections where not accepted. [*] : Fixed Memory Leak using SChannel as IOHandler. (Thanks to Kenza for letting me know). [*] : Fixed Memory Leaks on Indy Server Component. 2024.7.0: 2024 August [+] : Improved OAuth2 Client, new grant type: auth2ResourceOwnerPassword which supports the Resource Owner Password Flow. [+] : Improved OpenSSL, the openSSL libraries for openSSL 3.3 have been compiled and are now available. [*] : Fixed Bug sgcIndy in the method X509_get_version when using openSSL 1.1.1 or 3.0.0. [*] : Fixed Bug sgcIndy "Error getting SSL method." [*] : Fixed Bug SChannel, Range Check Error may be rised in the method TSSLInfo.Read. [*] : Fixed Bug SChannel, if the connection wasn't closed gracefully, the event OnDisconnect was not called. [*] : Fixed Bug HeartBeat, when the type was hbtOnlyIfNoMsgRcvInterval, the event OnBeforeHeartBeat was called even if the ping was not sent. 2024.6.0: 2024 June [+] : Improved sgcIndy, added the latests X509 SSL Errors. [*] : Fixed Bug WriteAndWaitData method didn't exit if the connection was already disconnected and it was waiting till the end of the timeout. [*] : Fixed Bug Indy IOCP Server, when using plain TCP connection, the event OnTCPConnect was not called until some data was received. 2024.5.0: 2024 May [+] : Improved Binance API Client, NewOrder now supports trailing orders. [+] : Improved OAuth2 Server, new property OAuth2Options.PKCE (Proof Key for Code Exchange) which is an extension of the OAuth 2.0 protocol that helps prevent code interception attacks. [+] : Improved OAuth2 Client, new value "oauth2CodePKCE" in the property OAuth2Options.GrantType, which enables PKCE on client side. This option is usually used in native and mobile applications. [+] : Improved OAuth2 Client, when using "oauth2CodePKCE", set the LocalServerOptions.Port = 0 to use a random port when starting the local server. [*] : Fixed Bug Indy IOCP when trying to send a message and the connection was already closed. [*] : Fixed Bug Indy IOCP a potential deadlock while using the broadcast method. [*] : Fixed Bug Indy IOCP, socket error 10035 was not handled. 2024.4.0: 2024 April [*] : Fixed Bug HTTP/2 Client when closing connection, a thread exception may be raised. [*] : Fixed Bug HTTP/2 decoding the StreamIdentifier. [*] : Fixed Bug MQTT Client, when receiving disconnect message (mqtt5 only), the OnMQTTDisconnect event was called twice. [*] : Fixed Bug casting some internal variables with the wrong type. [*] : Fixed Bug Indy Server, the function to obtain the websocket sub-protocols supported hasn't a default value. 2024.3.0: 2024 March [+] : Updated the OpenSSL 1.1.1 libraries to the version 1.1.1w. This is the latest release for the Api 1.1.1. [+] : Updated the OpenSSL 3.0.0 libraries to the version 3.0.13. [+] : Updated the OpenSSL 3.1.0 libraries to the version 3.1.5. (These are currently the recommended openSSL libraries). [+] : Updated the OpenSSL 3.2.0 libraries to the version 3.2.1. [+] : Updated the Telegram libraries to the version 1.8.25. (Windows, Linux64 and OSX). [*] : Fixed Bug IOCP Indy Server, if there was an error while waiting for more data, the connection was not disconnected. [*] : Fixed Bug IOCP Indy Server, if the HeartBeat Timeout was exceeded, the connection was not disconnected. [*] : Fixed Bug IOCP Indy Server, if the message received was greater than the internal buffer, the connection was closed. [*] : Fixed Bug Disconnect exceptions were raised when writing binary data, but the RaiseDisconnectExceptions property was disabled. 2024.2.0: 2024 February [+] : Improved Binance API, added 1 second interval to KLine intervals. [+] : Improved openSSL error message, now if there is any error loading the openSSL library, the API version is shown. [+] : Improved TsgcWebSocketHttpServer, new property HttpOptions.PoolOfThreads, allows to handle the HTTP Requests in a pool of threads. [*] : Fixed Bug Disconnect exceptions were raised when writing the socket, but the RaiseDisconnectExceptions property was disabled. [*] : Fixed Bug when WatchDog.Monitor was enabled, the internal connection may not be destroyed properly. [*] : Fixed Bug removed the Critical Sections when reading SChannel Data because are not needed and slow down the write methods. [*] : Fixed Bug sgcWebSockets.js conflict with jquery with the event function. The Event function has been renamed to sgcCustomEvent. 2024.1.0: 2024 January [+] : Added support for .NET 8.0 [+] : Added the Ping method to the WebSocket Server component. [*] : Fixed Bug when Compression and Fragmented messages were activated, the fragmented message was not compressed. [*] : Fixed Bug HTTP/2 Indy Server, validating the stream identifiers must only be done in the headers or push-promise frames. [*] : Fixed Bug HTTP/2 Indy Server, more data frames were sent than the receive windows frames allowed. [*] : Fixed Bug Memory Leak when the Indy Server was using IOCP as IOHandler. 2023.8.0: 2023 November [+] : Updated the Indy version to the latest. [+] : Improved Indy Servers, there is a new property "OpenSSL_Options.CurveList", which allows to set the curve list names for the openSSL library. [+] : Improved HTTP Forwarding to handle the 302 response code. [*] : Fixed Bug OAuth2 Server, when client-secret is not valid, the server returned the correct value in the error message (Thanks to Jan to let me know). [*] : Fixed Bug when using OnBeforeForwardHTTP event, the forward value was not cleared for every new request. [*] : Fixed Bug Indy Server, when stopping the server an access violation may raise if the internal Scheduler is not assigned. (Thanks to Francesco to let me know). [*] : Fixed Bug Indy Server, when stopping the server, the internal SSL Handler was not destroyed. [*] : Fixed Bug Indy Server, authentication basic was failing to catch the authorization header. (Thanks to Francesco to let me know). [*] : Fixed Bug Server HTTP/2 protocol, ContentText was not preserving the correct charset. (Thanks to Francesco to let me know). [*] : Fixed Bug Server Components when Extensions.PerMessage_Deflate was enabled and Options.FragmentedMessages = frgAll, the message was uncompressed 2 times. 2023.7.0: 2023 September [*] : Fixed Bug HTTP/2 Server, Range Check Error. [*] : Fixed Bug HTTP/2 protocol, error decoding empty string. [*] : Fixed Bug SChannel error "invalid pointer" when using Start/Stop threaded methods. 2023.6.0: 2023 August [*] : Fixed Bug OAuth2 Server, the url parameters were not decoded. 2023.5.0: 2023 June [*] : Fixed Bug Indy EPOLL Server, Deadlock while stopping the server on Linux64. [*] : Fixed Bug EPOLL Server, the OnDisconnect event was not called in some cases (Thanks to Andrea for the fix). [*] : Fixed Bug IOCP Server, the OnDisconnect event was not called in some cases (Thanks to Andrea for the fix). [*] : Fixed Bug IOCP Server, using SSL connections, some internal events were not linked properly. 2023.4.0: 2023 May [+] : Added TsgcWSConnectionServer.HeadersRequest property to get the HandShake sent by the client. [+] : Improved OAuth2 Server, there is a new event "OnOAuth2Unauthorized" which is called when a request is not authorized and will be disconnected here you can configure which endpoints require OAuth2 Authentication and which not. [+] : Improved JWT Server, there is a new event "OnJWTUnauthorized" which is called when a request is not authorized and will be disconnected, here you can configure which endpoints require JWT Authentication and which not. [+] : Improved HTTP Server, new method ProcessPostStream, call this method inside OnCommandGet if you want to process the file uploaded before send a response to the peer. [*] : Fixed Bug TsgcWebSocketServer, if a connection is closed with an error 10053 while is writing data, the thread freezes trying to closing the socket again. [*] : Fixed Bug TsgcWebSocketServer, if server receives an OPTIONS request while the Basic Authentication is enabled, the Server must not return a realm. Now the request is handled in the OnCommandOther event. [*] : Fixed Bug TsgcWSConnection.HeadersResponse, the value was not decoded properly. [*] : Fixed Bug OnHandshake event, the Headers modifications were not sent to the server. 2023.3.0: 2023 April [+] : Added support for .NET 7.0 [+] : Added Support for Linux64. [*] : Fixed Bug SChannel, the SSL Parameter parameter from CredentialsCallBack was not called properly. (Thanks to Stefan to let me know). [*] : Fixed Bug IOCP IOHandler, invalid pointer when destroying the internal connection. [*] : Fixed Bug Range Check Error using SChannel as TLS Provider. [*] : Fixed Bug OAuth2 Server processing the Token request, the server returns in some cases invalid_request. [*] : Fixed Bug TsgcWebSocketClient, Stop and Disconnect methods were not properly called. [*] : Fixed Bug WebSocket and Server clients, the event OnHandshake was not raised. 2023.2.0: 2023 February [*] : Fixed Bug MQTT Demo, publish method took the channel name from the subscribing channel textbox instead of the publishing channel textbox. [*] : Fixed Bug when connection was closed pending asynchronous messages were not removed from internal queue. (Thanks to Martijn to let me know). [*] : Fixed Bug Binance, added millisecond resolution to the timestamp signature field. (Thanks to Gorazd to let me know). [*] : Fixed Bug Binance Futures connecting to user data stream. 2023.1.0: 2023 January [+] : Updated Telegram libraries to version 1.8.9. [+] : Improved Telegram Client, when there is an error while loading the library on MacOS, now the error message with the reason is caught. [+] : Improved Indy Server, new property SSLOptions.OpenSSL_Options.CipherList to customize the Cipher List. [*] : Fixed Bug IOCP IOHandler and SSL, if there was an error while writing data, the connection was not closed. [*] : Fixed Bug Indy server, error: list index out of bounds while handling heartbeat timeout. [*] : Fixed Bug Telegram Client, error loading library on OSX64. [*] : Fixed Bug WebSocket Server when Basic Authorization was enabled, when a request has not authorization or it was wrong, the server disconnected the connection without asking the realm. 2022.10.0: 2022 December [+] : Improved WhatsApp API to version 15.0. [+] : Improved WhatsApp API, new method "UploadMedia" to upload images, documents... to whatsapp servers. [+] : Improved RTCMultiConnection API, updated to the latest socket.io version. [+] : Improved WebRTC Server API, new property "CloseSessionOnHangup", if disabled, when a peer close a session, the other peer is not disconnected (by default is true). [*] : Fixed Bug SChannel Win64, access violation while starting ssl connection. (Thanks to Anders to let me know). [*] : Fixed Bug RTCMultiConnection Screen Sharing Demo, the connection may fail in some cases. [*] : Fixed Bug IOCP IOHandler, on heartbeat timeout exceeded, the connection was not closed. 2022.9.0: 2022 November [+] : Improved IOCP on Windows Indy Servers (WebSocket and HTTPs Servers). The IOHandler has been rewritten from scratch and performance has been optimized. [+] : Improved SChannel IOHandler, now implements SCH_CREDENTIALS instead of the deprecated SCHANNEL_CRED. [*] : Fixed Bug JWT, access violation on ES Algorithm when using openSSL 1.1 or 3.0. 2022.8.0: 2022 October [+] : Improved Server, there is a new property SSLOptions.VerifyCertificate_Options with 2 new options: FailIfNoCertificate (if the client doesn't provide a certificate the connection is closed) and VerifyClientOnce. [*] : Fixed Bug TURN Server, STUN binding requests were not relayed to the correct ip address. [*] : Fixed Bug TsgcWebSocketClient, when watchdog use Start method to reconnect it may occur in the middle of another reconnection, creating more than 1 thread trying to reconnect. [*] : Fixed Bug using HTTPUploadFiles, when receiving a filename with extended UTF8 characters, the filename was not decoded properly. 2022.7.0: 2022 September [+] : Improved WhatsApp API, added new methods to Send Local Files as a Message: SendFileDocument, SendFileImage, SendFileVideo... [+] : Improved WhatsApp API, new event OnBeforeSendMessage, this event is called before the message is sent to WhatsApp and allows to read/update the message in JSON format. [+] : Improved WhatsApp API, new method DownloadMedia to download media given an object id. [*] : Fixed Bug List Index out of Bounds accessing to count property of internal queue. [*] : Fixed Bug deleting websocket ping from internal queue after receiving a pong. 2022.6.0: 2022 July [+] : New WhatsApp Client, allows to send and receive messages, documents, images... using Whatsapp Cloud API. [+] : New WhatsApp Demo, shows how works the WhatsApp Cloud API: send messages, receive notifications... [*] : Fixed Bug sending Big Files through HTTP Protocol, out of memory error. [*] : Fixed Bug MQTT Client, Range Check Error while reading a published message. [*] : Fixed Bug when HTTPUploadFiles was enabled, the file received has 2 extra bytes. (Thanks to Allen to let me know). [*] : Fixed MemoryLeak when HTTPUploadFiles was enabled. [*] : Fixed Bug Socket.IO, the path was set after the /socket.io 2022.5.0: 2022 June [*] : Fixed Bug Numeric Overflow connecting to a MQTT 5.0 server. [*] : Fixed Bug RangeCheck error. [*] : Fixed Memory Leak TsgcUDPCLient and TsgcUDPServer, the property TLSOptions was not destroyed. [*] : Fixed Memory Leak TsgcSTUNClient, internal TCP client was not destroyed. [*] : Fixed Bug connecting to Socket.IO 4 Server. 2022.4.0: 2022 April [+] : ZLib has been updated to 1.2.12, includes the latest security fix (*only Enterprise Edition). [+] : New Event on Server components "OnHTTPUploadReadInput" to read the Input Values when a file is received. [*] : Fixed Bug Binance Client, the method "UnSubscribeKLine" didn't stop receiving KLine updates. [*] : Fixed Bug OAuth2 Client, after receiving a successful Access Token, sometimes a favicon request was processed as invalid. [*] : Fixed Bug using openSSL 3.0, access violation calling a deprecated method when an internal error occurs. 2022.3.0: 2022 March [+] : Improved Telegram API, updated to 1.8.1 version. [+] : Improved Telegram API, added support for Sponsored Messages. New method "getChatSponsoredMessage" to retrieve sponsored messages, the messages will be notified "OnMessageSponsored" event. [+] : Improved Telegram API, from 1.7.0 the sender_user_id is zero, there are 2 new objects to read the sender of the message: SenderChat and SenderUser. [+] : Improved Telegram API, new method SendInvoiceMessage allows bots to send invoice messages. [*] : Fixed Bug Sending HTTP/2 Response from server, the content was empty. 2022.2.0: 2022 February [+] : Added support for .NET 6.0 [*] : Fixed Bug Reading HTTP/2 StreamDependency as 31 bit value. [*] : Fixed Bug some compiler defines for OpenSSL 1.1 and 3.0 were not defined properly. [*] : Fixed Bug HTTP/2 and Firefox, an internal error closed the connection. [*] : Fixed Bug TsgcWebSocketClient, after calling TsgcWSConnection.Close, the OnDisconnect event was not fired. 2022.1.0: 2022 January [+] : Improved WebRTC Protocol, new property "WebRTC.IceServers" which allows to configure custom ICE Servers. [+] : Improved Telegram Client, Sending a message has a new parameter to send buttons requesting the phone number, location... (for bots only). [+] : Updated Telegram Libraries to 1.7.9 version to fix the error UPDATE_APP_TO_LOGIN when the user login using a phone. [+] : Improved Binance Client, now supports Binance.US API (WebSocket and REST APIs). [+] : Improved Binance Client, new property "Binance.ListenKeyOnDisconnect" allows to define if the ListenKey is deleted when client disconnects or not. [+] : Improved Binance Client, new property "Binance.UseCombinedStreams" if enabled, events are wrapped as follows: {"stream":"","data":}. [+] : Improved PDF Documentation: support for syntax highlighting, image compression, automatic hyphenation, embeded fonts and more. [+] : Improved HTML Help Documentation, now supports syntax highlighting. [*] : Fixed Bug using JWT CLient and openSSL 1.1 libraries. [*] : Fixed Bug Binance always make use of openSSL 1.0.2 instead of taking the configuration of TsgcWebSocketClient. [*] : Fixed Bug WebRTC Protocol, when a user disconnect from a channel other channels may be disconnected too. [*] : Fixed Bug MQTT Client when writing/reading had a high load of messages, the message may become corrupted in some cases. [*] : Fixed Bug Binance, if the event OnHTTPException wasn't handled, the exceptions weren't shown to the user. [*] : Fixed Bug WebSocket Server sending fragmented messages when compression was enabled. [*] : Fixed Bug when PerMessage_Deflate was enabled, while reading a compressed message, Z_BUF_ERROR may close the connection. [*] : Fixed Bug TsgcWebSocketClient, OnDisconnect event may not be called in some special cases. [*] : Fixed Bug WebSocket Server, if the property Active was set to True, when the server was already started, an access violation was raised. 4.5.4: 2021 November [+] : Added support for MacOS 64bits. [+] : Added support for nuget packages. [+] : Improved TLSOptions.Version property, now if the value is tlsUndefined (the default), the client will try to negotiate all possible TLS versions (from TLS 1.3 to TLS 1.0), before this change the TLS 1.0 was selected. [+] : Improved HTTPUploadFiles, now there are 2 new events: OnHTTPUploadBeforeSaveFile and OnHTTPUploadAfterSaveFile, allowing to know/modify the name of the file received. [+] : Improved openSSL configuration, if openSSL_Options.LibPath = oslpCustomPath then will set the openSSL libraries location to the value of OpenSSL_Options.LibPathCustom (Thanks to Matteo for the suggestion). [+] : Improved openSSL configuration, new property UnixSymLinks allows to disable the loading of SymLinks under Unix. Fixes the error "Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI." under MacOS Monterey. [+] : Improved openSSL error message "cannot load opensssl", now shows the path, methods not available and version. [+] : Improved Socket.IO API, added support for latest API 4. [*] : Fixed Bug Indy Servers, in some cases half-disconnected http connections may make use of the full cpu. (Thanks to Moacir to let me know). [*] : Fixed Bug when PerMessage_Deflate, handling a Z_BUF_ERROR message. [*] : Fixed Bug when PerMessage_Deflate, if an empty string or memory stream was sent, an error was raised. [*] : Fixed Bug when PerMessage_Deflate, if there was an internal error while inflating or deflating, the error message was not passed to the exception. [*] : Fixed Bug when PerMessage_Deflate, when inflating a stream, if the buffer wasn't big enough, the stream wasn't fully compressed. [*] : Fixed Bug TsgcWebSocketClient using plain TCP Protocol and TLS 1.3, the connection locks the thread during some seconds. [*] : Fixed Bug when the property HTTPUploadFiles.RemoveBoundaries was enabled, the filename were not extracted on older Delphi versions. [*] : Fixed Bug when the property HTTPUploadFiles.RemoveBoundaries was enabled, if the filename had spaces, the filename was not extracted completely. [*] : Fixed Bug MQTT Client read/write VarInteger values. [*] : Fixed Bug MQTT Client when publishing a message with PublishProperties, always sent the property TopicAlias = 1. [/] : The property TsgcWebSocketClient.Active now returns if the internal connection is Assigned or not. Before that, it called the Connected function of TCP Client. 4.5.3: 2021 October [+] : Added support for OpenSSL 3.0.0 [+] : New Component TsgcSTUNServer, implements the STUN Server Protocol providing a service to discover the mapped IP Address and port number. [+] : New Component TsgcSTUNClient, implements the STUN Client Protocol. [+] : New Demo which shows how use STUN Server and Client. [+] : New Component TsgcTURNServer, implements the STUN/TURN Server Protocol. [+] : New Component TsgcTURNClient, implements the STUN/TURN Client Protocol. [+] : New Demo which shows how use TURN Server and Client. [+] : New Component TsgcWSAPIServer_RTCMultiConnection, server implementation of RTCMultiConnection project based on WebRTC which allows: MultiVideoConferences, Screen Sharing and Video Broadcasting. [+] : New Demo RTCMultiConnection in "30.WebRTC_Protocol\04.RTCMultiConnection" which shows how to use the TsgcWSAPIServer_RTCMultiConnection component. [+] : New Component TsgcWSAPI_Binance, supports Binance Stock API: - WebSocket API - User Stream API - REST API [+] : New Component TsgcWSAPI_Binance_Futures, supports Binance Futures API: - WebSocket API - User Stream API - REST API [+] : Improved Demo "Client", a new Tab has been added to show how the Binance API works. [*] : Fixed Bug SChannel, memory was modified after the object was destroyed. (Thanks to Anders to let me know). [*] : Fixed some SChannel Memory Leaks when destroying TsgcWebSocketClient. [*] : Fixed Bug TsgcWebSocketClient, Thread-lock when openSSL = TLS1.3 and immediately after setting Active := True, the property Active was evaluated. 4.5.2: 2021 September [*] : Fixed Bug TsgcWebSocketClient when running in a secondary thread and using openSSL libraries. [*] : Fixed Memory Leak on TsgcWebSocketHTTPServer when sending the HTTP response as a Binary object. [*] : Fixed Memory Leak using IOCP on Indy WebSocket Server. (Thanks to Anders let me know). 4.5.1: 2021 July [+] : Improved SChannel, new property "CipherList" in TLSOptions.SChannel_Options, which allows to set the cipher list used to connect to a secure server. Example: CALG_AES_256:CALG_AES_128 [+] : Improved TsgcWebSocketClient, WebSocket redirections are now supported by websocket client. [*] : Fixed Bug MQTT Protocol and WatchDog.Attempts > 0, after a reconnection, the internal Attempts count value was not cleared. [*] : Fixed Bug MQTT Protocol, when QoS = mtqsExactlyOnce, after receiving a PubRel message, the PubComp reply was not sent. [*] : Fixed Bug MQTT Protocol, when QoS = mtqsExactlyOnce, the stored message was not deleted when PUBCOMP message was received. [*] : Fixed Bug OnException event when notifyEvents = neAsynchronous, in some cases the Exception parameter was already destroyed. [*] : Fixed Bug WebRTC wasn't working using HTTP/2 as protocol. [*] : Fixed Bug WatchDog, if the client was disconnected and set Active = False, the watchdog never stops if WatchDog.Attempts = 0. [*] : Fixed Bug Clearing internal Ping List, an access violation can happen in some cases. 4.5.0: 2021 June [+] : New property "BoundPortMin" and "BoundPortMax" in TsgcWebSocketClient, allows to set the min and max local port used by websocket client. [+] : New property "LingerState" in TsgcWebSocketClient, allows to reset a socket connection where LingerState = 0. By default the value is -1, which means the connection will be closed gracefully. [+] : Improved OAuth2 Server, new method "AddToken" allows to recover issued tokens when the OAuth2 server is restarted. [*] : Fixed Bug Server Component, the count property was not defined. [*] : Fixed Bug UTF-8 messages. [*] : Fixed Bug Demo Chat, authentication was not properly initialized. [*] : Fixed Bug Authentication.User property was not properly initialized. [*] : Fixed Bug when TsgcWebSocketClient has attached some API, if the OnDisconnect internal event had an exception while processing, the event was not called. [*] : Fixed Bug Telegram API when Document.FileName has utf-8 characters. 4.4.9: 2021 May [+] : Added support for .NET 5 and .NET Core 5.0 [+] : New Component TsgcHTTP_JWT_Client, allows to encode and sign JWT Tokens as Authentication Bearers in WebSocket Client Component. [+] : New Component TsgcHTTP_JWT_Server, allows to decode and validate JWT Tokens as Authentication Bearers in HTTP and WebSocket Server Components. [+] : New property "HttpUploadFiles" in HTTP Server. Allows to save the POST streams received as FileStreams so server can receive big files without getting out of memory exception. [+] : New Demo that shows how POST big Files and store in a file instead of memory using WebSocket HTTP Server. [+] : Improved OAuth2 Client, now supports OAuth2 Client Credentials (for applications like daemons or service accounts). There is a new property called GrantType with the following values (auth2Code, auth2ClientCredentials). [+] : Improved OAuth2 Client Demo, new Configuration "Azure AD As Service" showing the use of new Client Credentials grant type. [+] : Improved OpenSSL_Options property, new property "LibPath", if has the value "oslpDefaultFolder" automatically calls IdOpenSSLSetLibPath and sets the default lib folder. [+] : Update OpenSSL libraries 1.1.1 to latest version. [*] : Fixed Bug HTTP/2 Server sending Windows Update Frame. [*] : Fixed Bug OAuth2 Client error opening WebBrowser under MacOSX. [*] : Fixed Bug SChannel if no certificate was found by issuer, the connection was closed. [*] : Fixed Bug TsgcWebSocketServer and TsgcWebSocketHTTPServer, if authentication was enabled an access violation was raised processing any request. 4.4.8: 2021 April [+] : New Component TsgcWSPClient_Files, c# client protocol that allows to send/receive files to/from the server. [+] : New Component TsgcWSPServer_Files, c# server protocol that allows to send/received files to/from the clients. [+] : New Demo Files which shows the main features of Files Protocol. [+] : Improved LogFile in WebSocket Server and Client components, now websocket messages are logged unmasked. [+] : Improved Telegram API, new Methods: GetBasicGroupFullInfo, GetSupergroupMembers and GetChatMember, allow to get members information of Basic and Super groups. [+] : Improved TsgcWebSocketHTTPServer, new property "Charset" where you can set the default Charset of DocumentRoot files served. [+] : Improved SSLOptions.OpenSSL_Options.ECDHE property of WebSocket Server, now if enabled adds a secure cipherlist for TLS 1.2. [*] : Fixed Bug TLS 1.3 and OpenSSL 1.1.1, by default set the minimum protocol to TLS 1.0 instead of TLS 1.2 4.4.7: 2021 February [+] : Improved WebSocket Client, new event "OnBeforeConnect" this method is called before the client tries to connect to server. [+] : Improved WebSocket Client, new event "OnBeforeWatchDog" allows to customize the Client before the client tries to reconnect to server. [+] : Improved TsgcWebSocketHTTPServer, new property HTTP2Options.AltSvc, if enabled informs to client that HTTP/2 is supported by server. [+] : Improved OAuth2 Client, LocalServer supports SSL/TLS connections. [+] : Improved Telegram client, new method SendRichTextMessage with support for bold, italic, underline, strike and code formats. [+] : Improved Telegram client, new method GetChat which allows to get the data of a single chat (supported by user and bots). [+] : Improved Socket.IO API Client, added support for Socket.IO 3.* API. [+] : Improved SChannel, now supports the use of Certificates: using a Certificate in PFX format or a Certificate Hash thumbprint. [*] : Fixed Bug using SChannel as IOHandler and connecting through a Proxy Server. (Thanks to Anders to let me know). [*] : Fixed Bug TsgcWebSocketClient getting the Active property value was sometimes slow or locked. [*] : Fixed Bug TsgcWebSocketClient ProxySocks connect directly to server instead of use Proxy Server. [*] : Fixed Bug TsgcWebSocketHTTPServer, DocumentRoot wasn't working when using HTTP/2 protocol. 4.4.6: 2021 January [+] : New Event OnBeforeForwardHTTP on Server Components, allows to forward an HTTP request to another server. (Thanks to Olaf for his suggestion). [+] : New Event OnAfterForwardHTTP on Server Components, allows to know the response from HTTP Forwarded Request. [+] : Improved TsgcWebSocketHTTPServer, now has support for HTTP/2 Server Push using PushPromiseAddPreLoadLinks method to configure the push promise files. [+] : Improved TsgcWebSocketHTTPServer, added support for HTTP/2 cookies. [+] : Improved TsgcWebSocketHTTPServer, new Property HTTP2Options.Events, configures if Connect/Disconnect events are called under HTTP/2 protocol (by default are disabled). [+] : Improved Telegram API, send bot messages with buttons (Callback and Url) is now supported. [+] : Improved Telegram API, a new event "OnNewCallbackQuery" has been added, allows to process which buttons have selected the users. [+] : Improved MQTT client, HeartBeat now supports Timeout, if after x time the client doesn't receive a response to the ping previously sent, it closes the connection automatically. [*] : Fixed Bug in Indy Servers, the ReadTimeOut value was not used after read socket data to check if there was more data to process. [*] : Fixed Bug Basic Authorization was not read under HTTP/2 protocol if Authentication was not enabled. [*] : Fixed Bug Server HTTP/2 Protocol reading a Window_Update while Header Frame was not already processed. [*] : Fixed Bug HTTP/2 Protocol, connection window update was not updated and an error was raised closing connection. [*] : Fixed Bug HTTP/2 Protocol decoding latest header of Static table. [*] : Fixed Bug HTTP/2 Protocol receiving unexpected stream identifier in client component. [*] : Fixed Bug TsgcWebSocketClient if Options.CleanDisconnect = True and there was an error sending the close message, the disconnect event wasn't called. [*] : Fixed Bug TsgcWebSocketClient, avoid potential thread-lock when reconnecting to server if notifyEvents = neNoSync. (Thanks to Stefan to let me know). [*] : Fixed Bug TsgcWebSocketClient, avoid potential call to OnDisconnect event twice. [*] : Fixed Bug Memory Leak on Telegram Client. [*] : Fixed Bug LogFile of TsgcWebSocketClient wasn't thread safe. (Thanks to Eddy to let me know). [*] : Fixed Bug TsgcWebSocketClient using TLS 1.3 sometimes an error was raised when connecting to server. 4.4.5: 2020 December [+] : New Component TsgcHTTP_OAuth2_Server, server implementation of OAuth2 protocol, allows to Authorize and Issue Access Tokens to OAuth2 clients. [+] : New Component TsgcHTTP_OAuth2_Client, this protocol allows third-party applications to grant limited access to an HTTP service, either on behalf of a resource owner or by allowing the third-party application to obtain access on its own behalf. [+] : New Demo which shows how use OAuth2 on Server and Client Components. [*] : Fixed Bug Invalid Pointer when NotifyEvents = neAsynchronous and CheckSynchronize was called while the event was processing. (Thanks to Dirk to let me know) [*] : Fixed Bug Processing Fragmented Messages, first fragmented was overwrited when second fragment arrived. (Thanks to Patrik to let me know) [*] : Fixed Bug TsgcWebSocketClient when there was a disconnection, internal threads were stopped, but this method was called several times in some cases. [*] : FIxed Bug potential Thread-Lock when NotifyEvents = neAsynchronous, connection was disconnected and there were messages pending to be processed. [*] : Fixed Bug Access Violation error executing method "Start" when Client/Server was already destroyed. [*] : Fixed Bug Telegram Client, the read thread didn't start after connect to telegram servers. [*] : Fixed Bug Telegram Client, the Title of the chat message wasn't properly decoded. (Thanks to Hyeonwoo to let me know). [*] : Fixed Bug Indy Servers, if connection was already closed but Buffer had still data to process, the thread never ends and make use of full cpu. [*] : Fixed Bug in TsgcWSAPI_SocketIO component when initializing connection and ioAPI0 is selected as API (Thanks to Jean to let me know). [*] : Fixed Bug connecting when WriteTimeOut > 0 on none Windows OS, now this property only applies to Windows. 4.4.4: 2020 November [+] : New method "PublishAndWait" in MQTT Client, this method allow to publish a message using mtqsAtLeastOnce or mtqsExactlyOnce and wait till message is processed by server. [+] : Improved HTTP/2 Server, ping and heartbeat are now supported. [+] : Improved Telegram Client, added support for proxies: HTTP, MTProto and Socks5. New methods to Add Proxies, Remove, Enable, Disable... [+] : New method "Restart" in Server Components, restart the server in a secondary thread. [+] : Improved WatchDog on Server components, a new property called Monitor, if enabled, a client will try to connect to server, if fails after the TimeOut set, the server is restarted automatically. [*] : Fixed Bug TsgcWebSocketClient and TLSOptions.IOHandler = iohSChannel, when closing connection an exception 10004 was shown. [*] : Fixed Bug TsgcWebSocketClient and TLSOptions.IOHandler = iohSChannel, when destroying TsgcWebSocketClient if connection was active, a thread-lock occurs. [*] : Fixed Bug Server connections wasn't closed if OriginsAllowed not match the websocket origin client. [*] : Fixed Bug ServerSentEvent javascript code, contains invalid text. [*] : Fixed Bug HeartBeat, if there was an exception sending a ping, exception was not captured and was shown to user. [*] : Fixed Bug MQTT Client, if there was an exception while resending a message with Qos <> mtqsAtLeastOnce, exception was not captured and was shown to user. [*] : Fixed Bug MQTT Client, when publishing a Stream with Qos <> mtqsAtLeastOnce and not received an acknowledgment from server before timeout, when resend the message, payload was empty. [*] : Fixed Bug HTTP/2 Server, if SETTINGS_INITIAL_WINDOW_SIZE was changed after HEADERS, the WindowSize was not adjusted properly. [*] : Fixed Bug WatchDog on Server Components, if the server was stopped manually, the WatchDog try to start server again instead of stop. 4.4.3: 2020 October [+] : Initial support for HTTP/2 in TsgcWebSocketHTTPServer - New property HTTP2Options: allows to enable HTTP/2 protocol and configure initial settings. [+] : New Event OnBeforeHeartBeat on Client and Server components, allows to customize HeartBeat behaviour. [*] : Fixed Access Violation TsgcWebSocketClient when TLS is enabled reading bytes from socket. [*] : Fixed Access Violation when WebSocket server uses SSL and is disconnecting. [*] : Fixed Bug Socket.IO, connection was closed by a HeartBeat timeout. [*] : Fixed Bug Reading Compressed Frame when Compression was enabled. [*] : Improved Memory Usage when Compression is enabled. [*] : Fixed Bug setting the value of ResponseInfo.ContentType 4.4.2: 2020 September [+] : New Component TsgcWSAPI_SocketIO. Socket.IO Client for Windows32 and Windows64 which allows to connect to Socket.IO Servers. [*] : Fixed MemoryLeak using ALPN protocol. 4.4.1: 2020 July [+] : New Component TsgcTDLib_Telegram. Telegram Client for Windows32 and Windows64 which allows to send/receive text messages, files, photos... and more. [+] : New property "DatabaseDirectory" in Telegram Client. Allows to set the directory where is the TDLib database. [+] : Improved Telegram Demo to ask user for a password if telegram component requires it. [+] : Improved speed reading websocket data applies to server and client components. [+] : New Property TimeOut in Indy IOCP Server, allows to set the max timeout closing server threads. [+] : Updated OpenSSL Custom Indy, added X509_verify_cert_error_string to be able to retrieve cert error. (Thanks to Sébastien for his patch). [+] : Added support for ALPN (Application-Layer Protocol Negotiation) when SChannel is set in TsgcWebSocketClient. [*] : Fixed Bug MQTT 5.0 API reading PubACK, PubREC, PubREL, PubCOMP Properties. [*] : Fixed Bug MQTT 5.0 Calling publish method and passing properties as parameter. [*] : Fixed Bug Indy Server + IOCP, access violation closing connection. [*] : Fixed Bug Indy Server + IOCP, exception "connection closed gracefully" was showed to end-user. [*] : Fixed Bug Indy Server + IOCP, memory leaks have been removed. [*] : Fixed Bug TsgcWebSocketClient.Connect, if remote peer was not available, an exception was raised. [*] : Fixed Bug MQTT Client Protocol, when watchdog is enabled and Attempts value is greater than zero, client was trying to reconnect more times than the attempts value. [*] : Fixed Bug OpenSSL Custom Indy, for openssl 1.1.1 use EVP_MD_CTX_new and EVP_MD_CTX_free. (Thanks to Sébastien for his patch). [*] : Fixed Bug OpenSSL Custom Indy, changed wrong name for sk_pop_free and added some functions available for static linking. (Thanks to Sébastien for his patch). [*] : Fixed Bug TsgcWebSocketClient when Server sends a Sub-protocol which client has not requested. [*] : Fixed Bug Thread Lock while Client Disconnecting when TLS is enabled with latest Indy version. 4.4.0: 2020 June [+] : New Component TsgcWSProtocol_MQTT_Client. MQTT Client to connect to MQTT 3.1.1 and 5.0 Servers. [+] : Update Demo: Client. Now has a new Tab which shows how connect to MQTT Servers. [+] : New Component TsgcWSProtocol_WebRTC_Server. Open Source Project that enables web browsers with Real-Time Communications (RTC). [+] : New Demo: WebRTC [+] : New Component TsgcWSProtocol_AppRTC_Server. Is a WebRTC server using AppRTC Demo code. [+] : New Demo: AppRTC [+] : New Property TLSOptions.VerifyDepth for Server and Client components, is the maximum number of intermediate certificate issuers (default value is zero). [+] : New Method WebSocketClient, UnRegisterProtocol. Allows to unregister a protocol previously registered. [+] : New Coturn server is now provided as a compiled console application for windows. Coturn is a STUN/TURN server for WebRTC protocol. [+] : Improved Ping method, if ping is called manually, now you can pass the string of the ping message. [+] : Improved Server Plain TCP Connections, if HeartBeat is enabled, it will send a message to maintain connection. [+] : New Event OnTCPConnect in Indy Server, this event is called after a TCP Connection and before WebSocket HandShake. 4.3.7: 2020 May [+] : sgcWebSockets library supports .NET for win32 and win64. [+] : New Component TsgcWebSocketServer. [+] : New Component TsgcWebSocketHTTPServer. [+] : New Component TsgcWebSocketClient. [+] : New Demo: Chat [+] : New Demo: Client [+] : New Demo: Snapshots [+] : New Demo: Authentication [+] : New Demo: KendoUI_Grid [+] : New Demo: Monitor [+] : New Demo: ServerSentEvents [+] : New Demo: UploadFile [+] : Added support for .NET 2.0, .NET 3.5, .NET 4.0, .NET 4.5 [+] : Added support for .NET Standard 1.6, .NET Standard 2.0 [+] : Added support for .NET [+] : Added VSIX Package for .NET 4.5 Winforms.