diff --git a/mods/connect/src/service.ts b/mods/connect/src/service.ts index 9033ad528..d095b3eea 100644 --- a/mods/connect/src/service.ts +++ b/mods/connect/src/service.ts @@ -57,7 +57,8 @@ export default function connectProcessor(config: ConnectProcessorConfig) { // Remove the proxy and overwrite the contact with the sender info return res.send( // NOTE: We should consider making the overwriteContactWithSenderInfo an Agent/Peer level alteration - pipe(req, A.overwriteContactWithSenderInfo, A.removeTopVia) + // pipe(req, A.overwriteContactWithSenderInfo, A.removeTopVia) + pipe(req, A.removeTopVia) ) } @@ -84,9 +85,7 @@ export default function connectProcessor(config: ConnectProcessorConfig) { pipe( req, A.decreaseMaxForwards, - // The order of the following alterations is important - // since addSelfViaUsingTheRouteHeaders uses the route headers - A.addSelfViaUsingTheRouteHeaders, + A.addSelfViaUsingExternalAddrs, A.removeSelfRoutes ) ) diff --git a/mods/processor/src/alterations.ts b/mods/processor/src/alterations.ts index 60a072145..b04a2d795 100644 --- a/mods/processor/src/alterations.ts +++ b/mods/processor/src/alterations.ts @@ -96,6 +96,32 @@ export const addSelfViaUsingTheRouteHeaders = ( return req } +// Experimental +export const addSelfViaUsingExternalAddrs = ( + request: MessageRequest +): MessageRequest => { + const req = H.deepCopy(request) + + const targetIntf = getEdgeInterface({ + ...request, + endpointIntf: { + host: request.message.requestUri.host, + port: request.message.requestUri.port, + transport: request.message.requestUri.transportParam + } + }) + + req.message.via = [ + { + ...targetIntf, + rPortFlag: true + }, + ...req.message.via + ] + + return req +} + export const addRouteToNextHop = (route: Route) => (request: MessageRequest): MessageRequest => {