diff --git a/pkg/rtsp/auth.go b/pkg/rtsp/auth.go index b4b639d..7b8627b 100644 --- a/pkg/rtsp/auth.go +++ b/pkg/rtsp/auth.go @@ -34,11 +34,17 @@ type Auth struct { Algorithm string } -func (a *Auth) FeedWwwAuthenticate(s string, username, password string) { +func (a *Auth) FeedWwwAuthenticate(auths []string, username, password string) { a.Username = username a.Password = password - - s = strings.TrimPrefix(s, HeaderWwwAuthenticate) + //目前只处理第一个 + var s string + if len(auths)>0{ + s = auths[0] + }else{ + return + } + s = strings.TrimPrefix(s, HeaderWwwAuthenticate) s = strings.TrimSpace(s) if strings.HasPrefix(s, AuthTypeBasic) { a.Typ = AuthTypeBasic diff --git a/pkg/rtsp/client_command_session.go b/pkg/rtsp/client_command_session.go index 64dcb89..2783540 100644 --- a/pkg/rtsp/client_command_session.go +++ b/pkg/rtsp/client_command_session.go @@ -550,8 +550,8 @@ func (session *ClientCommandSession) writeCmdReadResp(method, uri string, header if ctx.StatusCode != "401" { return } - //目前只处理第一个 - session.auth.FeedWwwAuthenticate(ctx.Headers.Get(HeaderWwwAuthenticate), session.urlCtx.Username, session.urlCtx.Password) + + session.auth.FeedWwwAuthenticate(ctx.Headers.Values(HeaderWwwAuthenticate), session.urlCtx.Username, session.urlCtx.Password) } err = ErrRtsp