Exit on wire error explicitly, do not hope on gTomb.Dying()
This commit is contained in:
12
buny.go
12
buny.go
@@ -94,8 +94,6 @@ func bunyPresense(v xmpp.Presence) error { //nolint:gocognit,gocyclo
|
||||
)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
return err
|
||||
@@ -127,8 +125,6 @@ func bunyPresense(v xmpp.Presence) error { //nolint:gocognit,gocyclo
|
||||
)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
return err
|
||||
@@ -164,8 +160,6 @@ func bunyPresense(v xmpp.Presence) error { //nolint:gocognit,gocyclo
|
||||
)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
return err
|
||||
@@ -198,8 +192,6 @@ func bunyPresense(v xmpp.Presence) error { //nolint:gocognit,gocyclo
|
||||
)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
return err
|
||||
@@ -256,8 +248,6 @@ func bunyChat(v xmpp.Chat) error {
|
||||
)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
return err
|
||||
@@ -291,8 +281,6 @@ func bunyChat(v xmpp.Chat) error {
|
||||
)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
return err
|
||||
|
||||
21
lib.go
21
lib.go
@@ -509,6 +509,8 @@ func establishConnection() {
|
||||
log.Errorf("Try to send initial KeepAlive, got error: %s", err)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
log.Info("Connected")
|
||||
@@ -544,6 +546,8 @@ func joinMuc(room string) {
|
||||
log.Infof("Unable to send disco#info to MUC %s: %s", room, err)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Ждём, пока muc нам вернёт список фичей.
|
||||
@@ -576,6 +580,8 @@ func joinMuc(room string) {
|
||||
log.Errorf("Unable to join to MUC: %s", room)
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
log.Infof("Joining to MUC: %s", room)
|
||||
@@ -684,7 +690,7 @@ func probeServerLiveness() { //nolint:gocognit
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
return
|
||||
|
||||
// По-умолчанию, мы отправляем c2s пинг
|
||||
default:
|
||||
@@ -693,7 +699,7 @@ func probeServerLiveness() { //nolint:gocognit
|
||||
if err := talk.PingC2S(talk.JID(), config.Jabber.Server); err != nil {
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
return
|
||||
}
|
||||
|
||||
serverPingTimestampTx = time.Now().Unix()
|
||||
@@ -704,7 +710,7 @@ func probeServerLiveness() { //nolint:gocognit
|
||||
if err := talk.PingC2S(talk.JID(), config.Jabber.Server); err != nil {
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
return
|
||||
}
|
||||
|
||||
serverPingTimestampTx = time.Now().Unix()
|
||||
@@ -717,7 +723,7 @@ func probeServerLiveness() { //nolint:gocognit
|
||||
if _, err := talk.SendKeepAlive(); err != nil {
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
return
|
||||
}
|
||||
}
|
||||
} else { // Сервер не ответил на disco#info
|
||||
@@ -726,7 +732,7 @@ func probeServerLiveness() { //nolint:gocognit
|
||||
if _, err := talk.SendKeepAlive(); err != nil {
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -768,7 +774,8 @@ func probeMUCLiveness() { //nolint:gocognit
|
||||
|
||||
if err := talk.PingS2S(talk.JID(), room+"/"+config.Jabber.Nick); err != nil {
|
||||
gTomb.Kill(err)
|
||||
continue
|
||||
|
||||
return
|
||||
}
|
||||
}(room)
|
||||
*/
|
||||
@@ -790,6 +797,8 @@ func probeMUCLiveness() { //nolint:gocognit
|
||||
if err := talk.PingS2S(talk.JID(), room); err != nil {
|
||||
err := fmt.Errorf("unable to ping MUC %s: %w", room, err)
|
||||
gTomb.Kill(err)
|
||||
|
||||
return
|
||||
}
|
||||
}(room)
|
||||
}
|
||||
|
||||
24
main.go
24
main.go
@@ -171,37 +171,31 @@ func myLoop() {
|
||||
if err != nil {
|
||||
log.Errorf("Unable to get events from server: %s", err)
|
||||
|
||||
// Попробуем скрасить печальные будни generic-ошибок...
|
||||
switch {
|
||||
// Стрим не читается, он закрылся с той стороны во время чтения
|
||||
case errors.Is(err, io.EOF):
|
||||
err := fmt.Errorf("tcp stream closed while reading, err=%w", err)
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
err = fmt.Errorf("tcp stream closed while reading, err=%w", err)
|
||||
|
||||
// Пытаемся читать закрытый сокет
|
||||
case errors.Is(err, net.ErrClosed):
|
||||
err := fmt.Errorf("unable to read closed socket, err=%w", err)
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
err = fmt.Errorf("unable to read closed socket, err=%w", err)
|
||||
|
||||
// Не смогли записать в сокет
|
||||
case errors.Is(err, net.ErrWriteToConnected):
|
||||
err := fmt.Errorf("unable to write to socket, err=%w", err)
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
err = fmt.Errorf("unable to write to socket, err=%w", err)
|
||||
|
||||
// Не сетевая проблема
|
||||
default:
|
||||
// Это уже что-то странное.
|
||||
// Вероятно, ошибка парсинга xml. Собственно, баг сервера, тут мы ничего поделать не можем
|
||||
err := fmt.Errorf("error during parsing received message, err=%w", err)
|
||||
err = fmt.Errorf("error during parsing received message, err=%w", err)
|
||||
}
|
||||
|
||||
gTomb.Kill(err)
|
||||
|
||||
continue
|
||||
}
|
||||
// Не забываем выходить на ошибке :(
|
||||
return
|
||||
}
|
||||
|
||||
parseEvent(chat)
|
||||
|
||||
Reference in New Issue
Block a user