emiago / sipgo

SIP library for writing fast SIP services in GO
BSD 2-Clause "Simplified" License
529 stars 67 forks source link

The example client bails out when compiled with Go 1.22.4 #104

Closed graugans closed 3 weeks ago

graugans commented 3 months ago

I am not sure if this is related to Go 1.22 or in general an issue. When I do compile the example client and run it I do get:

Jun 28 08:51:11.427711 INF REGISTER sip:bob@127.0.0.1:5060 SIP/2.0
Jun 28 08:51:11.431174 INF Received status status=401
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x64579b]

goroutine 1 [running]:
github.com/icholy/digest.(*Credentials).String(0x0)
        /go/pkg/mod/github.com/icholy/digest@v0.1.22/credentials.go:76 +0x5b
main.main()
        /workspaces/opkald/example/client/main.go:97 +0xef6

In case I do handle the error I do get:

        // Reply with digest
        cred, err := digest.Digest(chal, digest.Options{
            Method:   req.Method.String(),
            URI:      recipient.Host,
            Username: *username,
            Password: *password,
        })
        if err != nil {
            panic(err)
        }

panic: digest: unsupported algorithm: "md5"

I can fix this by setting the Algorithm to "MD5" by hand....

        // Get WwW-Authenticate
        wwwAuth := res.GetHeader("WWW-Authenticate")
        chal, err := digest.ParseChallenge(wwwAuth.Value())
        if err != nil {
            log.Fatal().Str("wwwauth", wwwAuth.Value()).Err(err).Msg("Fail to parse challenge")
        }
        chal.Algorithm = "MD5"

I guess this should be fixed in the sipgo package

graugans commented 3 months ago

It looks like this is related to the digest package and the fact that asterisk does return a lower-case md5

emiago commented 3 months ago

I used asterisk in many testing, which version of asterisk are you using?

graugans commented 3 months ago

The version I do use at the moment is the Ubuntu 22.04 included version. Asterisk 18.10.0~dfsg+~cs6.10.40431411-2 Maybe this behavior can be changed in the asterisk config?

emiago commented 2 months ago

@graugans have you tried newer versions?

emiago commented 3 weeks ago

Tested again and confirmed all works with asterisk 20