Sequential rotation was used just to rotate all upstreams in the loop (e.g. when you need to do some action for all upstreams). Allowing to specify it as a user defined algorithm was a mistake as it breaks upstreams API expectations. See #4043tags/3.2
ups->rot_alg = RSPAMD_UPSTREAM_HASHED; | ups->rot_alg = RSPAMD_UPSTREAM_HASHED; | ||||
p += sizeof ("hash:") - 1; | p += sizeof ("hash:") - 1; | ||||
} | } | ||||
else if (RSPAMD_LEN_CHECK_STARTS_WITH(p, len, "sequential:")) { | |||||
ups->rot_alg = RSPAMD_UPSTREAM_SEQUENTIAL; | |||||
p += sizeof ("sequential:") - 1; | |||||
} | |||||
while (p < end) { | while (p < end) { | ||||
span_len = rspamd_memcspn (p, separators, end - p); | span_len = rspamd_memcspn (p, separators, end - p); |