Fix duplicate interfaces on reconnect and beacon message spam bugs
This commit is contained in:
		
							parent
							
								
									ab4fcca81c
								
							
						
					
					
						commit
						488e617094
					
				| @ -815,11 +815,15 @@ class RNodeMultiInterface(Interface): | ||||
|                     if self.id_interval != None and self.id_callsign != None: | ||||
|                         if self.first_tx != None: | ||||
|                             if time.time() > self.first_tx + self.id_interval: | ||||
|                                 RNS.log("Interface "+str(self)+" is transmitting beacon data on all subinterfaces: "+str(self.id_callsign.decode("utf-8")), RNS.LOG_DEBUG) | ||||
|                                 interface_available = False | ||||
|                                 for interface in self.subinterfaces: | ||||
|                                     if interface != 0: | ||||
|                                     if interface != 0 and interface.online: | ||||
|                                         interface_available = True | ||||
|                                         self.subinterfaces[interface.index].processOutgoing(self.id_callsign) | ||||
| 
 | ||||
|                                 if interface_available: | ||||
|                                     RNS.log("Interface "+str(self)+" is transmitting beacon data on all subinterfaces: "+str(self.id_callsign.decode("utf-8")), RNS.LOG_DEBUG) | ||||
| 
 | ||||
|                     sleep(0.08) | ||||
| 
 | ||||
|         except Exception as e: | ||||
| @ -832,6 +836,8 @@ class RNodeMultiInterface(Interface): | ||||
| 
 | ||||
|             RNS.log("Reticulum will attempt to reconnect the interface periodically.", RNS.LOG_ERROR) | ||||
| 
 | ||||
|             self.teardown_subinterfaces() | ||||
| 
 | ||||
|         self.online = False | ||||
|         try: | ||||
|             self.serial.close() | ||||
| @ -866,6 +872,14 @@ class RNodeMultiInterface(Interface): | ||||
|                 self.setRadioState(KISS.RADIO_STATE_OFF, interface) | ||||
|         self.leave() | ||||
| 
 | ||||
|     def teardown_subinterfaces(self): | ||||
|         for interface in self.subinterfaces: | ||||
|             if interface != 0: | ||||
|                 if interface in RNS.Transport.interfaces: | ||||
|                     RNS.Transport.interfaces.remove(interface) | ||||
|                 self.subinterfaces[interface.index] = 0 | ||||
|                 del interface | ||||
| 
 | ||||
|     def should_ingress_limit(self): | ||||
|         return False | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user