summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDor Bivas <dor1_b@walla.com>2014-03-29 15:46:03 +0300
committerDor Bivas <dor1_b@walla.com>2014-03-29 15:49:49 +0300
commite8544ffd7d4d2985028be9fd3fac68ff7d7f014b (patch)
treed448e727a2aec18a6e1cd69f78e64d7ee9909533
parent4b64e500799da46fc406c3d0217eb89afc8e07b1 (diff)
Server - implement nick collision detection
* Client: setNick checks for collisions. * Command table: Nick Command is now replaying. * Connection: remove up on disconnect.
-rw-r--r--src/Server/Client.java9
-rw-r--r--src/Server/CommandsTable.java12
-rw-r--r--src/Server/Connection.java2
3 files changed, 16 insertions, 7 deletions
diff --git a/src/Server/Client.java b/src/Server/Client.java
index f7d015b..4ab36dd 100644
--- a/src/Server/Client.java
+++ b/src/Server/Client.java
@@ -28,10 +28,15 @@ public class Client
{
return this.nick;
}
- /** changing the nick name */
- public void setNick(String newNick)
+ /** set nick name if it does not exist. */
+ public boolean setNick(String newNick)
{
+ if (!ChatServer.server.addNick(newNick))
+ {
+ return false;
+ }
this.nick = newNick;
+ return true;
}
/** returning the host name */
public String getHostname()
diff --git a/src/Server/CommandsTable.java b/src/Server/CommandsTable.java
index d1d093c..e52eb7a 100644
--- a/src/Server/CommandsTable.java
+++ b/src/Server/CommandsTable.java
@@ -106,8 +106,13 @@ class CommandNick extends Command
public void run(Client client, String args)
{
String nick = args;
- client.setNick(nick);
- // FIXME: print reply
+ if (!client.setNick(nick))
+ {
+ this.println(client, "433 * " + nick + " :Nick alredy in use.");
+ }
+
+
+
}
}
@@ -122,7 +127,7 @@ class CommandJoin extends Command
// but right now everybody is on a single channel
this.printUser(client, "JOIN " + ":" + args);
this.println(client, "332 " + client.getNick() + " " + args + " :Welcome to the single channel");
- //this.println(client, "333 " + client.getNick()) + args + "someone!somewhere";
+ //
}
}
@@ -133,7 +138,6 @@ class CommandUser extends Command
{
String[] argsArray = args.split("[ \t]+");
client.setUsername(argsArray[0]);
- //client.setNick(args);
this.println(client, "001 " + client.getNick() + " :Welcome to Dor's ircd");
}
}
diff --git a/src/Server/Connection.java b/src/Server/Connection.java
index 1102523..bcc3ac7 100644
--- a/src/Server/Connection.java
+++ b/src/Server/Connection.java
@@ -59,7 +59,7 @@ public class Connection extends Thread
{
ChatServer.server.connectionRemove(this);
-
+ ChatServer.server.removeNick(client.getNick());
try
{
if (!soc.isClosed())