public static AnchorMailbox TryCreateFromRoutingHint(IRequestContext requestContext, bool tryTargetServerRoutingHint) { if (requestContext == null) { throw new ArgumentNullException("requestContext"); } string text = requestContext.HttpContext.Request.Headers[WellKnownHeader.XTargetServer]; if (!string.IsNullOrEmpty(text) && tryTargetServerRoutingHint) { requestContext.Logger.Set(HttpProxyMetadata.RoutingHint, "TargetServerHeader"); return(new ServerInfoAnchorMailbox(text, requestContext)); } string text2 = requestContext.HttpContext.Request.Headers[Constants.AnchorMailboxHeaderName]; if (string.IsNullOrEmpty(text2)) { return(null); } Match match = RegexUtilities.TryMatch(Constants.SidRegex, text2, requestContext.Logger); if (match != null && match.Success) { string text3 = RegexUtilities.ParseIdentifier(match, "${sid}", requestContext.Logger); if (!string.IsNullOrEmpty(text3)) { SecurityIdentifier securityIdentifier = null; try { securityIdentifier = new SecurityIdentifier(text3); } catch (ArgumentException ex) { requestContext.Logger.AppendGenericError("Ignored Exception", ex.ToString()); } catch (SystemException ex2) { requestContext.Logger.AppendGenericError("Ignored Exception", ex2.ToString()); } if (securityIdentifier != null) { requestContext.Logger.SafeSet(HttpProxyMetadata.RoutingHint, "AnchorMailboxHeader-SID"); return(new SidAnchorMailbox(securityIdentifier, requestContext)); } } } match = RegexUtilities.TryMatch(Constants.GuidAtDomainRegex, text2, requestContext.Logger); if (match != null && match.Success) { string text4 = RegexUtilities.ParseIdentifier(match, "${mailboxguid}", requestContext.Logger); if (!string.IsNullOrEmpty(text4)) { Guid mailboxGuid = new Guid(text4); string text5 = RegexUtilities.ParseIdentifier(match, "${domain}", requestContext.Logger); string value = string.Format("AnchorMailboxHeader-MailboxGuid{0}", string.IsNullOrEmpty(text5) ? string.Empty : "WithDomain"); requestContext.Logger.SafeSet(HttpProxyMetadata.RoutingHint, value); MailboxGuidAnchorMailbox mailboxGuidAnchorMailbox = new MailboxGuidAnchorMailbox(mailboxGuid, text5, requestContext); if (!string.IsNullOrEmpty(text5)) { mailboxGuidAnchorMailbox.FallbackSmtp = text2; } return(mailboxGuidAnchorMailbox); } } if (SmtpAddress.IsValidSmtpAddress(text2)) { requestContext.Logger.Set(HttpProxyMetadata.RoutingHint, "AnchorMailboxHeader-SMTP"); return(new SmtpAnchorMailbox(text2, requestContext)); } return(null); }