def HandlePong(self, sPong, sOrigin): """Handle incoming Pong Called by CRPCRequestHandler.Pong(). Reset LastNetAction-time. Pass PONG to cOwlManager.Answer(). """ try: # reset WatchDog pManager.manager.ResetWatchdog(self.WatchDogID) # create cDOM from ascii-Pong domPong = cDOM.cDOM() domPong.ParseString(sPong) # create cNetPackage from DOM-Pong cPong = cNetPackage.cPong() cPong.ParseDOM(domPong) # check if i am the first hop of this pong (answerer ip set to 127.0.0.1) # -> set answerer ip! if cPong.GetAnswerer()[0]=='127.0.0.1': pManager.manager.DebugStr('cNetManager '+ __version__ +': First hop. Setting Answerer IP to %s' % (sOrigin), 3) cPong.SetAnswererIP(sOrigin) # set originator ip cPong.SetOriginatorIP(sOrigin) # log incoming pong pManager.manager.DebugStr('cNetManager '+ __version__ +': Incoming Pong from %s:%s' % (str(cPong.GetAnswerer()[0]), str(cPong.GetAnswerer()[1])), 2) # extract PONG-source and add to own list of owls self.ExtractPongSource(cPong) # pass to cOwlManager pManager.manager.DebugStr('cNetManager '+ __version__ +': Passing Pong to cOwlManager.Answer()', 3) self.cOwlManager.Answer(cPong) except: # unknown error. log and forget. # get exception eType, eValue, eTraceback = sys.exc_info() # build stacktrace string tb = '' for line in traceback.format_tb(eTraceback, 15): tb = tb + line pManager.manager.DebugStr('pNetwork '+ __version__ +': Unhandled error in thread HandlePong(): Type: '+str(eType)+', value: '+str(eValue), 2) pManager.manager.DebugStr('pNetwork '+ __version__ +': Traceback:\n'+str(tb), 3)
def GeneratePong(self, cPing): """Generate and return a cPong Object""" # generate pong cPong = cNetPackage.cPong() # set id from ping cPong.SetID(cPing.GetID()) # set originator cPong.SetOriginatorPort(self.cNetServer.GetListenPort()) # set iOwl-Version cPong.SetOwlVersion(pManager.manager.GetVersion()) # set network protocol version cPong.SetProtocolVersion(self.sProtocol) # set answererPort cPong.SetAnswererPort(self.cNetServer.GetListenPort()) return cPong