private Uri ConstructUrl(IRequest originalRequest, IPEndPoint remote)
{
if(!state_.IsLocal(remote.Address))
return originalRequest.Uri;
DnsMessage message = state_.Dns.Resolve(originalRequest.Uri.DnsSafeHost);
if(null == message)
throw new ApplicationException(string.Format("Could not resolve '{0}' with DNS '{1}'", originalRequest.Uri.DnsSafeHost, state_.Config.Dns.Server));
foreach(DnsRecordBase recordBase in message.AnswerRecords)
{
ARecord record = recordBase as ARecord;
if(record == null)
continue;
string host = originalRequest.Uri.Host;
string url = originalRequest.Uri.AbsoluteUri.Replace(host, record.Address.ToString());
return new Uri(url);
}
return originalRequest.Uri;
}