mirror of
https://github.com/jwetzell/showbridge-go.git
synced 2026-04-27 13:25:40 +00:00
cleanup some error handling
This commit is contained in:
@@ -23,7 +23,7 @@ type SIPCallServer struct {
|
|||||||
Port int
|
Port int
|
||||||
Transport string
|
Transport string
|
||||||
UserAgent string
|
UserAgent string
|
||||||
diag *diago.Diago
|
dg *diago.Diago
|
||||||
}
|
}
|
||||||
|
|
||||||
type SIPCallMessage struct {
|
type SIPCallMessage struct {
|
||||||
@@ -124,7 +124,7 @@ func (sds *SIPCallServer) Run() error {
|
|||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
|
|
||||||
sds.diag = dg
|
sds.dg = dg
|
||||||
|
|
||||||
<-sds.ctx.Done()
|
<-sds.ctx.Done()
|
||||||
slog.Debug("router context done in module", "id", sds.Id())
|
slog.Debug("router context done in module", "id", sds.Id())
|
||||||
@@ -148,8 +148,8 @@ func (sds *SIPCallServer) Output(payload any) error {
|
|||||||
return fmt.Errorf("sip.call.server output payload must be of type string")
|
return fmt.Errorf("sip.call.server output payload must be of type string")
|
||||||
}
|
}
|
||||||
|
|
||||||
if sds.diag == nil {
|
if sds.dg == nil {
|
||||||
return fmt.Errorf("sip.call.server diago not initialized")
|
return fmt.Errorf("sip.call.server diago is not initialized")
|
||||||
}
|
}
|
||||||
|
|
||||||
var uri sip.Uri
|
var uri sip.Uri
|
||||||
@@ -157,19 +157,29 @@ func (sds *SIPCallServer) Output(payload any) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("sip.call.server output payload is not a valid SIP URI: %v", err)
|
return fmt.Errorf("sip.call.server output payload is not a valid SIP URI: %v", err)
|
||||||
}
|
}
|
||||||
outDialog, err := sds.diag.NewDialog(uri, diago.NewDialogOptions{
|
outDialog, err := sds.dg.NewDialog(uri, diago.NewDialogOptions{
|
||||||
Transport: sds.Transport,
|
Transport: sds.Transport,
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("sip.call.server failed to create new dialog: %v", err)
|
return fmt.Errorf("sip.call.server failed to create new dialog: %v", err)
|
||||||
}
|
}
|
||||||
outDialog.Invite(sds.ctx, diago.InviteClientOptions{})
|
|
||||||
outDialog.Ack(sds.ctx)
|
|
||||||
|
|
||||||
|
err = outDialog.Invite(sds.ctx, diago.InviteClientOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("sip.call.server failed to send invite: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = outDialog.Ack(sds.ctx)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("sip.call.server failed to send ack: %v", err)
|
||||||
|
}
|
||||||
// TODO(jwetzell): make this configurable
|
// TODO(jwetzell): make this configurable
|
||||||
// NOTE(jwetzell): wait 5 seconds before hanging up the call
|
// NOTE(jwetzell): wait 5 seconds before hanging up the call
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
outDialog.Hangup(sds.ctx)
|
err = outDialog.Hangup(sds.ctx)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("sip.call.server failed to hangup call: %v", err)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user