Skip to content

Commit d6e0014

Browse files
authored
Correct expected length for udp sync client. (#1930)
1 parent c8a7d5f commit d6e0014

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

pymodbus/transaction.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)