ソースを参照

fix #994

tags/v2.1.0-rc1
Shivaram Lingamneni 4年前
コミット
6f688a4644
3個のファイルの変更13行の追加6行の削除
  1. 1
    6
      irc/client.go
  2. 6
    0
      irc/commands.go
  3. 6
    0
      irc/handlers.go

+ 1
- 6
irc/client.go ファイルの表示

@@ -661,12 +661,7 @@ func (client *Client) run(session *Session) {
661 661
 
662 662
 		cmd, exists := Commands[msg.Command]
663 663
 		if !exists {
664
-			if len(msg.Command) > 0 {
665
-				session.Send(nil, client.server.name, ERR_UNKNOWNCOMMAND, client.Nick(), msg.Command, client.t("Unknown command"))
666
-			} else {
667
-				session.Send(nil, client.server.name, ERR_UNKNOWNCOMMAND, client.Nick(), "lastcmd", client.t("No command given"))
668
-			}
669
-			continue
664
+			cmd = unknownCommand
670 665
 		}
671 666
 
672 667
 		isExiting := cmd.Run(client.server, client, session, msg)

+ 6
- 0
irc/commands.go ファイルの表示

@@ -73,6 +73,12 @@ func (cmd *Command) Run(server *Server, client *Client, session *Session, msg ir
73 73
 	return exiting
74 74
 }
75 75
 
76
+// fake handler for unknown commands (see #994: this ensures the response tags are correct)
77
+var unknownCommand = Command{
78
+	handler:      unknownCommandHandler,
79
+	usablePreReg: true,
80
+}
81
+
76 82
 // Commands holds all commands executable by a client connected to us.
77 83
 var Commands map[string]Command
78 84
 

+ 6
- 0
irc/handlers.go ファイルの表示

@@ -2760,3 +2760,9 @@ func zncHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Respo
2760 2760
 	zncModuleHandler(client, msg.Params[0], msg.Params[1:], rb)
2761 2761
 	return false
2762 2762
 }
2763
+
2764
+// fake handler for unknown commands
2765
+func unknownCommandHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
2766
+	rb.Add(nil, server.name, ERR_UNKNOWNCOMMAND, client.Nick(), utils.SafeErrorParam(msg.Command), client.t("Unknown command"))
2767
+	return false
2768
+}

読み込み中…
キャンセル
保存