Registry router fixes (#1961)
* only cache routes if told to do so * Use roundrobin selector and retry in proxy * Update lookup to require service * Fix compile * Fix compile * Update * Update * rename query to lookup * Update router.go * Update
This commit is contained in:
		| @@ -961,12 +961,11 @@ func (n *mucpNetwork) processNetChan(listener tunnel.Listener) { | ||||
| 						route.Metric = d | ||||
| 					} | ||||
|  | ||||
| 					q := []router.QueryOption{ | ||||
| 						router.QueryService(route.Service), | ||||
| 						router.QueryLink(route.Link), | ||||
| 					q := []router.LookupOption{ | ||||
| 						router.LookupLink(route.Link), | ||||
| 					} | ||||
|  | ||||
| 					routes, err := n.router.Table().Query(q...) | ||||
| 					routes, err := n.router.Lookup(route.Service, q...) | ||||
| 					if err != nil && err != router.ErrRouteNotFound { | ||||
| 						if logger.V(logger.DebugLevel, logger.DefaultLogger) { | ||||
| 							logger.Debugf("Network node %s failed listing best routes for %s: %v", n.id, route.Service, err) | ||||
| @@ -1079,16 +1078,15 @@ func (n *mucpNetwork) processNetChan(listener tunnel.Listener) { | ||||
| } | ||||
|  | ||||
| // pruneRoutes prunes routes return by given query | ||||
| func (n *mucpNetwork) pruneRoutes(q ...router.QueryOption) error { | ||||
| 	routes, err := n.router.Table().Query(q...) | ||||
| func (n *mucpNetwork) pruneRoutes(q ...router.LookupOption) error { | ||||
| 	routes, err := n.router.Table().List() | ||||
| 	if err != nil && err != router.ErrRouteNotFound { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	for _, route := range routes { | ||||
| 		if err := n.router.Table().Delete(route); err != nil && err != router.ErrRouteNotFound { | ||||
| 			return err | ||||
| 		} | ||||
| 	// filter and delete the routes in question | ||||
| 	for _, route := range router.Filter(routes, router.NewLookup(q...)) { | ||||
| 		n.router.Table().Delete(route) | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| @@ -1097,18 +1095,18 @@ func (n *mucpNetwork) pruneRoutes(q ...router.QueryOption) error { | ||||
| // pruneNodeRoutes prunes routes that were either originated by or routable via given node | ||||
| func (n *mucpNetwork) prunePeerRoutes(peer *node) error { | ||||
| 	// lookup all routes originated by router | ||||
| 	q := []router.QueryOption{ | ||||
| 		router.QueryRouter(peer.id), | ||||
| 		router.QueryLink("*"), | ||||
| 	q := []router.LookupOption{ | ||||
| 		router.LookupRouter(peer.id), | ||||
| 		router.LookupLink("*"), | ||||
| 	} | ||||
| 	if err := n.pruneRoutes(q...); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	// lookup all routes routable via gw | ||||
| 	q = []router.QueryOption{ | ||||
| 		router.QueryGateway(peer.address), | ||||
| 		router.QueryLink("*"), | ||||
| 	q = []router.LookupOption{ | ||||
| 		router.LookupGateway(peer.address), | ||||
| 		router.LookupLink("*"), | ||||
| 	} | ||||
| 	if err := n.pruneRoutes(q...); err != nil { | ||||
| 		return err | ||||
| @@ -1291,7 +1289,7 @@ func (n *mucpNetwork) manage() { | ||||
| 				} | ||||
|  | ||||
| 				// otherwise delete all the routes originated by it | ||||
| 				if err := n.pruneRoutes(router.QueryRouter(route.Router)); err != nil { | ||||
| 				if err := n.pruneRoutes(router.LookupRouter(route.Router)); err != nil { | ||||
| 					if logger.V(logger.DebugLevel, logger.DefaultLogger) { | ||||
| 						logger.Debugf("Network failed deleting routes by %s: %v", route.Router, err) | ||||
| 					} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user