Skip to content

Commit 1f9441c

Browse files
author
Kristian Reukauff
committed
Reverted last contra productive panic handles.
1 parent d19bc49 commit 1f9441c

5 files changed

Lines changed: 17 additions & 40 deletions

File tree

bridge/whatsappmulti/handlers.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -691,8 +691,6 @@ func (b *Bwhatsapp) handleNewsletterDocumentMessage(senderJID, channel types.JID
691691
}
692692

693693
func (b *Bwhatsapp) handleNewsletterJoin(event *events.NewsletterJoin) {
694-
defer b.whatsappHandlePanic()
695-
696694
b.Log.Debugf("Joined newsletter: %#v", event)
697695

698696
name := event.ThreadMeta.Name.Text
@@ -701,35 +699,33 @@ func (b *Bwhatsapp) handleNewsletterJoin(event *events.NewsletterJoin) {
701699
}
702700

703701
b.Lock()
704-
defer b.Unlock()
705-
706702
for i, nl := range b.subscribedNewsletters {
707703
if nl.ID == event.ID {
708704
b.subscribedNewsletters[i] = &event.NewsletterMetadata
709705
b.newsletterNames[event.ID.String()] = name
706+
b.Unlock()
710707
b.Log.Infof("Subscribed to newsletter: %s (%s)", name, event.ID.String())
711708
return
712709
}
713710
}
714711
b.subscribedNewsletters = append(b.subscribedNewsletters, &event.NewsletterMetadata)
715712
b.newsletterNames[event.ID.String()] = name
713+
b.Unlock()
716714
b.Log.Infof("Subscribed to newsletter: %s (%s)", name, event.ID.String())
717715
}
718716

719717
func (b *Bwhatsapp) handleNewsletterLeave(event *events.NewsletterLeave) {
720-
defer b.whatsappHandlePanic()
721-
722718
b.Log.Debugf("Left newsletter: %#v", event)
723719

724720
b.Lock()
725-
defer b.Unlock()
726-
727721
for i, nl := range b.subscribedNewsletters {
728722
if nl.ID == event.ID {
729723
b.subscribedNewsletters = append(b.subscribedNewsletters[:i], b.subscribedNewsletters[i+1:]...)
730724
delete(b.newsletterNames, event.ID.String())
725+
b.Unlock()
731726
b.Log.Infof("Unsubscribed from newsletter: %s", event.ID.String())
732727
return
733728
}
734729
}
730+
b.Unlock()
735731
}

bridge/whatsappmulti/helpers.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,28 +131,24 @@ func isGroupJid(identifier string) bool {
131131
}
132132

133133
func (b *Bwhatsapp) getNewsletterName(jid types.JID) string {
134-
defer b.whatsappHandlePanic()
135-
136134
b.RLock()
137-
defer b.RUnlock()
138135

139136
name, ok := b.newsletterNames[jid.String()]
137+
b.RUnlock()
140138
if ok {
141139
return name
142140
}
143141
return "Unknown Channel"
144142
}
145143

146144
func (b *Bwhatsapp) listNewsletterJIDs() []string {
147-
defer b.whatsappHandlePanic()
148-
149145
b.RLock()
150-
defer b.RUnlock()
151146

152147
jids := make([]string, len(b.subscribedNewsletters))
153148
for i, nl := range b.subscribedNewsletters {
154149
jids[i] = nl.ID.String()
155150
}
151+
b.RUnlock()
156152
return jids
157153
}
158154

bridge/whatsappmulti/whatsapp.go

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ const (
3030
type Bwhatsapp struct {
3131
*bridge.Config
3232

33-
startedAt time.Time
34-
wc *whatsmeow.Client
35-
contacts map[types.JID]types.ContactInfo
36-
users map[string]types.ContactInfo
37-
userAvatars map[string]string
38-
joinedGroups []*types.GroupInfo
33+
startedAt time.Time
34+
wc *whatsmeow.Client
35+
contacts map[types.JID]types.ContactInfo
36+
users map[string]types.ContactInfo
37+
userAvatars map[string]string
38+
joinedGroups []*types.GroupInfo
3939
subscribedNewsletters []*types.NewsletterMetadata
40-
newsletterNames map[string]string
40+
newsletterNames map[string]string
4141
}
4242

4343
type Replyable struct {
@@ -64,17 +64,8 @@ func New(cfg *bridge.Config) bridge.Bridger {
6464
return b
6565
}
6666

67-
func (b *Bwhatsapp) whatsappHandlePanic() {
68-
r := recover()
69-
if r != nil {
70-
b.Log.Warnf("Recovered from panic: %#v", r)
71-
}
72-
}
73-
7467
// Connect to WhatsApp. Required implementation of the Bridger interface
7568
func (b *Bwhatsapp) Connect() error {
76-
defer b.whatsappHandlePanic()
77-
7869
device, err := b.getDevice()
7970
if err != nil {
8071
return err
@@ -201,8 +192,6 @@ func (b *Bwhatsapp) Disconnect() error {
201192
// Required implementation of the Bridger interface
202193
// https://github.com/42wim/matterbridge/blob/2cfd880cdb0df29771bf8f31df8d990ab897889d/bridge/bridge.go#L11-L16
203194
func (b *Bwhatsapp) JoinChannel(channel config.ChannelInfo) error {
204-
defer b.whatsappHandlePanic()
205-
206195
b.RLock()
207196
subscribedNewsletters := b.subscribedNewsletters
208197
joinedGroups := b.joinedGroups
@@ -434,16 +423,12 @@ func (b *Bwhatsapp) PostAudioMessage(msg config.Message, filetype string) (strin
434423

435424
// Send a message from the bridge to WhatsApp
436425
func (b *Bwhatsapp) Send(msg config.Message) (string, error) {
437-
defer b.whatsappHandlePanic()
438-
439426
groupJID, _ := types.ParseJID(msg.Channel)
440427

441428
// WhatsApp channels (newsletters) are read-only for subscribers;
442429
// only the channel owner or admin can post. Check role before sending.
443430
if groupJID.Server == types.NewsletterServer {
444431
b.RLock()
445-
defer b.RUnlock()
446-
447432
found, canSend := false, false
448433
for _, nl := range b.subscribedNewsletters {
449434
if nl.ID == groupJID {
@@ -456,6 +441,7 @@ func (b *Bwhatsapp) Send(msg config.Message) (string, error) {
456441
break
457442
}
458443
}
444+
b.RUnlock()
459445

460446
if !found {
461447
b.Log.Warnf("Cannot send to unknown newsletter %s: not in subscribed list", groupJID)

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ require (
4646
golang.org/x/oauth2 v0.22.0
4747
golang.org/x/text v0.40.0
4848
gomod.garykim.dev/nc-talk v0.3.0
49-
google.golang.org/protobuf v1.36.11
5049
layeh.com/gumble v0.0.0-20221205141517-d1df60a3cc14
5150
maunium.net/go/mautrix v0.29.1-0.20260722181210-2ee6142f1dd5
5251
modernc.org/sqlite v1.32.0
@@ -142,6 +141,7 @@ require (
142141
golang.org/x/time v0.5.0 // indirect
143142
google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect
144143
google.golang.org/grpc v1.65.0 // indirect
144+
google.golang.org/protobuf v1.36.11 // indirect
145145
gopkg.in/ini.v1 v1.67.0 // indirect
146146
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
147147
gopkg.in/yaml.v2 v2.4.0 // indirect

go.sum

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@ github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
208208
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
209209
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
210210
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
211-
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
212-
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
211+
github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
212+
github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
213213
github.com/mattn/go-mastodon v0.0.10 h1:wz1d/aCkJOIkz46iv4eAqXHVreUMxydY1xBWrPBdDeE=
214214
github.com/mattn/go-mastodon v0.0.10/go.mod h1:YBofeqh7G6s787787NQR8erBYz6fKDu+KNMrn5RuD6Y=
215215
github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
@@ -509,7 +509,6 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc
509509
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
510510
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
511511
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
512-
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
513512
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
514513
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
515514
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=

0 commit comments

Comments
 (0)