[VOL-5531] Onu adapter crash fix in sending omci requests
Change-Id: I50d05f6ab192c040458678bf9ed290257fa9b874
Signed-off-by: balaji.nagarajan <balaji.nagarajan@radisys.com>
diff --git a/internal/pkg/common/omci_cc.go b/internal/pkg/common/omci_cc.go
index 5fbe0e7..5984c3d 100755
--- a/internal/pkg/common/omci_cc.go
+++ b/internal/pkg/common/omci_cc.go
@@ -640,6 +640,14 @@
func (oo *OmciCC) sendQueuedHighPrioRequests(ctx context.Context) error {
oo.mutexHighPrioTxQueue.Lock()
defer oo.mutexHighPrioTxQueue.Unlock()
+
+ if oo.pBaseDeviceHandler == nil {
+ logger.Warnw(ctx, "device handler is nil - abort sendQueuedHighPrioRequests", log.Fields{"device-id": oo.deviceID})
+ return nil
+ } else if oo.pBaseDeviceHandler.GetDeletionInProgress() {
+ logger.Warnw(ctx, "device deletion in progress - abort sendQueuedHighPrioRequests", log.Fields{"device-id": oo.deviceID})
+ return nil
+ }
for oo.highPrioTxQueue.Len() > 0 {
select {
case _, ok := <-oo.pBaseDeviceHandler.GetDeviceDeleteCommChan(ctx):
@@ -668,6 +676,15 @@
func (oo *OmciCC) sendQueuedLowPrioRequests(ctx context.Context) error {
oo.mutexLowPrioTxQueue.Lock()
+
+ if oo.pBaseDeviceHandler == nil {
+ logger.Warnw(ctx, "device handler is nil - abort sendQueuedLowPrioRequests", log.Fields{"device-id": oo.deviceID})
+ return nil
+ } else if oo.pBaseDeviceHandler.GetDeletionInProgress() {
+ logger.Warnw(ctx, "device deletion in progress - abort sendQueuedLowPrioRequests", log.Fields{"device-id": oo.deviceID})
+ return nil
+ }
+
for oo.lowPrioTxQueue.Len() > 0 {
select {
case _, ok := <-oo.pBaseDeviceHandler.GetDeviceDeleteCommChan(ctx):
@@ -5048,6 +5065,13 @@
retryCounter := 0
loop:
for retryCounter <= retries {
+ if oo.pBaseDeviceHandler == nil {
+ logger.Warnw(ctx, "pBaseDeviceHandler is nil - abort sendWithRxSupervision", log.Fields{"device-id": oo.deviceID})
+ break loop
+ } else if oo.pBaseDeviceHandler.GetDeletionInProgress() {
+ logger.Warnw(ctx, "device deletion in progress - abort sendWithRxSupervision", log.Fields{"device-id": oo.deviceID})
+ break loop
+ }
// enqueue
if aOmciTxRequest.highPrio {
oo.mutexHighPrioTxQueue.Lock()