www.Xb2.net Xb2.NET Change Log

    Ver 3.2.17 (2010-12-03)

    • change behaviour: xbHTTPThread:GetCargo() will not create a new session.
    • new: xbHTTPServer:SessionCookies allows session cookies to be turned off.
    • new: reduce HTTP session memory utilization and improve server performance by optimizing session management.
    • new: improve xbFTPClient data transfer speed on fast networks by using larger data transfer buffers.
    • new: xbFTPClient:SendBufferSize and xbFTPClient:RecvBufferSize properties allow programmer to modify data buffer sizes.
    • fix: prevent session bleeding between browser tabs/windows (:SessionCookies must be set to .F.)
    • fix: XML parser function xbXML2Array failed to correctly parse some XML documents containing multiple sub-levels of embeded tags with the same name.
    • fix: XML parser failed to parse documents containing self-closing tags embeded within other tags with the same name.
    • fix: prevent error in xbURI:Parse when processing invalid URI strings

    Ver 3.2.13 (2009-04-23)

    • new: xbSOAPEnvelope:CharacterEncoding property is now determined during message deserialization.
    • new: xbXMLDocument:CharacterEncoding property is now determined during message deserialization.
    • new: save HTTP content-type response information in :MimeType ivar of xbSOAPEnvelope and xbXMLDocument.
    • new: slight performance improvement of XML parser.
    • new: add param "lAppend" to xbFTPClient:GetFile and xbFTPClient:PutFile
    • new: allow numeric file handle instead of local file name in xbFTPClient:GetFile and xbFTPClient:PutFile
    • new: parameter "nMaxSize" added to xbSaveToFile function. Defaults to 1000000 bytes.
    • new: add param "cName" to init method of xbServer, xbHTTPServer, xbSocketThread, xbHTTPThread classes.
    • new: don't dynamically compress HTTP files > 10MB
    • new: prevent runtime error in xbSession:RestoreSessions() if session file is corrupt.
    • new: web sample showing how to implement client-side AJAX to dynamically update small sections of an HTML document with new server data without a complete page refresh.
    • new: web sample showing how to implement server push also known as "Comet" and "reverse Ajax". The Comet pattern allows the server to push events or data to the client without waiting for the client to request it.
    • new: implemented HTTPHandler param checking for dynamic HTTP function calls to only allow safe parameter types (see webserve.prg).
    • fix: XML parser failed to parse documents containing empty self closing tags, eg: <m:mytag/>
    • fix: multi-line replies were not always processed correctly by xbFTPClient.
    • fix: xbXMLGetAttribute raised error while attempting to retrieve a null attribute value with no delimiters.
      eg: <phone home=909-555-1212 cell= office=800-555-1212 /> "cell" contains a null value with no delimiters.
    • prevent error recursion within error handler (__DispError).
    • fix: xbFTPClient:GetFile and xbFTPClient:PutFile returned .T. even though FTP server aborted transfer.
    • fix: xbHTTPMessage:Recv failed to time out even though a RecvTimeout was set on the socket connection.
    • fix: xbHTTPClient failed to deserialize MTOM, XOP and multipart attachments when using VIA_WININET transport method.

    Ver 3.2.00 (2007-11-07)

    • new: added seamless support for MIME multi-part attachments. The following payload formats are supported: MTOM, XOP, DIME, multipart/mixed, multipart/form-data and multipart/related. Attachments are supported seamlessly on HTTP, SOAP and XML client and server sides.
    • new: xbStream class provides generic methods for reading and writing to data stream files.
    • new: AddPayload method for xbXMLDocument, xbSOAPEnvelope and xbComplexType classes.
    • new: xbXML2Array function now parses XOP payload references. The XTAG_TYPE will be set to XTYPE_XOP when the node is an XOP payload identifier.
    • new: SetCallBack method for xbSocket and xbHTTPClient classes allows registering object or codeblock for receiving callback events.
    • new: improved response time for xbServer and xbHTTPServer.
    • new: ignore NULL byte in malformed HTTP client requests.
    • new: removed "text/css" from default list of xbHTTPServer:CompressTypes and xbHTTPMessage:CompressTypes. Compressing style sheets causes problems with Internet Explorer clients.
    • new: xbComplexType:Payload property provides a reference to an optional xbPayload object.
    • new: xbFTPClient:SetDataPort() method allows programmer to explicitly specify the client's external IP address. Required when FTP client is behind a router-based firewall.
    • new: added new param "cDataType" to xbFTPClient:GetFile and xbFTPClient:PutFile methods.
    • new: xbHTTPThread:NewSession() method creates new session with option of leaving existing session open.
    • new: xbPayload:GetPayload() and xbPayload:GetVar() methods retrieve a payload item by ID.
    • new: xbPayload:SetFormat() method allows setting the payload serialization format.
    • new: xbSSLContext:ConnectMethod provides reference to connect method used at object initialization.
    • new: xbXMLDocument:CharacterEncoding property allows setting the character encoding format used within XML document.
    • new: xbSOAPEnvelope:CharacterEncoding property allows setting the character encoding format used within SOAP envelope.
    • new: added support for SOAP 1.2. Use xbSOAPEnvelope:Version to get or set the SOAP envelope version number.
    • new: xbTLog:FilePrefix property provides the opportunity to change the log file prefix.
    • new: xbIP2Decimal() function converts a dotted-decimal IP address into it's equivalent decimal format.
    • fix: xbFTPClient failed to login and establish an SSL connection when server responded with multiple "220" codes.
    • fix: xbFTPClient:Directory failed when used on some older FTP servers.
    • fix: xbFTPClient:Login raised runtime error if called after a failed :Connect().
    • fix: xbFTPClient:SecureDataChannel did not work.
    • fix: xbPayload:Add() failed on Win98 systems.
    • fix: xbSOAPEnvelope failed to parse DIME attachment when transport VIA_WININET was used.
    • fix: empty, non-zero length strings were truncated when transmitted via xbSOAPEnvelope.
    • fix: xbSocket:isConnected() would return .T. even though socket is not in a connected state.
    • fix: xbXML2Array failed to parse XML document containing child tags with the same name as a parent tag.

    Ver 3.1.00 (2006-05-29)

    • new: xbPayload class allows packaging attachments of any size (files, character strings, objects or any Xbase++ data) for safe transmission.
    • new: xbHTTPClient class provides a higher level interface for developing HTTP client applications.
    • new: xbXMLDocument class provides a simplified means for generating XML requests and parsing XML responses.
    • new: xbCreateGuid() function generates GUID values.
    • new: functions for converting between network byte order and host byte order: xbHtonl, xbHtons, xbNtohl, xbNtohs.
    • new: function xbUniqueFile creates a unique file.
    • new: add support for DIME attachments in SOAP.
    • new: xbSession class methods :SaveSessions and :RestoreSessions.
    • new: add support for send and recv timeouts for secure sockets.
    • fix: xbServer and xbHTTPServer terminated after accepting the 65'th active connection.
    • fix: sending a zero byte string on secure socket would close connection.
    • fix: non-blocking secure socket did not exit recv loop until some data was received.
    • fix: changing xbSoapEnvelope:SendTimeout or xbSoapEnvelope:RecvTimeout after connection was established caused runtime error.
    • fix: calling xbFTPClient:SendTimeout or xbFTPClient:RecvTimeout methods raised runtime error.
    • fix: sending SOAP request VIA_WININET with a SSL certificate failed on Windows-XP with SP2.
    • fix: xbSocket:ErrorMessage sometimes failed to return the OpenSSL error text.

    Ver 3.0.08 (2006-01-02)

    • new: upgraded to ZLib ver 1.2.3
    • fix: an HTTP 1.0 request resulted in runtime error: "Object has no member with this name: CompressHttp10"

    Ver 3.0.07 (2005-12-05)

    • new: xbSession:GetOpenSessions() method.
    • new: xbHTTPServer:CompressHttp10 enables/disables compression for HTTP 1.0 requests.
    • new: added support for pipelined HTTP 1.1 requests.
    • new: improved HTTP response time.
    • new: optimized memory usage while receiving very large HTTP content.
    • new: HTTP requests generating a runtime error are now returned with a 500 status code.
    • fix: a malformed HTTP request may cause the xbHTTPServer thread to crash.
    • fix: xbSocket:SendCount was double counted by :SendFile method. As a result, HTTP trans logs recorded incorrect number of bytes transmitted.
    • fix: xbUnEscape sometimes raised runtime error if input string was not properly encoded.
    • fix: xbHTTPThread:Recv() occasionally appended garbage to end of HTTP content.

    Ver 3.0.01 (2005-09-22)

    • new: xbFTPClient class is now fully compliant with RFC-959 and RFC-2228 and provides support for AUTH TLS, AUTH SSL and Implicit SSL connections.
    • new: xbFTPClient:SSLConnect method.
    • new: xbFTPClient:ImplicitSSL property.
    • new: xbFTPClient:PassiveMode property allows firewall friendly data transfers.
    • new: xbFTPClient:SecureDataChannel property.
    • new: xbSocket:SSLConnect method will negotiate a secure SSL/LTS connection after a connection is already established.
    • new: xbGetTickCount() returns the number of milliseconds that have elapsed since the system was started.
    • fix: xbXMLGetNode() sometimes raised error.
    • fix: xbHTTPServer:onNotFound was never executed (bug introduced in ver 2.0.17).
    • fix: xbTcpWindowSize raised error if registry entry was incorrectly set to a string value.
    • fix: xbTLog "cs-uri-stem" field was incorrectly saved in URL decoded format. If the URL path contained spaces, the result was a corrupted log record structure.

    Ver 3.0.00 beta (2005-08-03)

    • new: xbFTPClient class provides methods for managing directories and files on a remote FTP and FTPS server.
    • new: xbTLog class for logging client requests using Extended Log File Format (compatible with Microsoft IIS).
    • new: webserve.exe contains additional samples including a new TimeClock web application.
    • new: added support for "deflate" compression in xbHTTPServer.
    • new: added support for transaction logging in xbHTTPServer using Extended Log File Format.
    • new: xbSocketThread and xbHTTPThread inherit :atEnd setting from parent.
    • new: xbServer:onSessionClose provides codeblock to execute just before a xbSession is deleted.
    • new: xbSession:Close() and xbSession:SweepSessions() accept codeblock param to be evaluated just before a session is deleted.
    • new: xbHTTPServer:AllowTrace controls support of HTTP TRACE command.
    • new: xbHTTPServer:CompressLevel and xbHTTPMessage:CompressLevel sets compression level (0 = no compression).
    • new: xbHTTPServer:CompressTypes and xbHTTPMessage:CompressTypes specifies a list of MIME types for HTTP content that will be automatically compressed.
    • new: xbHTTPServer:CompressedFilePrefix specifies file name prefix to use for saving temporary compressed files.
    • new: xbHTTPServer:onLog provides codeblock to execute before a client request is logged.
    • new: xbHTTPServer:TLog provides a reference to the object that will be used for logging client requests.
    • new: xbHTTPResponse:SetCookie accepts additional param to mark cookie as secure.
    • new: xbServer:LingerTimeout is set to 60 seconds by default.
    • new: xbServer:RecvBufferSize and xbServer:SendBufferSize are set to the system's TCP window size by default.
    • new: improve xbHTTPServer response times for short requests.
    • new: xbSOAPEnvelope:CertKeyword property specifies a search string for locating client certificates in the Windows system certificate store.
    • new: xbSOAPEnvelope:CertUseDefault property can be used to automatically send the first matching client certificate when SSL authentication is requested.
    • new: xbSOAPEnvelope:Execute method accepts additional param to allow developer to pass a pre-serialized XML SOAP envelope.
    • new: xbSOAPEnvelope:SetAuthorization for logging into HTTP servers requiring 'basic' authentication.
    • new: xbSOAPEnvelope:SetProxy now accepts a user id and password for logging into proxy server.
    • new: xbSOAPEnvelope:RecvTimeout property.
    • new: xbSOAPEnvelope:SendTimeout property.
    • new: xbSOAPEnvelope:Transport specifies the transport medium that will be used to deliver the SOAP envelope (raw socket or WinInet).
    • new: xbSOAPEnvelope:SecurityFlags allows setting SSL security flags when the transport medium is WinInet.
    • new: xbSocket:Recv() accepts new param which delays reception until sufficient data has arrived to fill the recv buffer.
    • new: xbURI:isQuery property can be set to .T. to add a query marker ('?') to URI string even though no query component exists.
    • new: xbSaveToFile() accepts additional param specifying whether to append or overwrite the new data.
    • new: allow numeric index for :GetVar() / :SetVar()
    • new: speeded up base64 encoding and decoding.
    • new: new param lCRLF76 added to xbBase64Encode function.
    • new: more efficient memory usage resulting in improved performance when sending/receiving large amounts of data.
    • new: bitwise functions: xbAND, xbOR, xbXOR, xbNOT, xbSHL, xbSHR.
    • new: ZLib functions: xbZCompress, xbZCompressFile, xbZUnCompress, xbZCRC32
    • new: xbCrypt function to encrypt or decrypt a string.
    • new: xbGetFileMimeType function returns the MIME media type for a given file name.
    • new: xbTcpWindowSize function to get or set the system's TCP window size parameter.
    • new: xbWChar function converts a single-byte ANSI string to double-byte unicode.
    • new: xbWindowHandle function to get or set the application's default window handle.
    • fix: xbBase64Decode sometimes caused IDSC error.
    • fix: sometimes socket connections were not shutdown cleanly resulting in increased handle usage and on rare occasions a server was not able to accept new connections.
    • fix: sometimes a new session was created after a :CloseSession quickly followed by new requests on separate sockets.
    • fix: xbSocket:UpTime returned wrong number of hours when the start time was greater than the current time.
    • fix: xbSocket:ErrorMessage will return OpenSSL error text when secure connection is used.
    • fix: 3rd param in xbSSLContext:UsePKCS12File will default to FALSE as per docs.
    • fix: process 100-continue HTTP response correctly.
    • fix: eliminated small memory leak when using Xbase++ versions < 1.90.
    • fix: xbSSLContext:Destroy() did not free up SSL context.
    • fix: xbSSLContext:SetDefaultPassword() did not work.

    Ver 2.0.01 (2004-10-15)

    • new: There is now only one XB2NET.DLL for all versions (demo, pro and SSL). Mode of operation is determined by license key. Invalid license defaults to demo mode. See: XB2KEY.PRG
    • new: support for SSL and TLS security protocols using OpenSSL library (only available in SSL version of library).
    • new: xbSSLContext class adds support for SSL and TLS security protocols.
    • new: xbComplexType class.
    • new: xbHTTPMessage:ProxyConnection property.
    • new: xbHTTPMessage:Recv accepts additional param to receive content into a file.
    • new: xbHTTPMessage:isResponse property to distinguish between request/response messages.
    • new: xbHTTPServer:New accepts additional param to set xbSSLContext.
    • new: xbSOAPEnvelope now parses structures into xbComplexType objects (note: this may break previous code because ver 1.0.04 returned structures as xbase arrays). This change was necessary in order to better support SOAP structures and complex types.
    • new: xbSOAPEnvelope:AddNameSpace method.
    • new: xbSOAPEnvelope:AddVar method.
    • new: xbSOAPEnvelope:Destroy method to close persistent connection.
    • new: xbSOAPEnvelope:GetVarAttrib method.
    • new: xbSOAPEnvelope:Header property.
    • new: xbSOAPEnvelope:HeaderNode property provides reference to SOAP envelope header node.
    • new: xbSOAPEnvelope:KeepAlive method to set persistent connection.
    • new: xbSOAPEnvelope:SetProxy method for connecting through proxy server.
    • new: xbSOAPEnvelope:SetSSLContext method.
    • new: xbSOAPEnvelope:SetStyle method for setting SOAP encoding format and message style.
    • new: xbSOAPEnvelope:SetTypeAttrib method.
    • new: xbSOAPEnvelope:SetVar additional param added to allow setting custom XML attribute for SOAP variable.
    • new: xbServer:New accepts additional param to set xbSSLContext.
    • new: xbSocket:ErrorLogFile class property.
    • new: xbSocket:isSecure access method.
    • new: xbSocket:New accepts additional param to set xbSSLContext.
    • new: xbSocket:Recv accepts additional param to set a receive buffer.
    • new: xbSocket:RecvFile method.
    • new: xbSocket:Send accepts additional param to specify number of bytes to transmit.
    • new: xbSocket:SetSSLContext method.
    • new: xbSocket:SSLContext property.
    • new: xbSocket:SSLHandle property.
    • new: xbSocket:SSLShutdown method.
    • new: xbErrorLog function.
    • new: xbHTTPErrorHandler function.
    • new: xbSaveToFile function.
    • new: xbSocketErrorText function.
    • new: xbSSLAvailable function.
    • new: xbXML2Array parser now supports HREF and mapped arrays.
    • new: xbXMLDateTime function.
    • new: WEBSERVE.PRG sample now supports HTTPS and can be set to run as a service or console app.
    • fix: xbGMTDate() was using local language settings instead of English.
    • fix: xbXMLGetNode() sometimes failed to find a node.
    • fix: xbEscape() function raised runtime error when input param was NIL. It will now return a blank string.
    • fix: xbXML2Array() dropped nodes that contained 'ID' attributes.
    • fix: numeric SOAP return values were incorrectly set to INT type even though they contained a decimal position followed by zeros.
    • fix: setting a cookie in a HTTPRequest cleared request header.
    • fix: xbHTTPResponse incorrectly handled 100-continue status.
    • fix: receiving 'chunked' transfer-encoding HTTP messages sometimes failed.
    • fix: :UpTime() returned wrong values when the time difference was greater than 1 hour.
    • fix: xbHTTPThread:NotFound occasionally raised wrong type error.
    • fix: runtime error when trying to send on DGRAM socket.

    Ver 1.0.04 (2003.03.06)

    • added workaround for HTTP servers that incorrectly terminate their response header with only a LF+CRLF.
    • improved support for older HTTP 1.0 messages.
    • the xb2net.dll can now be loaded and unloaded dynamically at runtime.
    • modified server multithreading model to take advantage of more reliable multithreading introduced in Xbase++ 1.82. When using Xbase++ 1.82, the HTTP server will accept connections approx. 200% faster than previous versions.

    Ver 1.0.02 (2002.12.26)

    • fix: xbHTTPResponse:ParseHeader would fail if a response contained a status line but no header fields, such as in the case of a "100 continue"
    • added 'chunked' transfer-encoding support to xbHTTPMessage class. New method :SendChunk()

    Ver 1.0.00 (2002.12.06)

    • first official release

    Ver 0.0.59 (2002.04.10)

    • first beta released


    home     download     top of page