Open
Description
Hi,
I am trying to implement a simple Registra to store IP of the two SIP device, starting with the examples/register. However, the program failed to make SIP REGISTER and kept showing Request Timeout
error as can be seen from the screenshot below:
Initially I ran the code in the mac M1 and then tried it again with the ubuntu 20.04 virtual machine. Neither of them worked.
I haven't edited the code yet, just cloning and running via go run ./exmples/register/main -c
.
package main
import (
"os"
"os/signal"
"syscall"
"time"
"github.com/cloudwebrtc/go-sip-ua/pkg/account"
"github.com/cloudwebrtc/go-sip-ua/pkg/media/rtp"
"github.com/cloudwebrtc/go-sip-ua/pkg/stack"
"github.com/cloudwebrtc/go-sip-ua/pkg/ua"
"github.com/cloudwebrtc/go-sip-ua/pkg/utils"
"github.com/ghettovoice/gosip/log"
"github.com/ghettovoice/gosip/sip/parser"
)
var (
logger log.Logger
udp *rtp.RtpUDPStream
)
func init() {
logger = utils.NewLogrusLogger(log.DebugLevel, "Register", nil)
}
func main() {
stop := make(chan os.Signal, 1)
signal.Notify(stop, syscall.SIGTERM, syscall.SIGINT)
stack := stack.NewSipStack(&stack.SipStackConfig{
UserAgent: "Go Sip Client/example-register",
Extensions: []string{"replaces", "outbound"},
Dns: "8.8.8.8"})
if err := stack.Listen("udp", "0.0.0.0:5066"); err != nil {
logger.Panic(err)
}
ua := ua.NewUserAgent(&ua.UserAgentConfig{
SipStack: stack,
})
ua.RegisterStateHandler = func(state account.RegisterState) {
logger.Infof("RegisterStateHandler: user => %s, state => %v, expires => %v, reason => %v", state.Account.AuthInfo.AuthUser, state.StatusCode, state.Expiration, state.Reason)
}
uri, err := parser.ParseUri("sip:[email protected]") // this acts as an identifier, not connection info
if err != nil {
logger.Error(err)
}
profile := account.NewProfile(uri.Clone(), "goSIP",
&account.AuthInfo{
AuthUser: "100",
Password: "100",
Realm: "b2bua",
},
1800,
stack,
)
recipient, err := parser.ParseSipUri("sip:[email protected];transport=udp") // this is the remote address
if err != nil {
logger.Error(err)
}
register, err := ua.SendRegister(profile, recipient, profile.Expires, nil)
if err != nil {
logger.Error(err)
}
time.Sleep(time.Second * 5)
register.SendRegister(0)
time.Sleep(time.Second * 5)
register.SendRegister(300)
time.Sleep(time.Second * 5)
register.SendRegister(0)
<-stop
ua.Shutdown()
}
I saw some issues mentioned by @brnt but this seems to be a different one. Let me know if I could provide more info
Thank you for your help.
Metadata
Metadata
Assignees
Labels
No labels