Call packet collecter after prepare during tx.

We have to call the packet collector.tx() only after
a packet has been prepared for tx, because that's when the
new msgNo is assigned.
This commit is contained in:
Hemna 2024-04-19 12:53:12 -04:00
parent 717db6083e
commit bef32059f4
2 changed files with 10 additions and 2 deletions

View File

@ -1,4 +1,5 @@
import datetime
import logging
import threading
from oslo_config import cfg
@ -9,6 +10,7 @@ from aprsd.utils import objectstore
CONF = cfg.CONF
LOG = logging.getLogger("APRSD")
class PacketTrack(objectstore.ObjectStoreMixin):
@ -100,7 +102,7 @@ class PacketTrack(objectstore.ObjectStoreMixin):
@wrapt.synchronized(lock)
def get(self, key):
return self.data.get(key, None)
return self.data.get(key)
@wrapt.synchronized(lock)
def remove(self, key):

View File

@ -1,4 +1,5 @@
import logging
import threading
import time
from oslo_config import cfg
@ -6,6 +7,7 @@ from rush import quota, throttle
from rush.contrib import decorator
from rush.limiters import periodic
from rush.stores import dictionary
import wrapt
from aprsd import client
from aprsd import conf # noqa
@ -37,15 +39,19 @@ ack_t = throttle.Throttle(
msg_throttle_decorator = decorator.ThrottleDecorator(throttle=msg_t)
ack_throttle_decorator = decorator.ThrottleDecorator(throttle=ack_t)
s_lock = threading.Lock()
@wrapt.synchronized(s_lock)
@msg_throttle_decorator.sleep_and_retry
def send(packet: core.Packet, direct=False, aprs_client=None):
"""Send a packet either in a thread or directly to the client."""
# prepare the packet for sending.
# This constructs the packet.raw
collector.PacketCollector().tx(packet)
packet.prepare()
# Have to call the collector to track the packet
# After prepare, as prepare assigns the msgNo
collector.PacketCollector().tx(packet)
if isinstance(packet, core.AckPacket):
_send_ack(packet, direct=direct, aprs_client=aprs_client)
else: