diff --git a/code/pymqi/__init__.py b/code/pymqi/__init__.py index 989215e3380e5ab5d19efbc571adb636a1b511c1_Y29kZS9weW1xaS9fX2luaXRfXy5weQ==..1bf9647c7b7a8beb20e0a9f236f3c8fc1be0b902_Y29kZS9weW1xaS9fX2luaXRfXy5weQ== 100644 --- a/code/pymqi/__init__.py +++ b/code/pymqi/__init__.py @@ -97,7 +97,10 @@ import ctypes import sys -from typing import Any, Optional, Union, Dict +try: + from typing import Any, Optional, Union, Dict +except ImportError: + pass # import xml parser. lxml/etree only available since python 2.5 use_minidom = False @@ -2875,4 +2878,5 @@ parameter = None # type: Optional[MQOpts] group = None group_count = 0 + while (index > 0): @@ -2878,5 +2882,6 @@ while (index > 0): + parameter_type = struct.unpack(MQLONG_TYPE, message[cursor:cursor + 4])[0] if group_count == 0: group = None if group is not None: group_count -= 1 @@ -2879,11 +2884,11 @@ if group_count == 0: group = None if group is not None: group_count -= 1 - if message[cursor] == CMQCFC.MQCFT_STRING: + if parameter_type == CMQCFC.MQCFT_STRING: parameter = CFST() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFST_STRUC_LENGTH_FIXED]) if parameter.StringLength > 1: parameter = CFST(StringLength=parameter.StringLength) parameter.unpack(message[cursor:cursor + parameter.StrucLength]) value = parameter.String @@ -2884,10 +2889,10 @@ parameter = CFST() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFST_STRUC_LENGTH_FIXED]) if parameter.StringLength > 1: parameter = CFST(StringLength=parameter.StringLength) parameter.unpack(message[cursor:cursor + parameter.StrucLength]) value = parameter.String - elif message[cursor] == CMQCFC.MQCFT_STRING_LIST: + elif parameter_type == CMQCFC.MQCFT_STRING_LIST: parameter = CFSL() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFSL_STRUC_LENGTH_FIXED]) if parameter.StringLength > 1: @@ -2896,7 +2901,7 @@ StrucLength=parameter.StrucLength) parameter.unpack(message[cursor:cursor + parameter.StrucLength]) value = parameter.Strings - elif message[cursor] == CMQCFC.MQCFT_INTEGER: + elif parameter_type == CMQCFC.MQCFT_INTEGER: parameter = CFIN() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFIN_STRUC_LENGTH]) value = parameter.Value @@ -2900,7 +2905,7 @@ parameter = CFIN() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFIN_STRUC_LENGTH]) value = parameter.Value - elif message[cursor] == CMQCFC.MQCFT_INTEGER64: + elif parameter_type == CMQCFC.MQCFT_INTEGER64: parameter = CFIN64() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFIN64_STRUC_LENGTH]) value = parameter.Value @@ -2904,7 +2909,7 @@ parameter = CFIN64() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFIN64_STRUC_LENGTH]) value = parameter.Value - elif message[cursor] == CMQCFC.MQCFT_INTEGER_LIST: + elif parameter_type == CMQCFC.MQCFT_INTEGER_LIST: parameter = CFIL() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFIL_STRUC_LENGTH_FIXED]) if parameter.Count > 0: @@ -2912,7 +2917,7 @@ StrucLength=parameter.StrucLength) parameter.unpack(message[cursor:cursor + parameter.StrucLength]) value = parameter.Values - elif message[cursor] == CMQCFC.MQCFT_INTEGER64_LIST: + elif parameter_type == CMQCFC.MQCFT_INTEGER64_LIST: parameter = CFIL64() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFIL64_STRUC_LENGTH_FIXED]) if parameter.Count > 0: @@ -2920,7 +2925,7 @@ StrucLength=parameter.StrucLength) parameter.unpack(message[cursor:cursor + parameter.StrucLength]) value = parameter.Values - elif message[cursor] == CMQCFC.MQCFT_GROUP: + elif parameter_type == CMQCFC.MQCFT_GROUP: parameter = CFGR() parameter.unpack(message[cursor:cursor + parameter.StrucLength]) group_count = parameter.ParameterCount @@ -2928,7 +2933,7 @@ group = {} res[parameter.Parameter] = res.get(parameter.Parameter, []) res[parameter.Parameter].append(group) - elif message[cursor] == CMQCFC.MQCFT_BYTE_STRING: + elif parameter_type == CMQCFC.MQCFT_BYTE_STRING: parameter = CFBS() parameter.unpack(message[cursor:cursor + CMQCFC.MQCFBS_STRUC_LENGTH_FIXED]) if parameter.StringLength > 1: