server: return specific error message in case interleaved IDs are in use

This commit is contained in:
aler9
2021-08-25 09:47:12 +02:00
parent e11fb9d5a0
commit 0840425ed2
2 changed files with 11 additions and 3 deletions

View File

@@ -175,6 +175,14 @@ func (e ErrServerTransportHeaderInvalidInterleavedIDs) Error() string {
return "invalid interleaved IDs"
}
// ErrServerTransportHeaderInterleavedIDsAlreadyUsed is an error that can be returned by a server.
type ErrServerTransportHeaderInterleavedIDsAlreadyUsed struct{}
// Error implements the error interface.
func (e ErrServerTransportHeaderInterleavedIDsAlreadyUsed) Error() string {
return "interleaved IDs already used"
}
// ErrServerTracksDifferentProtocols is an error that can be returned by a server.
type ErrServerTracksDifferentProtocols struct{}

View File

@@ -605,8 +605,8 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base
}, liberrors.ErrServerTransportHeaderNoInterleavedIDs{}
}
if (inTH.InterleavedIDs[0]+1) != inTH.InterleavedIDs[1] ||
(inTH.InterleavedIDs[0]%2) != 0 {
if (inTH.InterleavedIDs[0]%2) != 0 ||
(inTH.InterleavedIDs[0]+1) != inTH.InterleavedIDs[1] {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, liberrors.ErrServerTransportHeaderInvalidInterleavedIDs{}
@@ -615,7 +615,7 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base
if _, ok := ss.setuppedTracksByChannel[inTH.InterleavedIDs[0]]; ok {
return &base.Response{
StatusCode: base.StatusBadRequest,
}, liberrors.ErrServerTransportHeaderInvalidInterleavedIDs{}
}, liberrors.ErrServerTransportHeaderInterleavedIDsAlreadyUsed{}
}
}