diff --git a/ChatSharp/ClientSettings.cs b/ChatSharp/ClientSettings.cs
index 5036b46..7716874 100644
--- a/ChatSharp/ClientSettings.cs
+++ b/ChatSharp/ClientSettings.cs
@@ -11,6 +11,7 @@ namespace ChatSharp
{
WhoIsOnConnect = true;
ModeOnJoin = true;
+ GenerateRandomNickIfRefused = true;
}
///
@@ -24,5 +25,9 @@ namespace ChatSharp
/// IrcChannel.Mode will be null until the mode is explicitly requested.
///
public bool ModeOnJoin { get; set; }
+ ///
+ /// If true, the library will generate a random nick with alphanumerical characters if it
+ /// encounters a NICK error.
+ public bool GenerateRandomNickIfRefused { get; set; }
}
}
diff --git a/ChatSharp/Handlers/MessageHandlers.cs b/ChatSharp/Handlers/MessageHandlers.cs
index e6851c8..b245d06 100644
--- a/ChatSharp/Handlers/MessageHandlers.cs
+++ b/ChatSharp/Handlers/MessageHandlers.cs
@@ -83,7 +83,7 @@ namespace ChatSharp.Handlers
if (message.Command == "433") // Nick in use
client.OnNickInUse(eventArgs);
// else ... TODO
- if (!eventArgs.DoNotHandle)
+ if (!eventArgs.DoNotHandle && client.Settings.GenerateRandomNickIfRefused)
client.Nick(eventArgs.NewNick);
}
diff --git a/ChatSharp/IrcUser.cs b/ChatSharp/IrcUser.cs
index f5a110e..6001636 100644
--- a/ChatSharp/IrcUser.cs
+++ b/ChatSharp/IrcUser.cs
@@ -20,7 +20,14 @@ namespace ChatSharp
string[] mask = host.Split('@', '!');
Nick = mask[0];
User = mask[1];
- Hostname = mask[2];
+ if (mask.Length <= 2)
+ {
+ Hostname = "";
+ }
+ else
+ {
+ Hostname = mask[2];
+ }
}
}