mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
Fix potential out of range for stream source transform update.
Clean up un-needed if statement as it's ok to call NewSubjectTransform with an empty destination (ie no transformation) it will return nil Signed-off-by: Jean-Noël Moyne <jnmoyne@gmail.com>
This commit is contained in:
@@ -1730,21 +1730,21 @@ func (mset *stream) updateWithAdvisory(config *StreamConfig, sendAdvisory bool)
|
||||
|
||||
if len(s.SubjectTransforms) == 0 {
|
||||
si = &sourceInfo{name: s.Name, iname: s.iname, sf: s.FilterSubject}
|
||||
// Check for transform.
|
||||
if s.SubjectTransformDest != _EMPTY_ {
|
||||
var err error
|
||||
if si.tr, err = NewSubjectTransform(s.FilterSubject, s.SubjectTransformDest); err != nil {
|
||||
mset.mu.Unlock()
|
||||
return fmt.Errorf("stream source subject transform from '%s' to '%s': %w", s.FilterSubject, s.SubjectTransformDest, err)
|
||||
}
|
||||
// set for transform if any
|
||||
var err error
|
||||
if si.tr, err = NewSubjectTransform(s.FilterSubject, s.SubjectTransformDest); err != nil {
|
||||
mset.mu.Unlock()
|
||||
return fmt.Errorf("stream source subject transform from '%s' to '%s': %w", s.FilterSubject, s.SubjectTransformDest, err)
|
||||
}
|
||||
} else {
|
||||
si = &sourceInfo{name: s.Name, iname: s.iname}
|
||||
si.trs = make([]*subjectTransform, len(s.SubjectTransforms))
|
||||
for i := range s.SubjectTransforms {
|
||||
// err can be ignored as already validated in config check
|
||||
var err error
|
||||
si.trs[i], err = NewSubjectTransform(s.SubjectTransforms[i].Source, s.SubjectTransforms[i].Destination)
|
||||
if err != nil {
|
||||
mset.mu.Unlock()
|
||||
mset.srv.Errorf("Unable to get subject transform for source: %v", err)
|
||||
}
|
||||
}
|
||||
@@ -2442,12 +2442,11 @@ func (mset *stream) setupMirrorConsumer() error {
|
||||
// Filters
|
||||
if mset.cfg.Mirror.FilterSubject != _EMPTY_ {
|
||||
req.Config.FilterSubject = mset.cfg.Mirror.FilterSubject
|
||||
if mset.cfg.Mirror.SubjectTransformDest != _EMPTY_ {
|
||||
var err error
|
||||
mirror.tr, err = NewSubjectTransform(mset.cfg.Mirror.FilterSubject, mset.cfg.Mirror.SubjectTransformDest)
|
||||
if err != nil {
|
||||
mset.srv.Errorf("Unable to get transform for mirror consumer: %v", err)
|
||||
}
|
||||
// Set transform if any
|
||||
var err error
|
||||
mirror.tr, err = NewSubjectTransform(mset.cfg.Mirror.FilterSubject, mset.cfg.Mirror.SubjectTransformDest)
|
||||
if err != nil {
|
||||
mset.srv.Errorf("Unable to get transform for mirror consumer: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3258,14 +3257,12 @@ func (mset *stream) startingSequenceForSources() {
|
||||
|
||||
if len(ssi.SubjectTransforms) == 0 {
|
||||
si = &sourceInfo{name: ssi.Name, iname: ssi.iname, sf: ssi.FilterSubject}
|
||||
// Check for transform.
|
||||
if ssi.SubjectTransformDest != _EMPTY_ {
|
||||
// no need to check the error as already validated that it will not before
|
||||
var err error
|
||||
si.tr, err = NewSubjectTransform(ssi.FilterSubject, ssi.SubjectTransformDest)
|
||||
if err != nil {
|
||||
mset.srv.Errorf("Unable to get subject transform for source: %v", err)
|
||||
}
|
||||
// Set the transform if any
|
||||
// technically no need to check the error as already validated that it will not before
|
||||
var err error
|
||||
si.tr, err = NewSubjectTransform(ssi.FilterSubject, ssi.SubjectTransformDest)
|
||||
if err != nil {
|
||||
mset.srv.Errorf("Unable to get subject transform for source: %v", err)
|
||||
}
|
||||
} else {
|
||||
var trs []*subjectTransform
|
||||
|
||||
Reference in New Issue
Block a user