www.Xb2.net Xb2.NET Change History

    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.
    • bug fix: xbFTPClient failed to login and establish an SSL connection when server responded with multiple "220" codes.
    • bug fix: xbFTPClient:Directory failed when used on some older FTP servers.
    • bug fix: xbFTPClient:Login raised runtime error if called after a failed :Connect().
    • bug fix: xbFTPClient:SecureDataChannel did not work.
    • bug fix: xbPayload:Add() failed on Win98 systems.
    • bug fix: xbSOAPEnvelope failed to parse DIME attachment when transport VIA_WININET was used.
    • bug fix: empty, non-zero length strings were truncated when transmitted via xbSOAPEnvelope.
    • bug fix: xbSocket:isConnected() would return .T. even though socket is not in a connected state.
    • bug 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.
    • bug fix: xbServer and xbHTTPServer terminated after accepting the 65'th active connection.
    • bug fix: sending a zero byte string on secure socket would close connection.
    • bug fix: non-blocking secure socket did not exit recv loop until some data was received.
    • bug fix: changing xbSoapEnvelope:SendTimeout or xbSoapEnvelope:RecvTimeout after connection was established caused runtime error.
    • bug fix: calling xbFTPClient:SendTimeout or xbFTPClient:RecvTimeout methods raised runtime error.
    • bug fix: sending SOAP request VIA_WININET with a SSL certificate failed on Windows-XP with SP2.
    • bug 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
    • bug 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.
    • bug fix: a malformed HTTP request may cause the xbHTTPServer thread to crash.
    • bug fix: xbSocket:SendCount was double counted by :SendFile method. As a result, HTTP trans logs recorded incorrect number of bytes transmitted.
    • bug fix: xbUnEscape sometimes raised runtime error if input string was not properly encoded.
    • bug 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.
    • bug fix: xbXMLGetNode() sometimes raised error.
    • bug fix: xbHTTPServer:onNotFound was never executed (bug introduced in ver 2.0.17).
    • bug fix: xbTcpWindowSize raised error if registry entry was incorrectly set to a string value.
    • bug 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.
    • bug fix: xbBase64Decode sometimes caused IDSC error.
    • bug 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.
    • bug fix: sometimes a new session was created after a :CloseSession quickly followed by new requests on separate sockets.
    • bug fix: xbSocket:UpTime returned wrong number of hours when the start time was greater than the current time.
    • bug fix: xbSocket:ErrorMessage will return OpenSSL error text when secure connection is used.
    • bug fix: 3rd param in xbSSLContext:UsePKCS12File will default to FALSE as per docs.
    • bug fix: process 100-continue HTTP response correctly.
    • bug fix: eliminated small memory leak when using Xbase++ versions < 1.90.
    • bug fix: xbSSLContext:Destroy() did not free up SSL context.
    • bug 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.
    • bug fix: xbGMTDate() was using local language settings instead of English.
    • bug fix: xbXMLGetNode() sometimes failed to find a node.
    • bug fix: xbEscape() function raised runtime error when input param was NIL. It will now return a blank string.
    • bug fix: xbXML2Array() dropped nodes that contained 'ID' attributes.
    • bug fix: numeric SOAP return values were incorrectly set to INT type even though they contained a decimal position followed by zeros.
    • bug fix: setting a cookie in a HTTPRequest cleared request header.
    • bug fix: xbHTTPResponse incorrectly handled 100-continue status.
    • bug fix: receiving 'chunked' transfer-encoding HTTP messages sometimes failed.
    • bug fix: :UpTime() returned wrong values when the time difference was greater than 1 hour.
    • bug fix: xbHTTPThread:NotFound occasionally raised wrong type error.
    • bug 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)

    • bug 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