Skip to content

Commit 9235196

Browse files
committed
Validate session_lifetime_ms
1 parent 183ddfa commit 9235196

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

kafka/net/connection.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -500,8 +500,13 @@ def task(self):
500500

501501
def session_updated(self, session_lifetime_ms):
502502
"""Capture broker-advertised session lifetime after each successful
503-
auth round (initial and subsequent re-auths)."""
503+
auth round (initial and subsequent re-auths). Clamp negative values to 0,
504+
and require minimum non-zero lifetime of 1sec (1000)."""
504505
self.session_lifetime_ms = session_lifetime_ms or 0
506+
if self.session_lifetime_ms < 0:
507+
self.session_lifetime_ms = 0
508+
elif 0 < self.session_lifetime_ms <= 1000:
509+
self.session_lifetime_ms = 1000
505510
self.authenticated_at = time.monotonic()
506511

507512
def schedule(self):
@@ -513,7 +518,7 @@ def schedule(self):
513518
if not self._conn.sasl_enabled or not self.session_lifetime_ms:
514519
return
515520
pct = random.uniform(0.85, 0.95)
516-
delay = max(0.1, (self.session_lifetime_ms * pct) / 1000)
521+
delay = (self.session_lifetime_ms * pct) / 1000
517522
log.debug('%s: Scheduling SASL re-authentication in %.3fs (session_lifetime_ms=%d)',
518523
self._conn, delay, self.session_lifetime_ms)
519524
self._task = self._conn.net.call_later(delay, self._run)

0 commit comments

Comments
 (0)