11.15.1 2------ 3Support for python 3. 4 5Native SSL support. 6 7Support micro and nanosecond precision on timestamps. 8 9Use std::unique_ptr instead of auto_ptr when available. 10 11Use boost::shared_ptr if std::shared_ptr not available. 12 13Support for Visual Studio 15 (2017). 14 15Custom data fields can be decoded in header and trailer. 16 17Can decode data fields in message body that contain more than 16 fields. 18 19FieldNap iterators changed to non-const. 20 21Message generator works with recursive components. 22 23Preserve order of messages when resending. 24 25Can configure a source host and port to choose routes. 26 27Addressed several thread safety issues. 28 29Regenerated messages against latest repository. 30 31Faster sorting of fields. 32 33Faster double/string conversion with Florian's Loitsch "double-conversion." 34 35Replaceed std::multimap with std::vector for fields for improved performance. 36 37Detect and throw InvalidMessage when data field length contains junk. 38 39Fixed issues with integer_to_string() 40 41Bug fix for large messages. 42 43getField/setFields deprecated, use getTag/setTag. 44 45Fixes for SunOS/sparc/64 bit. 46 47Groups in headers. 48 491.14.3 50------ 51Fixed buck in SocketConnection where recv result stored in signed value. 52 53Added ruby api to RubyGems. 54 55All Python and Ruby tests pass again. 56 571.14.2 58------ 59Test for std::shared_ptr and std::tr1::shared_ptr. Allows us to compile on 60gcc 4.1-4.2, and with anaconda python. 61 62Distribute FIX specs with pip package. 63 64Use all detected compiler flags when building ruby native library. 65 661.14.1 67------ 68Replaced libxml2 and MSXML dependencies with embedded pugixml. 69 70Fixed all warnings from -Wshorten-64-to-32. 71 72Added python api to PyPi. Can be installed with 'pip install quickfix'. 73 74Fixed memory leak in SessionFactory when creating DataDictionaries. 75shared_ptr is used to track the objects so we don't have to. 76 771.14.0 78------ 79Major performance improvement sending/receiving messages. Thanks to 80Viktor Pogrebnyak for a great patch. 81 82Added getFieldIfSet and getIfSet methods. No longer need to check for a 83field and pull it out in two steps. 84 85UseLocalTime=Y works again. 86 87Improvement in how DataDictionaries are initialized makes starting up with 88a large number of sessions much faster. 89 90Generator will generate a message defined in the spec even if it has no fields. 91This was preventing the XMLnonFIX message from being generated in the various 92APIs. 93 94Added ValidateLengthAndChecksum. Allows you to ignore the length and checksum 95fields on incoming messages. Accept the message anyway. A wild free for all. 96 97Added FIX 5.0 sp1 and sp2 support to MessageCracker. 98 99SocketReuseAddress, SocketNoDelay, SocketSendBufferSize, and SocketReceiveBufferSize 100config settings can be overriden on a per session basis. 101 102Field containing number of groups will be removed if all instances of 103a group are removed from the message. 104 105SocketConnection would block other sessions if it was unable to connect 106immediately. Brian Crowell submitted a patch that makes the connection 107call non-blocking. 108 109Initiator started before StartTime was doing an unecessary logout and 110disconnect. 111 112MessageCracker will not cast non-const messages to const. 113 114Polling was kind of broken. Fixed. 115 116Fixed bug where LogonTime does not fall between StartTime and EndTime when 117days are used. 118 119Fixed bug where port was not being correctly scoped in the DEFAULT section 120of the config file. 121 122All data is read from the socket before the engine begins to parse messages. 123 124Socket will make a better attempt to determine if a full message is available 125on the socket before determining if a logon failed. Before it could potentially 126fail on a partial message that was in the middle of transmission. 127 128Header and Trailer are now distinct objects, instead of typedefs to FieldMap. 129 130Ambigous and confusing name getValue on the Field class has been renamed to 131getFixString. This return a value such as 55=AAPL. 132 133Message groups can be parsed even if there is no delimiter present. A new 134group is detected if the parser encounters any duplicate field. 135 136Fixed potential crash when stopping an initiator that has not yet started. 137 138When calling backup() on a .NET log, it was instead invoking clear() in the 139underlying C++ class. Fixed. 140 141Fallback ports were not being parsed correctly for fallback connections. Fixed. 142 143Not all constructors in the ThreadedSocketConnection were properly initializing 144the log object. Fixed. 145 146Generate XML (and source) files from latest publicly available FIX repository. 147 148Alternate C++ allocators will no longer be automatically chose. They can be 149manually selected with configure --with-allocator. 150 151MySQL and PostgreSQL are detected using standard m4 when running configure. 152 153Environment variables RUBY and PYTHON are used to find which version of 154instance to use when running configure. 155 156Fixed/standardized various issues with python library deployment. 157 158If session is disabled, it will immediately disconnect without sending any 159messages. 160 161Added support for visual studio 11 and 12. 162 163Removed C# library. Use QuickFIX/n. 164 165Ruby API works with ruby 1.9.x 166 1671.13.3 168------ 169Added support for FIX 5.0 sp1 and sp2 170 171Fixed bug with ResetSeqNumFlag going out but not coming back. 172Logon will now be processed correctly even if field is absent 173if sequence number is set to 1. 174 175Fixed bug where data dictionary settings in the default section 176were being ignored. Mostly manifested itself by doing validation 177the user didn't want done, such as user defined field validation. 178 179Fixed initialization errors with OdbcConnection which caused some 180problems connecting to the database. 181 182Updated the generator. Should be more consistent. Deprecated fields 183are not longer necessary as they are now generated along with current 184fields. 185 1861.13.2 187------ 188Fixed bug where messages containing repeating groups would 189not be properly resent under a FIXT.1.1 session 190 191Fixed bug where group fields would not be in the correct order 192after copying a group object. 193 194Fixed compilation error with OdbcStore 195 196Updated m_stop variable in initator and acceptor to true 197to better reflect initial state. 198 199Fixed issue with reconnect when acceptor not available and timeout 200interval is reached. 201 202Objects take in timestamps instead of generating them themselves 203to make them more testable. 204 205Generated python and ruby APIs no longer rely on pulling in 206FIX namespace so there are no clashes. 207 2081.13.1 209------ 210Fixed install script under unix systems. The new FIX 5.0 and 211FIXT 1.1 headers were not being installed. 212 213Fixed compiler errors under windows due to typedefs conflicting 214with #defines. 215 216Fixed exception being thrown when no LogFactory is provided. 217 218User defined UTC timestamps will have milliseconds now. 219 220Fixed memory leaks and other bugs in odbc interfaces. 221 222Fixed exception caused by peername returning a null char*. 223 224Corrected installation problems when DESTDIR is provided. 225 226QuickFIX should build on netbsd, though it is not yet 227officially supported. 228 229Perfomance optimization for .NET messagecrackers. 230 231 2321.13.0 233------ 234Support for FIX 5.0 and FIXT 1.1 session transport. 235 236Added solution files for Visual Studio 2008 and 2010. 237 238Compiles under newer versions of gcc. 239 240JNI API is no longer. QuickFIX/J is recommended. JAR file 241included with quickfix distribution for your convenience. 242 243Full support for 64 bit systems. 244 245Switched from proprietary unit testing framework to UnitTest++. 246 247Added settings for send and recieve buffer size on sockets. 248 249Header and Trailer generated instead of hardcoded. 250 251Groups can be queries against DataDictionary. 252 253ConfigError will be generated if session is defined twice. Several other 254improvements to recognizing bad configuration files. 255 256PersistMessages is true by default. 257 258identifyMessage exposed to .NET API. 259 260Fixed some potential deadlock scenarios with socket implementation. 261 262Added support for backing up logs. 263 264Added millisecond resolution to logs. 265 266Added NullMessageStore implementation. 267 268Sessions can be queried for data dictionary and configuration settings. 269 270Fixed problems with resent messages going out with repeating groups 271fields in the wrong order. 272 273Fixed some issues with database connection pools. 274 275Persistance is done before sending and will fail if message cannot be 276stored or sequence number cannot be incremented. 277 278Builds against STLPORT 5. 279 280Log messages can be redirected to different database tables. 281 282Added memory pressure to .NET messages to give a hint to the 283GC that memory should be reclaimed. 284 285When polling you can pass in a timeout value. 286 287Many other minor bug fixes. 288 2891.12.4 290------ 291ODBC escape values for times used in time values so they work with any database. 292 293Session will not throw an exception when sending a message without a MsgType. 294 295Added NetworkStatusReport and NetworkStatusRequest messages fix FIX 4.4. 296 297.NET SessionID object can be constructed with field objects. 298 299getSessions implemented in SessionSettings object in .NET. 300 301SessionSettings can be output in the same format as the input stream. 302 303Fixed repeating groups in ruby which where incorrectly instantiating arrays 304indicating sorting order. 305 306Fixed crashes in .NET due to logger being called after going out of scope. 307 308Fixed crashes in gcc due to different allocators being used in user application 309vs QuickFIX library by the FieldMap. 310 311Disposing an initiator or acceptor in .NET will also call stop. 312 3131.12.3 314------ 315A logon will now be sent immediately after initiator establishes a connection. 316Previously we were waiting up to 1 second before sending a logon. 317 318PersistMessages configuration setting will not store any messages when sent to Y. 319This is useful for sessions where you never want to do a resend request. Mostly for 320high bandwidth sessions. 321 322.NET field objects have static members for each of their enumeration values. 323This is equivalent to the Java implementation. (i.e., OrderSide.BUY). 324 325Fixed bugs in python and ruby APIs where objects passed into Initiator or 326Acceptor were being garbage collected to early causing random crashed. 327This was due to Swig not creating placeholders for these objects to live. 328 329Additional global logging indicated when an initiator/acceptor is created/destroyed, 330and started/stopped. Global log also with log messages that do not belong to any 331loaded sessions. 332 333Configuration settings are now case insensitive (the keys, not the values). 334 335Underlying socket exception is provided if acceptor cannot be created. 336 337ODBC escape sequences are used for time columns so correct format is always 338sent to the underlying database. 339 340Fixed problem where file descriptors were not being released in ThreadedSocketInitiator 341due to uninitialized variable. 342 343Fixed some incorrect parsting of HTTP messages. Never manifested itself 344as any problem, but fixed none the less. 345 346Various copilation fixes for SunPRO compiler. 347 3481.12.2 349------ 350Fixed bug in SocketConnector in Windows where failed connections were not 351being detected. Fixes bad behavior in SocketInitiator where it will attempt 352to connect once, but never try to reconnect. 353 354HttpAcceptPort setting added. When set, QuickFIX will accept HTTP requests 355to the given port. Pointing a browser to this port will bring up a control 356panel that allows you to view/update certain session states. 357 358Fixed bugs in Python api generation. 359 360Fixed Equals method for Field in .NET. Added Equals and GetHashCode 361implementations for SessionID. 362 363Log will display ip address instead of hostname of incoming connections 364in log. Fixes problem where hostname is not always available. 365 366Many performance optimizations. Performance is considerably better. 367 368Fixed bugs when checking for required fields. 369 3701.12.1 371------ 372Fixed bugs with non-blocking sockets where select statement would go into an 373infinite loop due to a bad file descriptor which was not properly removed. 374 375Fixed bug in SocketInitiator where initator would crash if the socket 376was pending a connection when disconnecting. 377 378MemoryStore in .NET api uses proper access specifier so compiler does not 379complain that it is abstract. 380 381Added SendRedundantResendRequests for certifications that require you to 382send a resend request even if it appears redundant. 383 384BusinessMessageReject includes field in text if applicable. 385 386Compiles under gcc 4.1 387 388Fixed UnsatisfiedLinkError when creating FileLogFactory in java. 389 390Fixed various bugs with ResetOnLogon functionality. 391 392Fixed bug where MySQLLog was writing bad strings to table. 393 394Fixed some error messages in MySQL store. 395 396Added support for reconnect in MySQL 5. 397 398Display file name when FileStore or File Log cannot open a file. 399 400Rejects are delivered to fromAdmin even if sequence number is too high. 401 402Initiator stores and instance of the global log. 403 4041.12.0 405------ 406SocketAcceptor and ThreadedSocketAcceptor can listen for connections on 407multiple ports. SocketAcceptPort no longer needs to be in the DEFAULT 408section and can be assigned to sessions. Sessions can share accepting 409ports like before. 410 411SocketAcceptor/Initiator now implemented using non-blocking sockets. There 412is no longer a danger of dead-locking when using these objects. 413 414Support for ODBC log and message store. QuickFIX can now be used with any 415database with an ODBC driver on windows. Direct MSSQL implementation is 416no longer supported. 417 418Global log exists for logging that does not pertain to an existing session. 419Things like incoming connections where the session is not yet identified 420go in here. The message store factory has a new create() method for creating 421a global log without a session id. 422 423MessageStore interface now supports refresh which will load in settings 424from the persisted store. RefreshOnLogon configuration setting will 425refresh the store whenever the session logs on. Useful for creating 426backup systems. 427 428Added funtionally complete Ruby API. 429 430Python API now supports repeating groups and start() method. 431 432Message::replaceGroup can be used to replace a specific instance of a 433repeating group. 434 435Message::isEmpty can be used to determine if there are any fields in a 436message. Message::clear can clear all fields from a message. 437 438New configuration parameter LogoutTimeout allows you to adjust amount of 439time before session forces a disconnect when there is no logout response. 440 441CheckCompID configuration parameter can be set to N to disable validation 442of message comp ids. This is for systems that send incorrect compids by 443design. 444 445DataDictionary can now be parsed from a stream. This allows you to 446store the DataDictionary however you like as long as you can produce 447a stream in the QuickFIX xml format. 448 449Database IOExceptions now contain reasons for the IO failure which is logged 450if possible. 451 452clear() method on database log implementation take the session qualifier into 453account if applicable. 454 455MySQL and PostgreSQL implementations properly escape strings so any message 456can be recorded no matter what it contains. 457 458Double fields now have a constructor allowing you to pass in the padding 459length of the decimal value. 460 461ScreenLog can read setting from configuration file. No longer required to 462hardcode settings into constructor. 463 464The last received time is now only updated if a message passes validation. 465 466Fixed bug where connections weren't being properly decremented inside 467connection pool. Caused a resource leak by not releasing connections. 468 469Fixed bug with session time when end time is less than the start time on 470the next day. 471 472Fixed bug with session time which spans different time zones. 473 474Fixed a bug so logouts will show logout reason. 475 476Fixed bugs pertaining to generating SQL to clear logs. 477 478Support for repeating groups in headers and trailers. DataDictionary validation 479will also process repeating groups within the message header and trailer. 480 481.NET Field objects now have ToString, Equals, and GetHashCode implementations. 482Added GetHashCode implementation to SessionID. 483 484Reject message will always be processed, even when the session isn't logged on. 485 486Fixed support for nested repeating groups in Java API. 487 488OrigSendingTime now always matches SendingTime when sending a SequenceReset. 489 490Dictionary has a setDay method symetrical to getDay. 491 492Fixed 64 bit compatibility errors in JNI layer. 493 494Added default constructor for SessionID in Java and .NET APIs. 495 496Fixed name of message_log table in mysql creation scripts. 497 498Fixed race condition when stopping/starting initiator/acceptors. 499 500ResetOnLogon will reset state before sending/receiving logon messages. 501 502.NET logs, message stores, initiators and acceptors are now disposable so 503resources can be immediately recovered. 504 505Fixed incorrect Socket Error log message when properly stopping a threaded 506connection. 507 5081.11.1 509------ 510Added padding support for double fields. Allows you to supply the 511minimum number of decimal places in a double. When set to two, 9 will 512become 9.00, but 9.121 will remain the same. 513 514Fixed bug in MySQLLog where it tries to log to old incoming_log table 515instead of the newer messages_log table. 516 517FileLog clear() method did not work. This has been fixed. 518 519clear() method for sql logs were clearing old incoming and outgoing 520tables instead of the newer messages table. 521 522When the clear() method on a log is called, only the logs 523pertaining to that session will be deleted. Previously it was 524deleting logs from all sessions. 525 526Fixed problem when building from the IDE which would lock the .NET 527libraries causing the builds for some .NET projects to fail. 528 529Added Dictionary, MySQL and PostgreSQL source files to vs6 jni project. 530 531In .NET, settings can now be pulled from the SESSION section, and not 532just the DEFAULT section. 533 534Fixed port issues in example cvonfiguration files. 535 5361.11.0 537------ 538Updated code so it will compile under gcc 4.0 and Visual Studio .NET 2005. 539For visual studio, all solution files are merged into a single file. So 540the quickfix C++, .NET, JNI, test applications and example applications 541are all built in a single step. 542 543Added MessageStore and Log support for PostgreSQL and MS SQL Server. 544 545ConnectionPools are available for MySQL and PostgreSQL. Configuration settings 546MySQLStoreUseConnectionPool, MySQLLogUseConnectionPool, 547PostgreSQLStoreUseConnectionPool, and PostgreSQLLogUseConnectionPool have been 548added. When connection pools are enabled, any sessions which share the same 549connection parameters (database, user, password, host and port) will share 550a connection. This is particularly useful for PostgreSQL which has pretty 551low limitations on the number of connections it allows. 552 553JNI Wrapper has been made compatible with 64 bit systems. 554 555Session::logout can be passed a string which contains the reason for the 556logout. The reason will be placed into the text field of the Logout message. 557 558FileLog no longer has separate files for incoming and outgoing messages. All 559messages are placed into one messages file so the original order of the 560transactions can be reconstructed accurately. 561 562SessionSettings can be set programatically from .NET and Java. You no longer 563have to use the hack where you create a stream in the format of a configuration 564file and parse it into a settings file. Direct access to getters and setters 565are exposed. 566 567Removing a group will update the leading count field. 568 569Fixed various bugs with resetting sequence numbers using the ResetSeqNumFlag=Y, 570including issues with ResetOnDisconnect and ResetOnLogoff. Also if in a state where 571we are not logged on and the messages are going to be reset, no messages will be 572succesfully sent (there is no point). 573 574Log class has a clear() method which can be used to clear out the logs 575programatically. 576 577Various fixes to handling of resend requests. 578 579Session qualifier can be accessed from SessionID in .NET 580 581getFieldTag method on DataDictionary will use a tags name to return its number. 582 583Milliseconds can be specified by user in UtcTimeStamp and UtcTimeOnly fields. 584 585Deprecated Message::getString method has been removed, you must now use toString. 586 587Reject reasons are logged by the session even if they cannot be sent to the 588counterparty. 589 590Sequence reset will be processed even if the messages sequence number is too high. 591 592Second thread and buffer queue removed from ThreadedSocketConnection. Each connection 593now only has one thread which interacts with the socket directly. 594 595When a session is reset(), a logout message will be sent to the counterparty. 596 597OrigSendingTime will contain milliseconds when applicable. 598 599Repeating groups can now be removed from messages/groups. 600 601Negative numbers will now be parsed correctly when received in double fields. 602Before these would get converted into 0. 603 604If a null value is set into a character field, the field will be set as empty 605instead of putting a null character into the field. 606 607MySQLLog will use the correct log settings instead of getting its settings 608from the MySQLStore. 609 610Fixed bug where getWeekDay would sometimes return a negative number. 611 612Fixed various issues with FIX data dictionary files. 613 614Added many methods missing from the .NET and Java wrappers of the Session class. 615 616Event object can be passed a value to indicate how long to wait for the event 617instead of being hardcoded to 100 milliseconds. 618 619Fixed out of range error when pulling UtcTimeOnly fields out of groups. 620 621.NET Message wrapper can parse a message with validation turned off. 622setString method also exposed. fromString method exposed to SessionID. 623 624fromString method exposed to SessionID in java API. 625 626DataDictionary will throw a .NET ConfigError exception instead of letting 627the uncaught unmanaged exception propogate, causing a crash. 628 629Time objects are no longer implemented using tm structure. 630 6311.10.2 632------ 633Reset functionality will work if the user appends ResetSeqNumFlag=Y into the 634logon message from the toAdmin callback. Allows for manual reset support. 635 6361.10.1 637------ 638Fixed bugs regarding sequence reset functionality. QuickFIX was not correctly 639respoding with a logon message when receiving a sequence reset. 640 6411.10.0 642------ 643ResetSeqNumFlag is always set when expected sender and target message sequence 644numbers are 1. QuickFIX will also reset it's sequence numbers when it 645received a ResetSeqNumFlag set to 'Y'. 646 647ValidateUserDefinedFields configuration parameter available. Defaults to Y 648which provides functionality of older releases. When set to N, user defined 649fields will not be validated on incoming messages. 650 651Initiators and Acceptors can be reliably stopped and restarted as many times 652as you like. Previously they could only be started and stopped once. 653 654Presence of required fields will be validated inside of required repeating 655groups. Required fields will also be validated in the header and trailer. 656 657getSessions on acceptor and initiator will return a collection of managed 658sessions. 659 660Correctly handle scenario where a SocketConnection receives a first message 661that is not a logon. Previously it would cause the session to be registered 662without ever unregistering and thus not allowing any new connections. 663 664Hearbeat monitor is reset when receiving a message with incorrect MsgSeqNum. 665 666Much more thorough logging inside of Session class. 667 668QuickFIX will add the text from a RejectLogon exception into the Text field 669of the Logout message. 670 671BusinessMessageReject, instead of Reject, will be send with a conditionally 672required field is not found. 673 674Double fields will no longer encode values less than 0.0001 in scientific 675notation. 676 677Initiator will no longer initiate socket connections outside of the session 678time. Previously it would connect and immediately close connection during 679every retry interval. 680 681Receipt of a message without an empty MsgType field is now handled gracefully. 682 683Fixed bug where FileStore would not correctly persist numbers if set to a 684lower sequence number that contained less characters than the current 685sequence number. 686 687An exception thrown from Session::generateReject will no longer result in 688a system crash. 689 690SessionID strings can now be correctly parsed if the SenderCompID contains a 691dash. 692 693Very large resend request processing will not longer result in a stack overflow. 694 695If no length is found in the parser buffer, it will now be cleared out 696instead of reused. 697 698SessionSettings adds extra sanity checks for configuration files, such as 699ensuring initiator or acceptor are present and spelled correctly. 700 701Removed dependence of socket code on FIONREAD/NREAD. The value of the recv 702call is now used to determine dropped connections. All socket code has been 703pulled out of the parser class. 704 705Logout message will be processed even if no Logon was received. 706 707C++ MessageCracker contains non-const onMessage methods for use with toAdmin 708and toApp callbacks. 709 710Added block, poll, and isLoggedOn to initiator/acceptor for java and .NET APIs. 711 712isAdmin, isApp, and GetEnumerator available on Message class in .NET. 713GetEnumerator also available on Header and Trailer. 714 715force flag can be passed into initiator and acceptor stop methods in 716java and .NET 717 718Java will only be compiled under unix when using the -with-java configure 719directive. 720 721CheckSum will not become negative field is set with negative character. 722 723RuntimeErrors regarding port numbers no longer display large numbers as negative. 724 725Directories created by quickfix use more 0777 instead of 0700. 726 727Bug when copying SessionIDs with SessionQualifiers has been fixed. 728 729SessionSettings can be set at runtime using setter calls from java. 730 731Apple standards used when installing java libraries under MAC OS/X. 732 7331.9.4 734----- 735Fixed compilation and linking errors in .NET library. 736 737ThreadedSocketInitiator will reconnect when roaming into a sessions start time. 738 739Instead of the shell/bat scripts allocated extra memory for the JVM to build 740the java API, the memory is allocated in the ant script. 741 742Added mutex locker to Session::unregisterSession 743 744Added strptime implementation from PowerDog for Visual Studio. MySQL code will 745build under windows now. 746 7471.9.3 748----- 749.NET crashes do to random NullPointerExceptions has been fixed. The 750.NET library seems to be completely stable now even under heavy load. 751 752When supplying a DataDictionary to Message::setString, the fields in 753repeating groups will now be placed in the correct order. 754 755Session will no longer send additional logout messages when one is pending. 756 757SocketAcceptor will no longer allow two connections to log on to the same 758session. 759 760When receiving a resend request for a larger than expected sequence number, 761QF will treat this like an INFINITE request. This alleviates problems from 762receiving requests for extremely large numbers which cause a lot of lookups. 763 764When receiving a SequenceReset and GapFill flag set to N, the message will 765be processed even if the MsgSeqNum field is completely absent. 766 767Included message stores will now load up start times with the correct day 768of the year so week long sessions can safely be taken down and brought back 769up. 770 771Message and Parser can now handle messages with null characters. 772 773Session::sendToTarget is now able to route orders using a session qualifier. 774 775Message will be invalid in setString if it has trailing characters extra 776trailing characters that do not belong to a field. 777 778Messages with repeating groups can now have a properly implemented 779copy constructor. It is safe to copy all messages. 780 781Added wrappers in .NET for some missing methods in DataDictionary and 782Session classes. 783 784process_sleep has proper support for millisecond precision under windows. 785 786Some messages in FIX44.xml were identified with the wrong MsgType string. 787 788Added missing DKReason enumerations to FIX40.xml, FIX41.xml, and FIX42.xml 789 790Fixed problem where FieldMap::calculateString did not properly reset the 791output string under VC6. This caused problems with resend requests. 792 793JNI library will check input parameters for nulls and throw a 794NullPointerException if the method cannot handle a null value. 795 796Python library will be installed to the site module path. 797 798get method for retrieving a single message has been removed from MessageStore. 799Only the get methods for retreiving a range needs to be implemented now. 800 801Added missing UserRequest and UserResponse messages for FIX.4.4 802 803Session differentiates between dropping a connection and disconnecting 804normally in the event logs. 805 8061.9.2 807----- 808Fixed incorrect versioning of libraries under unix systems 809 8101.9.1 811----- 812Multi-character Currencies will no longer be rejected 813 814Fixed problems with MySQLStore loading in the wrong fields on startup. 815 816MySQLStore queries will retry once if connection to the daemon got dropped. 817 818Fixed link errors when building with some versions of Visual Studio. 819 820Fixed compilation errors when using STLPort 821 822Applied patches for SUNPro support 823 824Message::toXML() will place field values in a CDATA section in the text 825element so it can handle special XML characters. Placing XML strings that 826contain CDATA sections into a xmldata field will still cause 827problems but I'm not sure much can be done about that. 828 829More updates to FIX40 and FIX41 data dictionaries. 830 8311.9.0 832----- 833Session time logic pulled out into new SessionTime class. Now supports 834weeklong sessions! CME conterparties, start your engines! Use the 835StartDay and EndDay configuration settings. 836 837Massive performance improvements. Receiving and Sending message rates are 838dramatically improved. 839 840SessionQualifier added which allows you to uniquely identify a session with 841otherwise identical characteristics. You can now have multiple sessions 842which share the same BeginString, SenderCompID, and TargetCompID. Use the 843SessionQualifier configuration setting. *NOTE* this necessitated a change in 844the MySQL schema. Regenerate your databases. 845 846Fixed some compilation problems which manifested themselves under VB.NET 847 848Administrative processing will be done after receiving a message if necessary. 849This prevents dropping of heartbeats when a session is pegged with 850traffic, causing the session to terminate. 851 852Some improvement in compilation times. I'd like to see more work done to 853bring them down. 854 855Made several updates and corrections to the data dictionary. 856 857Made compatible with SubPRO compiler. We do not own this compiler so users 858who do will need to keep us up to date on compatability issues. 859 860Fixed some potential memory leaks in the python API. 861 862If a message store cannot be created under java, a proper java exception will 863be thrown. 864 865SessionSettings will throw ConfigError as java exception. 866 867JavaLogFactory throw ConfigError if log cannot be created. 868 869Connection classes correctly propogate RecvFailed exception. 870 871getFieldType exposed in java DataDictionary, although the enumerations are not 872yet exposed. You need to test against their integer values. 873 8741.8.0 875----- 876Completed python API. Now QuickFIX can be used to FIX enable python scripts. 877This is currently only tested on linux. It will probably work on solaris, and 878FreeBSD. To enable the python interface, run configure with 879--with-python=<dir containing Python.h>. Most of the python API is generated 880with SWIG (www.swig.org), thanks to them for updating their software to 881accomodate our requirements. If you wish to regenerate the API off of the 882SWIG interface definition file, you must get the latest SWIG from cvs. 883 884VB.NET API works again. 885 886Logout message with message indicated expected and received MsgSeqNum is sent 887if a too low sequence number is received. 888 889Initiator and Acceptor poll() commands now work under Windows. 890 891MySQL log and store will use proper escape sequences if any double quotes 892appear in the message. Previously, these resulted in I/O errors. 893 894UtcDate becomes UtcDateOnly as per FIX.4.4 895 896Executor example application implemented in VB.NET and python. Documentation now 897includes VB.NET and python code snippets. 898 899Fixed a couple bugs with the MySQL message store. Some of the sequence numbers 900were being stored/retrieved in reverse. (thanks to Pasqale d'Aloise) 901 902Correct useful error is logged if a message is received with a sequence number 903too low without a PossDup flag. The previous error "Field Not Found" was 904incorrect. 905 906The default behavior in the MessageCracker for admin messages is to ignore the 907messages. Application messages will continue to throw UnsupportedMessageType. 908 909Unit tests are always built without optimizations to speed up compilation. 910 911MySQL scripts, log, and message store explicitly set the user to root by 912default to reflect requirements of new versions of MySQL. 913 914JNI workspace now points to the project in the correct directory, so the JNI 915library will build normally without having to modify the workspace. 916 917The first message received within the sessions time frame should always be 918processed. There were some circumstances where it would not correctly identify 919itself as being in the session time until the second message. 920 921Fixed some minor issues with the libxml based parse to make it more generally 922useful. 923 924process_sleep can sleep for sub-second timespans again. 925 926Added constructor which takes in SessionSettings to .NET FileLogFactory 927 9281.7.1 929----- 930License moved over to quickfixengine.org. Otherwise it is identical. 931 932logon() and logoff() methods provided for the Session class, allowing you to 933programatically. Session times still work normally, but anytime during the 934session time you can logoff and then re-logon. 935 936When stopping an initiator or acceptor, all sessions will go through a proper 937logoff sequence instead of just disconnecting. A session will be killed if it 938does not receive a logoff response within 5 seconds. 939 940Sequence numbers will be incremented correctly when rejected a resent message. 941This fixes an infinite resend request problem. 942 943Reject messages will no longer reverse routing fields if they 944were sent as blanks, fixing an inifinite resend request problem. 945 946A Session's MessageStore can now be accessed with getStore() method. Both 947getLog() and getStore() are available in Java and .NET APIs. 948 949Improved logging for disconnect scenarios. 950 951Message class now as isAdmin and isApp member functions. 952 953Message exposes iterators under Java which return fields as 954StringFields. Now you can iterate through all fields to dynamically 955discover what is available in a message. 956 957removeField added to Java Message. 958 959More Session methods are exposed in Java and .NET. 960 961Methods to retrieve information about what is in a DataDictionary now exposed 962through Java interface. 963 964In Java, constructor that takes in a DataDictionary but turns off validation 965is exposed. 966 967getGroup under Java will throw a proper exception instead of aborting. 968 969In the data dictionary file, omments can be added between values under 970enumerations without QuickFIX complaining about the format. 971 972Windows version whould now build with millisecond support. 973 974In FIX 4.0, Time type is treated like a UtcTimeStamp instead of a String. 975 976Example applications are part of the main build under *nix. 977 978stop on the initiator and acceptor will now work with the block() call. 979 980SecurityIDSource changed from CHAR to STRING in FIX44.xml 981 982Fixed warning when building .NET library. 983 9841.7.0 985----- 986FIX 4.4 support added to .NET! The .NET API had to be segmented into two 987assemblies: quickfix_net and quickfix_net_messages. Why? Well, the Managed 988C++ compiler has a bug that causes it to choke on any class with more than 17 989nested classes. FIX 4.4 being the monster that it is, has several messages 990with more than 17 repeating groups (yikes!), so the generated code choked. 991This caused me some pain but eventually I came up with the less than ideal 992but workable solution of generating the message code as C#, which does not 993suffer from this problem. So part of the .NET API is implemented in Managed 994C++ and part of it in C#. 995 996Java package changed from org.quickfix to just quickfix. I know this is a 997horrible thing to do to you but the fact is we just don't have the domain 998name. In the meantime I have registered quickfixengine.org (nothing is there yet) 999 1000Session mutex is locked during a resend request. This will prevent new messages 1001from being sent in the middle of a resend request, which could cause all sorts 1002of havoc. 1003 1004Support added for Mac OS X and FreeBSD. Mac OS X doesn't currently support 1005sending milliseconds in UtcTimeStamps. Some of the documentation for these 1006two systems isn't complete, so you should follow the linux documentation. 1007 1008Session more gracefully handles sending of messages during the logon process. 1009 1010Session will disconnect instead of sending a reject message on a bad logon. 1011In the future we may want to provide and option to send a logout with an 1012error message, although this is not generally recommended. 1013 1014reverseRoute added to message which will fill in inversed routing information 1015based on another message, allowing you to conveniently send a response. The 1016Session class uses this for reject messages in order to ensure optional routing 1017tags are included in rejects. 1018 1019Acceptance test runner ported to ruby 1.8. 1020 1021For windows, debug libraries are placed into a separate debug directory instead 1022of being named things like quickfix_debug.lib. The reason is that .NET projects 1023don't seem to support the notion of different versions of a build having different 1024file names, just different directories. So in order to standardize I had to 1025change everything to follow this format. 1026 1027DataDictionary class has been wrapped for Java and .NET. This allows you to 1028pass a DD into a message constructor along with a string. This will allow you 1029to parse messages with repeating groups. 1030 1031Fixed problems with Session states not automatically resetting to prepare for 1032the start of a new session. Sessions should now reset their state at the 1033correct times. 1034 1035Added toString() call to SessionID 1036 1037SessionID's can now be streamed in from a string. Useful if you want to stream out 1038a list of sessions to a file and recreate the objects from that file. 1039 1040Values in the settings file are read by a more inclusive regexp so many more 1041special characters can be used. 1042 1043UtcTimeStamps now support milliseconds. SendingTimes for FIX versions 10444.2 and higher will be sent with millisecond resolution. A new session level 1045setting MillisecondsInTimestamp is provided. The default value is Y. 1046 1047Messages will be correctly parsed if it receives a partial BodyLength field. 1048The parser will make sure the complete field has been received before parsing 1049the rest of the message. 1050 1051The blockingStart call has been renamed to simply block, and a new poll call 1052has been added to Initiator and Acceptor. So options for running quickfix are 1053through the start(), block(), and poll(), commands. 1054 1055getYearDay added to UtcTimeStamp and UtcTimeDate which returns the current day 1056of the year. (e.g. January 31 = 31, Febuary 1 = 32 ) 1057 1058Floating point fields will be accepted with multiple leading 0's. 1059 1060.NET now has wrappers for the low-level C++ accessors for Message and Group. 1061 1062Added support for isSetField to java. 1063 1064Corrected some threading issues in windows by switching from _beginthread to 1065beginthreadex and from GetCurrentThread to GetCurrentThreadId 1066 10671.6.0 1068----- 1069FIX 4.4 support for C++ and Java APIs, with .NET on the way. You can 1070technically use 4.4 with .NET now, but the generated message classes 1071are not yet available. 1072 1073Messages with repeating groups will no longer be silenty ignored when 1074no data dictionary is available. QuickFIX will accept the message and 1075send a proper reject message at validation. Reject message will be 1076supplied for unspecified repeating tags, and count mismatches for 1077repeating groups. 1078 1079ResendRequests are now done to INFINITY to reduce race condition 1080scenarios. 1081 1082Out of sequence ResendRequest don't alter sequence numbers which 1083would cause race conditions during simultaneous ResendRequests. 1084 1085Each C++ message is placed in its own file. This separation repairs 1086issues with Visual Studio running out of heap space. This does mean, 1087however, that you will need to include the header for each individual 1088you intend on using instead of just including Messages.h 1089 1090Fields of type MultipleValueString that have enumerations will check 1091each individual value instead of checking the string as a whole. For 1092instance if you are sent a MVS containing "A C 5", the validator will 1093verify that A C and 5 are all valid enumerations. 1094 1095More descriptive error messages when reading invalid DataDictionary 1096files. QuickFIX will no longer crash when givin a badly formatted 1097XML document, instead a ConfigError is thrown. 1098 1099Repeating groups within Component are now read correctly from the 1100DataDictionary file. 1101 1102DataDictionary will enforce that field names are unique. This 1103prevents accidentally assigning two different field names to the 1104same tag number. 1105 1106Fixed a bug where messages sent while logged off were not stored in 1107the MessageStore, causing them to never be resent. 1108 1109By popular demand, the .NET API now exposes the isSetField call. This 1110allows .NET users to check for the presence of a field in a message. 1111 1112Fixed bug where re-used Field classes would not recalculate their 1113length and checksum when their values changes, causing messages to 1114be sent out with incorrect lenths or checksums. 1115 1116Fixed bug that cause the sendToTarget( Message, String, String ) 1117signature would always fail from the Java API. 1118 1119Fixed incomplete copy operator for DataDictionary. 1120 1121ScreenLog now displays proper timestamps. 1122 1123libxml2 can be linked into windows build as an alternative to MSXML. 1124 1125Added accessor to Session class for the DataDictionary. 1126 1127Banzai should load correctly with the supplied configuration file. 1128 1129socket_t will be defined as int if not defined by the system. This 1130allows QF to be compiled on older systems such as Solaris 2.6 1131 11321.5.0 1133----- 1134Support for DATA fields. This will allow to safely send encrypted and 1135compressed fields. Out of necessity, FIX parser uses the length field 1136instead of just looking for 10=SOH. This means behavior will be slightly 1137different when receiving messages with an incorrect length. 1138 1139Acceptor and Initiator start() method is a non-blocking call. onRun 1140is no longer called in your application. Instead you must call stop on 1141your initiator or acceptor when you want it to shut down. 1142 1143Fixed several problems with parsing nested repeating groups and groups 1144with components. 1145 1146Added UseDataDictionary field which defaults to Y. You must explicitly 1147set this field to N if you DONT want to use a DataDictionary. 1148 1149New include structure for C++. Includes are now in the form of 1150quickfix/[file].h instead of the old quickfix/include/[file].h 1151 1152Several optimizations added to increase the speed of creating, parsing, 1153and sending messages. Overall performance of the engine should be 1154considerably better. Messages with repeating groups should show dramatic 1155performance increase. 1156 1157All libraries are now build as shared libraries. This also doubles the speed 1158of the build under gcc because object files only need to be compiled once 1159instead of twice as before. 1160 1161Header file dependencies have been reduced to speed up build. This may means 1162headers that were previously pulled in automatically via other header files, 1163may no longer do so. You will now need to explicitly include these files where 1164needed. 1165 1166Fixed some resource leaks when shutting down threads. 1167 1168Added java acceptance tests. All FIX test scripts can now be run with 1169the runat_java and runat_java.bat commands in the test directory. FIX 4.3 1170tests now run with runat_threaded 1171 1172Queued logon messages (logons messages received with sequence number to 1173high), are skipped when processing queue. 1174 1175Build will pull CFLAGS, CXXFLAGS, and LDFLAGS in from the environment. 1176Default compiler flags are now -O2 -g. This may cause problems with some 1177older versions of gcc. Set CXXFLAGS to -O or blank if you have problems 1178compiling 1179 1180Added new 'void toString( std::string& )' and 'void toXML( std::string& )' 1181method calls. These are more efficient than 'string toString()' and 1182'string toXML' calls. The new versions should be used if these methods 1183are called in a loop for better performance. 1184 1185FileLog forcefully flushes writes so the state of the storage file is 1186always up to date. 1187 11881.4.1 1189----- 1190Fixed compilation errors when building under gcc 3.x (matching throw 1191specifiers, JNI patch). Also got rid of warnings caused by generated 1192source files not ending with newlines. 1193 1194getValue call in Java and .NET message class will throw and IncorrectDataFormat 1195exception instead of just crashing. In C++, method also throws 1196IncorrectDataFormat instead of FieldConvertError. 1197 1198QuickFIX C++ call stack is available by running configure with the 1199--enable-callstack option, or defining USING_CALLSTACK in windows_config.h 1200 1201Engine will no longer crash when specifying an invalid hostname 1202 1203Added ConfigError throw specifier to Initiator/Acceptor start method. 1204 1205Removed ^M characters from install-sh which caused compile problems on 1206some systems. 1207 1208Fixed code generation so groups withing components within groups are 1209show up in message classes. 1210 1211Added missing SEQNUM type to DataDictionary. 1212 1213Increased heap size for Visual Studio so heap allocation errors are 1214less likely when compiling. 1215 1216In Java, renamed Session class to SessionSettings to match the C++ API 1217 1218Fixed bug where session times would not ever reset when the start time 1219is greater than the end time. 1220 1221Reentrant system calls are used when they are available. Fixed 1222unsynchronized resource bug on multi-processor machines. 1223 1224Initiator and Acceptor use correct result after spawning thread, 1225instead of assigning the boolean result as the threadid. 1226 1227Fixed deadlock in ThreadedSocketAcceptor and ThreadedSocketInitiator 1228when shutting down. 1229 1230UtcDate now calls the correct constructor so it is initialized 1231properly. 1232 1233Java MessageCracker now supports FIX 4.3 messages. 1234 12351.4.0 1236----- 1237Support for FIX 4.3 1238 1239New less redundant DataDictionary format, with support for component blocks 1240 1241reset method on Session now available in JAVA and .NET API's 1242 1243setNextSenderMsgSeqNum and setNextTargetMsgSeqNum available on session in all API's 1244 1245Changes made to messages in toAdmin and toApp in JAVA are correctly applied when sending 1246 1247new throw specifiers on fromAdmin and fromApp message. Prevents 1248crashes from occuring when no data dictionary is used. 1249 1250isSetField method added to JAVA API. Methods in version specific 1251messages also have methods to check if fields are set. 1252 1253sendToTarget throws SessionNotFound exception instead of just crashing 1254under .NET 1255 1256Fixed memory leaks in JNI interface 1257 1258Fixed race condition between sending application and admin messages 1259 1260Processing of Queue in ThreadedSocketConnection modified so it can 1261better handle large sustained throughput 1262 1263.NET namespace changed from Fix to QuickFix. Resolves conflict with 1264unmanaged FIX namespace allowing library to be used from VB.NET 1265 1266Messages with repeating groups no longer take in the number of 1267repeating groups in the constructor. This value was always 1268overwritten when adding groups anyway. 1269 1270The start method in Initiator and Acceptor can throw an exception if a 1271serious error occurs. 1272 1273SocketAcceptor and ThreadedSocketAcceptor will no longer allow you to 1274silently takeover a used port. An exception will be thrown instead. 1275 1276New constructor for SessionID takes strings. 1277 1278New setting ValidateFieldsHaveValue can be set to N to prevent 1279rejecting messages with empty fields. 1280 1281MySQL MessageStore will properly reset sequence numbers 1282 1283Java field classes have final integers which identify the tag number 1284of the field. 1285 1286Java and .NET will no longer crash when a incorrectly formatted field 1287is read from a session without a data dictionary. 1288 12891.3.2 1290----- 1291More portable file copies during build process on unix 1292 12931.3.1 1294----- 1295Fixed memory leak in repeating groups caused by FieldMap not calling 1296clear() in destructor. 1297 1298Corrected some minor errors building sample applications on some systems. 1299 13001.3.0 1301----- 1302Support for java on linux and solaris! Note some compilers/linux distributions 1303dont seem to do as well with this as others. 1304 1305Added support for repeating groups in .NET and java APIs. 1306 1307Event and message logging now available through the Log interface. This is 1308separate from the MessageStore which is now more acurately refered to as 1309a state mechanism. 1310 1311MySQLFileStore added. Now QuickFIX can maintain state in a production quality 1312open source database right out of the box. 1313 1314--with-stlport configure option added for building with STLport. This 1315fixes stability problems that users have been experiencing on 1316multi-processor machines with 2.95.x compilers. 1317 1318Message decoding has been optimized. Decoding FIX messages is now 3 1319times faster than before. 1320 1321Message class can now output FIX messages as XML. 1322 1323Fixed copy operator for FieldMaps that contain repeating groups. 1324 1325Fixed resource leaks in .NET API. Message class should now be garbage 1326collected correctly. Also implemented IDisposable interface for 1327Message. Be sure you know what you are doing before using this! 1328 1329DataDictionary parser works much better. In particular it is able to 1330generate the FIX40.xml and FIX41.xml files much more accurately. 1331 1332Test Requests are now sent properly during times of high activity. 1333 1334Test Request time span shortened for a timed out connection. 1335 1336MessageStore sets and gets strings instead of messages. This allows 1337the session to properly parse stored messages using its data 1338dictionary. The old way was causing problems with resends with 1339repeating groups. 1340 1341All MessageStore functions can now throw an IOException. If a session traps 1342an IOException it will consider it a serious problem and disconnect. 1343 1344The get method in MessageStore that asks for a range is now a void method 1345instead of a boolean. If there is a problem retrieving a message, throw an 1346IOException. If you are asked for a message you do not have, just send back 1347whatever is available within the range. 1348 1349Faster load times for sessions that share a data dictionary. Each 1350DataDictionary file is now only parsed once on startup. 1351 1352In JAVA booleans are properly represented as booleans instead of Strings 1353 1354Currency types are properly represented as Strings 1355 1356Rejecting a resent message will no longer increment the expected 1357sequence number. 1358 1359Can now properly accept a message with repeating group where the 1360counter is set to zero. 1361 1362Continuous builds now being run on windows-vc6, windows-vc7, and 1363linux-pgcc-2-95-2, and solaris-gcc-2-95-3-stlport 1364 1365Message::getString() deprecated in favor of Message::toString() 1366 13671.2.1 1368----- 1369config.h no longer included from Utility.h. This was causing problems 1370when people wanted to build quickfix application without autotools. 1371 1372More robust detection of dropped/bad sockets. One of our users ran 1373into a problem with this during certification with the CME. He has 1374confirmed that it works correctly now. 1375 1376Closing acceptors now works in all situations. 1377 1378Mutex locking in session is a little smarter, making it easier to 1379syncrhonize applications. 1380 1381code is now auto formatted with astyle. This makes it easier for 1382people to contribute code without having to worry as much about 1383conforming to coding standards. 1384 13851.2.0 1386----- 1387First release of .NET API for QuickFIX. The API is mostly a direct 1388port of the JAVA API, future versions well attempt to refine this API 1389to use more .NET specific constructs. QuickFIX applications can now be 1390written in C# or VB.NET or any other CLR language. 1391 1392Documentation covers all API's, C++, Java, and .NET 1393 1394New example application executor. Executor example is implemented in 1395C++, Java and C# for side by side comparison. 1396 1397Fixed bug where the session time range was not calculated correctly 1398when minutes or seconds were involved. (.i.e., is that start time was 1399set to 12:30:00, the 30 would cause problems, wheras 12:00:00 would be fine). 1400 1401Resend requests with EndSeqNo set to 0 (>=FIX 4.2) or 999999 (<=FIX 14024.1) are now supported. 1403 1404Possible duplicate messages with a sequence number that is too low 1405will no longer be forwarded to the application callback. 1406 1407FIX Specification parser modified so it will now capture some fields 1408that it was missing. The FIX42.xml file in particular is more complete. 1409 1410Made Java API more consistant with C++ API. 1411 14121.1.1 1413----- 1414Fixed memory leak caused by copying repeating groups. 1415 1416Added acceptance tests for FIX 4.0 and 4.1 1417 1418When new fields are added to the header or trailer portion of the XML 1419data dictionary, QuickFIX will now handle them appropriately. 1420 1421Header fields, not just body fields, can now be added to messages 1422passing through toApp and toAdmin callbacks 1423 1424New setting CheckLatency and MaxLatency are available for session 1425configuration. CheckLatency defaults to Y and determines if a session 1426will check if a message looks too old to process. MaxLatency defaults 1427to 120 and is the maximum number of seconds a message can be out of 1428date and still be considered good. 1429 1430New setting ValidateFieldsOutOfOrder is available for session 1431configuration. Sets whether or not header and body fields can be out 1432of order. Useful for connecting to systems that don't properly sort their 1433fields. 1434 1435New setting LogonTimeout is availbale for session configuration. 1436Number of seconds QuickFIX will wait to receive a logon response. 1437Defaults to 10. 1438 1439Another fix put in to allow string based enumeration to be properly validated. 1440 1441RefMsgType field no longer added to reject messages in versions 1442earlier than 4.2 1443 1444SequenceReset messages are now appropriately send with OrigSendingTime field. 1445 1446RejectLogon, DoNotSend and UnsupportedMessageType exceptions added to 1447JAVA interface. 1448 1449New settings ResetOnLogout and ResetOnDisconnect will reset sequence 1450numbers when a session is respectively normally or abnormally terminated. 1451 1452<string> is included from Exceptions.h, which makes QF compilable with STLPort. 1453 14541.1.0 1455----- 1456Added support for messages with repeating groups. 1457 1458Added ThreadedSocketInitiator and ThreadedSocketAcceptor. Each session 1459has its own thread for listening on a socket and one for processing messages. 1460 1461The signature for toApp and toAdmin have changed from 1462 ( const Message&, const SessionID& ) 1463to ( Message&, const SessionID& ). 1464This allows applications to add fields to messages before they are sent out. 1465Particularly useful for administrative messages that need fields that arn't 1466added by default. 1467 1468Filestore is much more memory efficient. Only file offsets are stored in memory 1469and messages are retreived on in as needed basis. This keeps memory use way 1470down and also is a little faster for normal operations. 1471 1472On Linux and Solaris upgraded from libxml to libxml2. It is recomended by 1473the libxml guys that all new applications use libxml2. configure will verify 1474that libxml is installed on a system and automatically add the necessary 1475command line parameters. 1476 1477Possible duplicate messages are now passed to the fromAdmin and 1478fromApp application callbacks. Applications must now check for this 1479field and determine how possible duplicate messages should be handled. 1480 1481Values.h correctly generated enumerations for fields of type INT. 1482 1483Validation works with STRING enumerations, not just CHAR and INT. 1484 1485Sockets are now properly closed if a connection fails. This fixes a 1486leak in socket resources that appeared after a large number of 1487reconnect attempts. 1488 1489RefTagID, RefMsgType are no longer added to reject message in versions 1490of FIX 4.1 and earlier. BusinessMessageReject no longer used in FIX 1491versions 4.1 and earlier. 1492 1493Improved DataDictionary generation. More enumerations are listed. 1494 14951.0.4 1496----- 1497Fixed bug in FileStore where .session file was overwritten on reload. 1498 1499SocketInitiator now supports multiple alternate host and ports which allows 1500QuickFIX to take advantage of systems with failover servers. 1501 1502Custom build step under windows is now compatible with Visual Studio 7. 1503 1504Changed fields from template instantiated classes to standard classes in 1505order to stop Visual Studio 6 from crashing while in auto-complete mode. 1506 1507Changed char pointer comparison operators for StringField to friend functions 1508so left hand side comparisons can be done such as "value" == senderCompID. 1509 1510Began implementation of repeating groups. 1511 15121.0.3 1513----- 1514Added unit testing framework to ordermatch 1515 1516Fixed bug in ordermatch where executing a partailly filled order resulted in 1517the order being left open with a negative ammount. 1518 1519Added commands to standard input for ordermatch to list available symbols and 1520for displaying a book. 1521 1522Began implementation of C API. 1523 1524Added target field to order table in banzai. 1525 1526Banzai can now properly handle receiving executions from multiple targets 1527 15281.0.2 1529----- 1530Fixed an incorrect number 84600 in FieldTypes.h with the 1531constant UTC_DAY which is the correct 86400 1532 15331.0.1 1534----- 1535Several classes deriving from FIX::Application had different throw specifiers 1536than the base class. This caused compilation errors with some compilers. 1537This has been corrected. 1538 1539FAQ has been updated. 1540