mirror of
https://github.com/amigan/aim-oscar-server.git
synced 2024-11-21 12:09:48 -05:00
die less often
This commit is contained in:
parent
56c355b147
commit
3f59eb0056
3 changed files with 26 additions and 4 deletions
7
main.go
7
main.go
|
@ -230,7 +230,12 @@ func main() {
|
|||
|
||||
if service, ok := serviceManager.GetService(snac.Header.Family); ok {
|
||||
newCtx, err := service.HandleSNAC(ctx, db, snac)
|
||||
util.PanicIfError(err)
|
||||
if err != nil {
|
||||
log.Printf("encountered error: %s", err)
|
||||
session.Disconnect()
|
||||
handleCloseFn(ctx, session)
|
||||
}
|
||||
|
||||
return newCtx
|
||||
}
|
||||
} else if flap.Header.Channel == 4 {
|
||||
|
|
|
@ -52,7 +52,6 @@ func (s *LocationServices) HandleSNAC(ctx context.Context, db *bun.DB, snac *osc
|
|||
}
|
||||
user.AwayMessage = string(awayMessageTLV.Data)
|
||||
user.AwayMessageEncoding = string(awayMessageMimeTLV.Data)
|
||||
|
||||
}
|
||||
|
||||
profileTLV := oscar.FindTLV(tlvs, 0x2)
|
||||
|
@ -95,6 +94,14 @@ func (s *LocationServices) HandleSNAC(ctx context.Context, db *bun.DB, snac *osc
|
|||
if err != nil {
|
||||
return ctx, aimerror.FetchingUser(err, requestedScreenName)
|
||||
}
|
||||
if requestedUser == nil {
|
||||
noMatchSnac := oscar.NewSNAC(0x2, 1)
|
||||
noMatchSnac.Data.WriteUint16(0x14) // error code 0x14: No Match
|
||||
noMatchFlap := oscar.NewFLAP(2)
|
||||
noMatchFlap.Data.WriteBinary(noMatchSnac)
|
||||
session.Send(noMatchFlap)
|
||||
return ctx, nil
|
||||
}
|
||||
|
||||
respSnac := oscar.NewSNAC(2, 6)
|
||||
respSnac.Data.WriteLPString(requestedUser.ScreenName)
|
||||
|
|
|
@ -48,7 +48,12 @@ func (b *BuddyListManagement) HandleSNAC(ctx context.Context, db *bun.DB, snac *
|
|||
return ctx, errors.Wrap(err, "error looking for User")
|
||||
}
|
||||
if buddy == nil {
|
||||
return ctx, aimerror.UserNotFound(buddyScreename)
|
||||
noMatchSnac := oscar.NewSNAC(0x3, 1)
|
||||
noMatchSnac.Data.WriteUint16(0x14) // error code 0x14: No Match
|
||||
noMatchFlap := oscar.NewFLAP(2)
|
||||
noMatchFlap.Data.WriteBinary(noMatchSnac)
|
||||
session.Send(noMatchFlap)
|
||||
return ctx, nil
|
||||
}
|
||||
|
||||
rel := &models.Buddy{
|
||||
|
@ -84,7 +89,12 @@ func (b *BuddyListManagement) HandleSNAC(ctx context.Context, db *bun.DB, snac *
|
|||
return ctx, errors.Wrap(err, "error looking for User")
|
||||
}
|
||||
if buddy == nil {
|
||||
return ctx, aimerror.UserNotFound(buddyScreename)
|
||||
noMatchSnac := oscar.NewSNAC(0x3, 1)
|
||||
noMatchSnac.Data.WriteUint16(0x14) // error code 0x14: No Match
|
||||
noMatchFlap := oscar.NewFLAP(2)
|
||||
noMatchFlap.Data.WriteBinary(noMatchSnac)
|
||||
session.Send(noMatchFlap)
|
||||
return ctx, nil
|
||||
}
|
||||
|
||||
_, err = db.NewDelete().Model((*models.Buddy)(nil)).Where("source_uin = ?", user.UIN).Where("with_uin = ?", buddy.UIN).Exec(ctx)
|
||||
|
|
Loading…
Reference in a new issue