- if (params.size() < 2)
- return true;
-
- if (!this->Instance->IsChannel(params[1].c_str()))
- return true;
-
- User* u = this->Instance->FindNick(params[0]);
+ // Check for valid channel name
+ if (!ServerInstance->IsChannel(parameters[1].c_str(), ServerInstance->Config->Limits.ChanMax))
+ return CMD_FAILURE;
+
+ // Check target exists
+ User* u = ServerInstance->FindNick(parameters[0]);
+ if (!u)
+ return CMD_FAILURE;
+
+ /* only join if it's local, otherwise just pass it on! */
+ if (IS_LOCAL(u))
+ Channel::JoinUser(u, parameters[1].c_str(), false, "", false, ServerInstance->Time());
+ return CMD_SUCCESS;
+}