nicko       2005/02/15 10:56:52

  Modified:    src/Util/TypeConverters IPAddressConverter.cs
  Log:
  Only attempt to IPAddress.Parse if the string contains valid IP address 
characters
  
  Revision  Changes    Path
  1.3       +22 -11    
logging-log4net/src/Util/TypeConverters/IPAddressConverter.cs
  
  Index: IPAddressConverter.cs
  ===================================================================
  RCS file: 
/home/cvs/logging-log4net/src/Util/TypeConverters/IPAddressConverter.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- IPAddressConverter.cs     7 Feb 2005 04:05:20 -0000       1.2
  +++ IPAddressConverter.cs     15 Feb 2005 18:56:52 -0000      1.3
  @@ -2,15 +2,15 @@
   //
   // Copyright 2001-2005 The Apache Software Foundation
   //
  -// Licensed under the Apache License, Version 2.0 (the "License");
  +// Licensed under the Apache License',' Version 2.0 (the "License");
   // you may not use this file except in compliance with the License.
   // You may obtain a copy of the License at
   //
   // http://www.apache.org/licenses/LICENSE-2.0
   //
  -// Unless required by applicable law or agreed to in writing, software
  -// distributed under the License is distributed on an "AS IS" BASIS,
  -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  +// Unless required by applicable law or agreed to in writing',' software
  +// distributed under the License is distributed on an "AS IS" BASIS','
  +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND',' either express or implied.
   // See the License for the specific language governing permissions and
   // limitations under the License.
   //
  @@ -72,19 +72,25 @@
                public object ConvertFrom(object source) 
                {
                        string str = source as string;
  -                     if (str != null) 
  +                     if (str != null && str.Length > 0) 
                        {
                                try
                                {
  -                                     try
  +                                     // Check if the string only contains IP 
address valid chars
  +                                     if 
(str.Trim(validIpAddressChars).Length == 0)
                                        {
  -                                             return IPAddress.Parse(str);
  -                                     }
  -                                     catch(FormatException)
  -                                     {
  -                                             // Ignore a FormatException, 
try to resolve via DNS
  +                                             try
  +                                             {
  +                                                     // try to parse the 
string as an IP address
  +                                                     return 
IPAddress.Parse(str);
  +                                             }
  +                                             catch(FormatException)
  +                                             {
  +                                                     // Ignore a 
FormatException, try to resolve via DNS
  +                                             }
                                        }
   
  +                                     // Try to resolve via DNS. This is a 
blocking call.
                                        IPHostEntry host = 
Dns.GetHostByName(str);
                                        if (host != null && 
                                                host.AddressList != null && 
  @@ -103,5 +109,10 @@
                }
   
                #endregion
  +
  +             /// <summary>
  +             /// Valid characters in an IPv4 or IPv6 address string. (Does 
not support subnets)
  +             /// </summary>
  +             private static readonly char[] validIpAddressChars = 
{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','A','B','C','D','E','F','x','X','.',':','%'};
        }
   }
  
  
  

Reply via email to