TimelordUK / jspurefix

native typescript FIX engine
MIT License
58 stars 27 forks source link

Logon message is broken in FIX 4.3 #52

Closed ChrisiPK closed 8 months ago

ChrisiPK commented 1 year ago

The logon message for FIX 4.3 is missing user name and password fields. It is not possible to logon without these fields.

https://github.com/TimelordUK/jspurefix/blob/master/src/types/FIX4.3/repo/logon.ts

I will be happy to create a pull request to fix this. However, I am wondering: Is FIX 4.3 supported by this library? Or will I run into more problems when trying to use it and I should try to use 4.4 in its place?

TimelordUK commented 1 year ago

looks like a bug in XML parser for repo i will have to debug it

in interim If you pull latest from master I have added the quickfix 4.3

https://github.com/TimelordUK/jspurefix/blob/master/src/types/FIX4.3/quickfix/logon.ts

is this OK to use? this should work I added the compiled types for quickfix from this XML


import { IStandardHeader } from './set/standard_header'
import { ILogonNoMsgTypes } from './set/logon_no_msg_types'
import { IStandardTrailer } from './set/standard_trailer'

export interface ILogon {
  StandardHeader: IStandardHeader// [1] BeginString.8, BodyLength.9 .. HopRefID.630
  EncryptMethod: number// [2] 98 (Int)
  HeartBtInt: number// [3] 108 (Int)
  RawDataLength?: number// [4] 95 (Length)
  RawData?: Buffer// [5] 96 (RawData)
  ResetSeqNumFlag?: boolean// [6] 141 (Boolean)
  MaxMessageSize?: number// [7] 383 (Length)
  NoMsgTypes?: ILogonNoMsgTypes[]// [8] RefMsgType.372, MsgDirection.385
  TestMessageIndicator?: boolean// [9] 464 (Boolean)
  Username?: string// [10] 553 (String)
  Password?: string// [11] 554 (String)
  StandardTrailer: IStandardTrailer// [12] SignatureLength.93, Signature.89, CheckSum.10
}
ChrisiPK commented 1 year ago

Thanks for the fast response! I pulled from master and changed the dictionary to qf43 and now I can log on. :) I will do some more testing and check if everything else works as well.

However, I also encountered another error:

2022-10-14T18:42:59.669Z [launcher] error: ENOENT: no such file or directory, lstat '/workspaces/jspf-demo/node_modules/jspurefix/data/FIX43.xml' : Error: ENOENT: no such file or directory, lstat '/workspaces/jspf-demo/node_modules/jspurefix/data/FIX43.xml' at Object.lstatSync (node:fs:1516:3) at DefinitionFactory.getParser (/workspaces/jspf-demo/node_modules/jspurefix/dist/util/definition-factory.js:36:16) at DefinitionFactory. (/workspaces/jspf-demo/node_modules/jspurefix/dist/util/definition-factory.js:30:33) at Generator.next () at /workspaces/jspf-demo/node_modules/jspurefix/dist/util/definition-factory.js:8:71 at new Promise () at __awaiter (/workspaces/jspf-demo/node_modules/jspurefix/dist/util/definition-factory.js:4:12) at DefinitionFactory.getDefinitions (/workspaces/jspf-demo/node_modules/jspurefix/dist/util/definition-factory.js:24:16) at /workspaces/jspf-demo/node_modules/jspurefix/dist/runtime/make-config.js:32:40 at new Promise ()

The problem is that the file extension of data/FIX43.XML is all uppercase, whereas the code is looking for lowercase. I renamed the file locally to FIX43.xml and that has fixed the problem for me. Would be great if you could also change that in the repository.

TimelordUK commented 8 months ago

this has been fixed thanks for raising issue