NSIS-ka
A free C++ implementation of NSIS protocols

Opened 9 years ago

Last modified 9 years ago

#108 assigned defect

InvalidateRoutingState broken

Reported by: hiwi-laier Owned by: bless
Priority: major Milestone:
Component: GIST Version:
Keywords: Cc:

Description

r3544 fixes a minor part of this. The main problem is with the routing table "locking":

2008-10-17 01:17:31.681-4627- EVENT /4: GIST Processing API call received: InvalidateRoutingState msg#97 from NSLPID 1 at API interface address 0
2008-10-17 01:17:31.681-4627- DEBUG /4: GIST Processing InvalidateRoutingState received, carrying out the instructions
2008-10-17 01:17:31.681-4627- DEBUG /4: GIST Processing We are requested to put state to BAD, this means we put it to state DEAD
2008-10-17 01:17:31.682-4627- DEBUG /4: GIST Routing    Iterating over Routing Key table to find the entries we must apply InvalidateRoutingState
2008-10-17 01:17:31.682-4627- DEBUG /4: GIST Routing    Inspecting key
2008-10-17 01:17:31.682-4627- DEBUG /4: GIST Routing    Inspecting key
2008-10-17 01:17:31.682-4627- DEBUG /4: GIST Routing    Found a matching entry, Invalidating Routing State
2008-10-17 01:17:31.682-4627- DEBUG /4: GIST Routing    Routing state must be set to 'BAD', which means killing state
2008-10-17 01:17:31.683-4627- DEBUG /4: GIST Routing    No immediate re-installation is requested, just killing the state
2008-10-17 01:17:31.683-4627**ERROR**2: routingtable::locktable() Mutex Lock failed. Error: Success
2008-10-17 01:17:31.683-4627**ERROR**2: GIST Routing    You should ACQUIRE A LOCK PRIOR TO DELETING an entry!
2008-10-17 01:17:31.683-4627**ERROR**2: routingtable::unlocktable() Mutex Unlock failed. Error: Success

Change History (3)

comment:1 Changed 9 years ago by bless

  • Status changed from new to assigned

comment:2 Changed 9 years ago by hiwi-laier

r3560 takes care of the routingtable::locktable() errors, but leaves the real problem (the fact that delete_entry doesn't really delete an entry, but a key) unchanged. What is needed is a real delete_*entry* function that deletes an entry we have already looked up. For internal consumption the easiest would be to give such a function a rt_iter as argument that makes it easy to delete the entry without going about the key again.

comment:3 Changed 9 years ago by hiwi-laier

r3564 fixes the issue in the mobility branch, but needs to be merged carefully as it is - truthfully - an ugly hack! There is some question about invalidate_routing_state's method of walking the table manually instead of simply looking up the matching entry via a normal lookup ... I might be wrong here, so I rather leave it as is: "kinda working"

Note: See TracTickets for help on using tickets.