Merge pull request #1304 from slluis/mac-proxy-autoconfig
[mono.git] / mcs / class / System / System.Net.Mail / SmtpException.cs
index 0ee2e6f15ed70175b5b46c7b2d664c1aeb64a867..ceda2dd7b9caa132f07aaf9b3bf42742366c10b1 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System.Runtime.Serialization;
 
 namespace System.Net.Mail {
@@ -45,33 +43,41 @@ namespace System.Net.Mail {
                #region Constructors
 
                public SmtpException ()
+                       : this (SmtpStatusCode.GeneralFailure)
                {
                }
 
                public SmtpException (SmtpStatusCode statusCode)
+                       : this (statusCode, "Syntax error, command unrecognized.")
                {
-                       StatusCode = statusCode;
                }
 
                public SmtpException (string message)
-                       : base (message)
+                       : this (SmtpStatusCode.GeneralFailure, message)
                {
                }
 
-               public SmtpException (SerializationInfo info, StreamingContext context)
+               protected SmtpException (SerializationInfo info, StreamingContext context)
                        : base (info, context)
                {
+                       try {
+                               statusCode = (SmtpStatusCode) info.GetValue ("Status", typeof (int));
+                       } catch (SerializationException) {
+                               //For compliance with previously serialized version:
+                               statusCode = (SmtpStatusCode) info.GetValue ("statusCode", typeof (SmtpStatusCode));
+                       }
                }
 
                public SmtpException (SmtpStatusCode statusCode, string message)
                        : base (message)
                {
-                       StatusCode = statusCode;
+                       this.statusCode = statusCode;
                }
 
                public SmtpException (string message, Exception innerException)
                        : base (message, innerException)
                {
+                       statusCode = SmtpStatusCode.GeneralFailure;
                }
 
                #endregion // Constructors
@@ -85,16 +91,17 @@ namespace System.Net.Mail {
 
                #endregion // Properties
 
-               [MonoTODO]
                public override void GetObjectData (SerializationInfo info, StreamingContext context)
                {
+                       if (info == null)
+                               throw new ArgumentNullException ("info");
+                       base.GetObjectData (info, context);
+                       info.AddValue ("Status", statusCode, typeof (int));
                }
-
-               [MonoTODO]
                void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
                {
+                       GetObjectData (info, context);
                }
        }
 }
 
-#endif // NET_2_0