private void RedirectRuleManager_RedirectRuleRemovedEvent(object sender, RedirectRuleManager.RedirectRuleRemovedEventArgs e)
        {
            try
            {
                var listener = Listeners.FirstOrDefault(x => x.PublicPortRequested == e.RedirectRule.PublicRequestPort);
                if (listener == null)
                {
                    throw new InvalidOperationException(string.Format("Trying to remove a rule but cannot find a listener for the port {0}.", e.RedirectRule.PublicRequestPort));
                }

                //Remove the rule from the listener, and remove the entire listener if there are no rules left
                listener.Remove(e.RedirectRule);
                if (listener.RuleCount == 0)
                {
                    Listeners.Remove(listener);
                    listener.Stop();
                }
            }
            catch (Exception exception)
            {
                exception.Data.Add("PublicRequestHost", e.RedirectRule.PublicRequestHost);
                exception.Data.Add("PublicRequestPort", e.RedirectRule.PublicRequestPort);
                exception.Data.Add("InternalTargetAddress", e.RedirectRule.InternalTargetAddress);
                exception.Data.Add("InternalTargetPort", e.RedirectRule.InternalTargetPort);

                LogHelper.LogException(exception, false, LogHelper.ExceptionSeverity.ErrorException);
            }
        }
Example #2
0
 void RedirectRuleManager_RedirectRuleRemovedEvent(object sender, RedirectRuleManager.RedirectRuleRemovedEventArgs e)
 {
     try
     {
         if (_currentRedirectRule == e.RedirectRule)
         {
             Stop();
         }
     }
     catch (Exception exception)
     {
         LogHelper.LogException(exception, false, LogHelper.ExceptionSeverity.ErrorException);
     }
 }