浏览代码

server: Move maxTargets to constant, fix bug on privmsg/notice

tags/v0.4.0
Daniel Oaks 7 年前
父节点
当前提交
62a0cbc1f6
共有 2 个文件被更改,包括 16 次插入4 次删除
  1. 2
    0
      irc/constants.go
  2. 14
    4
      irc/server.go

+ 2
- 0
irc/constants.go 查看文件

19
 	// maxLastArgLength is used to simply cap off the final argument when creating general messages where we need to select a limit.
19
 	// maxLastArgLength is used to simply cap off the final argument when creating general messages where we need to select a limit.
20
 	// for instance, in MONITOR lists, RPL_ISUPPORT lists, etc.
20
 	// for instance, in MONITOR lists, RPL_ISUPPORT lists, etc.
21
 	maxLastArgLength = 400
21
 	maxLastArgLength = 400
22
+	// maxTargets is the maximum number of targets for PRIVMSG and NOTICE.
23
+	maxTargets = 4
22
 )
24
 )

+ 14
- 4
irc/server.go 查看文件

258
 
258
 
259
 // setISupport sets up our RPL_ISUPPORT reply.
259
 // setISupport sets up our RPL_ISUPPORT reply.
260
 func (server *Server) setISupport() {
260
 func (server *Server) setISupport() {
261
+	maxTargetsString := strconv.Itoa(maxTargets)
262
+
261
 	// add RPL_ISUPPORT tokens
263
 	// add RPL_ISUPPORT tokens
262
 	server.isupport = NewISupportList()
264
 	server.isupport = NewISupportList()
263
 	server.isupport.Add("AWAYLEN", strconv.Itoa(server.limits.AwayLen))
265
 	server.isupport.Add("AWAYLEN", strconv.Itoa(server.limits.AwayLen))
269
 	server.isupport.Add("INVEX", "")
271
 	server.isupport.Add("INVEX", "")
270
 	server.isupport.Add("KICKLEN", strconv.Itoa(server.limits.KickLen))
272
 	server.isupport.Add("KICKLEN", strconv.Itoa(server.limits.KickLen))
271
 	server.isupport.Add("MAXLIST", fmt.Sprintf("beI:%s", strconv.Itoa(server.limits.ChanListModes)))
273
 	server.isupport.Add("MAXLIST", fmt.Sprintf("beI:%s", strconv.Itoa(server.limits.ChanListModes)))
272
-	server.isupport.Add("MAXTARGETS", "4")
274
+	server.isupport.Add("MAXTARGETS", maxTargetsString)
273
 	server.isupport.Add("MODES", "")
275
 	server.isupport.Add("MODES", "")
274
 	server.isupport.Add("MONITOR", strconv.Itoa(server.limits.MonitorEntries))
276
 	server.isupport.Add("MONITOR", strconv.Itoa(server.limits.MonitorEntries))
275
 	server.isupport.Add("NETWORK", server.networkName)
277
 	server.isupport.Add("NETWORK", server.networkName)
276
 	server.isupport.Add("NICKLEN", strconv.Itoa(server.limits.NickLen))
278
 	server.isupport.Add("NICKLEN", strconv.Itoa(server.limits.NickLen))
277
 	server.isupport.Add("PREFIX", "(qaohv)~&@%+")
279
 	server.isupport.Add("PREFIX", "(qaohv)~&@%+")
278
 	server.isupport.Add("STATUSMSG", "~&@%+")
280
 	server.isupport.Add("STATUSMSG", "~&@%+")
279
-	server.isupport.Add("TARGMAX", "NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,MONITOR:")
281
+	server.isupport.Add("TARGMAX", fmt.Sprintf("NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:%s,NOTICE:%s,MONITOR:", maxTargetsString, maxTargetsString))
280
 	server.isupport.Add("TOPICLEN", strconv.Itoa(server.limits.TopicLen))
282
 	server.isupport.Add("TOPICLEN", strconv.Itoa(server.limits.TopicLen))
281
 
283
 
282
 	// account registration
284
 	// account registration
740
 	targets := strings.Split(msg.Params[0], ",")
742
 	targets := strings.Split(msg.Params[0], ",")
741
 	message := msg.Params[1]
743
 	message := msg.Params[1]
742
 
744
 
743
-	for _, targetString := range targets[:4] {
745
+	for i, targetString := range targets {
746
+		// max of four targets per privmsg
747
+		if i > maxTargets-1 {
748
+			break
749
+		}
744
 		prefixes, targetString := SplitChannelMembershipPrefixes(targetString)
750
 		prefixes, targetString := SplitChannelMembershipPrefixes(targetString)
745
 		lowestPrefix := GetLowestChannelModePrefix(prefixes)
751
 		lowestPrefix := GetLowestChannelModePrefix(prefixes)
746
 
752
 
1220
 	targets := strings.Split(msg.Params[0], ",")
1226
 	targets := strings.Split(msg.Params[0], ",")
1221
 	message := msg.Params[1]
1227
 	message := msg.Params[1]
1222
 
1228
 
1223
-	for _, targetString := range targets[:4] {
1229
+	for i, targetString := range targets {
1230
+		// max of four targets per privmsg
1231
+		if i > maxTargets-1 {
1232
+			break
1233
+		}
1224
 		prefixes, targetString := SplitChannelMembershipPrefixes(targetString)
1234
 		prefixes, targetString := SplitChannelMembershipPrefixes(targetString)
1225
 		lowestPrefix := GetLowestChannelModePrefix(prefixes)
1235
 		lowestPrefix := GetLowestChannelModePrefix(prefixes)
1226
 
1236
 

正在加载...
取消
保存