Core: fix pickling plando connections (#4054)
* shift plando pickle hack * Update Utils.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --------- Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									703e3393a6
								
							
						
					
					
						commit
						049a8780b5
					
				
							
								
								
									
										4
									
								
								Utils.py
								
								
								
								
							
							
						
						
									
										4
									
								
								Utils.py
								
								
								
								
							| 
						 | 
				
			
			@ -423,7 +423,7 @@ class RestrictedUnpickler(pickle.Unpickler):
 | 
			
		|||
        if module == "NetUtils" and name in {"NetworkItem", "ClientStatus", "Hint", "SlotType", "NetworkSlot"}:
 | 
			
		||||
            return getattr(self.net_utils_module, name)
 | 
			
		||||
        # Options and Plando are unpickled by WebHost -> Generate
 | 
			
		||||
        if module == "worlds.generic" and name in {"PlandoItem", "PlandoConnection"}:
 | 
			
		||||
        if module == "worlds.generic" and name == "PlandoItem":
 | 
			
		||||
            if not self.generic_properties_module:
 | 
			
		||||
                self.generic_properties_module = importlib.import_module("worlds.generic")
 | 
			
		||||
            return getattr(self.generic_properties_module, name)
 | 
			
		||||
| 
						 | 
				
			
			@ -434,7 +434,7 @@ class RestrictedUnpickler(pickle.Unpickler):
 | 
			
		|||
            else:
 | 
			
		||||
                mod = importlib.import_module(module)
 | 
			
		||||
            obj = getattr(mod, name)
 | 
			
		||||
            if issubclass(obj, self.options_module.Option):
 | 
			
		||||
            if issubclass(obj, (self.options_module.Option, self.options_module.PlandoConnection)):
 | 
			
		||||
                return obj
 | 
			
		||||
        # Forbid everything else.
 | 
			
		||||
        raise pickle.UnpicklingError(f"global '{module}.{name}' is forbidden")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue