Browse Source

fix #889

tags/v2.1.0-rc1
Shivaram Lingamneni 4 years ago
parent
commit
811da03ab5
3 changed files with 18 additions and 13 deletions
  1. 4
    1
      irc/accounts.go
  2. 13
    12
      irc/channelmanager.go
  3. 1
    0
      irc/channelreg.go

+ 4
- 1
irc/accounts.go View File

@@ -1098,7 +1098,10 @@ func (am *AccountManager) Unregister(account string, erase bool) error {
1098 1098
 	// on our way out, unregister all the account's channels and delete them from the db
1099 1099
 	defer func() {
1100 1100
 		for _, channelName := range registeredChannels {
1101
-			am.server.channels.SetUnregistered(channelName, casefoldedAccount)
1101
+			err := am.server.channels.SetUnregistered(channelName, casefoldedAccount)
1102
+			if err != nil {
1103
+				am.server.logger.Error("internal", "couldn't unregister channel", channelName, err.Error())
1104
+			}
1102 1105
 		}
1103 1106
 	}()
1104 1107
 

+ 13
- 12
irc/channelmanager.go View File

@@ -226,7 +226,13 @@ func (cm *ChannelManager) SetUnregistered(channelName string, account string) (e
226 226
 		return err
227 227
 	}
228 228
 
229
-	var info RegisteredChannel
229
+	info, err := cm.server.channelRegistry.LoadChannel(cfname)
230
+	if err != nil {
231
+		return err
232
+	}
233
+	if info.Founder != account {
234
+		return errChannelNotOwnedByAccount
235
+	}
230 236
 
231 237
 	defer func() {
232 238
 		if err == nil {
@@ -237,17 +243,12 @@ func (cm *ChannelManager) SetUnregistered(channelName string, account string) (e
237 243
 	cm.Lock()
238 244
 	defer cm.Unlock()
239 245
 	entry := cm.chans[cfname]
240
-	if entry == nil {
241
-		return errNoSuchChannel
242
-	}
243
-	info = entry.channel.ExportRegistration(0)
244
-	if info.Founder != account {
245
-		return errChannelNotOwnedByAccount
246
-	}
247
-	entry.channel.SetUnregistered(account)
248
-	delete(cm.registeredChannels, cfname)
249
-	if skel, err := Skeleton(entry.channel.Name()); err == nil {
250
-		delete(cm.registeredSkeletons, skel)
246
+	if entry != nil {
247
+		entry.channel.SetUnregistered(account)
248
+		delete(cm.registeredChannels, cfname)
249
+		if skel, err := Skeleton(entry.channel.Name()); err == nil {
250
+			delete(cm.registeredSkeletons, skel)
251
+		}
251 252
 	}
252 253
 	return nil
253 254
 }

+ 1
- 0
irc/channelreg.go View File

@@ -231,6 +231,7 @@ func (reg *ChannelRegistry) LoadChannel(nameCasefolded string) (info RegisteredC
231 231
 
232 232
 		info = RegisteredChannel{
233 233
 			Name:           name,
234
+			NameCasefolded: nameCasefolded,
234 235
 			RegisteredAt:   time.Unix(regTimeInt, 0).UTC(),
235 236
 			Founder:        founder,
236 237
 			Topic:          topic,

Loading…
Cancel
Save