|
|
@@ -263,16 +263,18 @@ func (d *DefaultDispatcher) routedDispatch(ctx context.Context, link *transport.
|
|
|
skipRoutePick = content.SkipRoutePick
|
|
|
}
|
|
|
|
|
|
- var inTag string
|
|
|
+ routingLink := routing_session.AsRoutingContext(ctx)
|
|
|
+ inTag := routingLink.GetInboundTag()
|
|
|
+ isPickRoute := false
|
|
|
if d.router != nil && !skipRoutePick {
|
|
|
- if route, err := d.router.PickRoute(routing_session.AsRoutingContext(ctx)); err == nil {
|
|
|
- tag := route.GetOutboundTag()
|
|
|
- inTag = route.GetInboundTag()
|
|
|
- if h := d.ohm.GetHandler(tag); h != nil {
|
|
|
- newError("taking detour [", tag, "] for [", destination, "]").WriteToLog(session.ExportIDToError(ctx))
|
|
|
+ if route, err := d.router.PickRoute(routingLink); err == nil {
|
|
|
+ outTag := route.GetOutboundTag()
|
|
|
+ isPickRoute = true
|
|
|
+ if h := d.ohm.GetHandler(outTag); h != nil {
|
|
|
+ newError("taking detour [", outTag, "] for [", destination, "]").WriteToLog(session.ExportIDToError(ctx))
|
|
|
handler = h
|
|
|
} else {
|
|
|
- newError("non existing tag: ", tag).AtWarning().WriteToLog(session.ExportIDToError(ctx))
|
|
|
+ newError("non existing outTag: ", outTag).AtWarning().WriteToLog(session.ExportIDToError(ctx))
|
|
|
}
|
|
|
} else {
|
|
|
newError("default route for ", destination).WriteToLog(session.ExportIDToError(ctx))
|
|
|
@@ -292,10 +294,18 @@ func (d *DefaultDispatcher) routedDispatch(ctx context.Context, link *transport.
|
|
|
|
|
|
if accessMessage := log.AccessMessageFromContext(ctx); accessMessage != nil {
|
|
|
if tag := handler.Tag(); tag != "" {
|
|
|
- if inTag != "" {
|
|
|
- accessMessage.Detour = inTag + " -> " + tag
|
|
|
+ if isPickRoute {
|
|
|
+ if inTag != "" {
|
|
|
+ accessMessage.Detour = inTag + " -> " + tag
|
|
|
+ } else {
|
|
|
+ accessMessage.Detour = tag
|
|
|
+ }
|
|
|
} else {
|
|
|
- accessMessage.Detour = tag
|
|
|
+ if inTag != "" {
|
|
|
+ accessMessage.Detour = inTag + " >> " + tag
|
|
|
+ } else {
|
|
|
+ accessMessage.Detour = tag
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
log.Record(accessMessage)
|