@@ -100,7 +100,7 @@ def _calculate_exception_length(self):
100100 return self .base_adu_size + 2 # Fcode(1), ExceptionCode(1)
101101 return None
102102
103- def _validate_response (self , request , response , exp_resp_len ):
103+ def _validate_response (self , request , response , exp_resp_len , is_udp = False ):
104104 """Validate Incoming response against request.
105105
106106 :param request: Request sent
@@ -118,7 +118,7 @@ def _validate_response(self, request, response, exp_resp_len):
118118 ):
119119 return False
120120
121- if "length" in mbap and exp_resp_len :
121+ if "length" in mbap and exp_resp_len and not is_udp :
122122 return mbap .get ("length" ) == exp_resp_len
123123 return True
124124
@@ -161,7 +161,9 @@ def execute(self, request): # noqa: C901
161161 else :
162162 full = False
163163 c_str = str (self .client )
164+ is_udp = False
164165 if "modbusudpclient" in c_str .lower ().strip ():
166+ is_udp = True
165167 full = True
166168 if not expected_response_length :
167169 expected_response_length = 1024
@@ -173,7 +175,8 @@ def execute(self, request): # noqa: C901
173175 )
174176 while retries > 0 :
175177 valid_response = self ._validate_response (
176- request , response , expected_response_length
178+ request , response , expected_response_length ,
179+ is_udp = is_udp
177180 )
178181 if valid_response :
179182 if (
0 commit comments