mirror of
https://gitlab.com/chrony/chrony.git
synced 2025-12-04 14:05:08 -05:00
sources: fix marking of non-preferred selectable sources
When reducing the list of selectable sources to sources with the prefer option, sources before the first preferred source were left with the SRC_OK status, which triggered an assertion failure in the next selection.
This commit is contained in:
14
sources.c
14
sources.c
@@ -872,16 +872,18 @@ SRC_SelectSource(SRC_Instance updated_inst)
|
|||||||
|
|
||||||
/* If there are any sources with prefer option, reduce the list again
|
/* If there are any sources with prefer option, reduce the list again
|
||||||
only to the preferred sources */
|
only to the preferred sources */
|
||||||
for (i = j = 0; i < n_sel_sources; i++) {
|
|
||||||
if (sources[sel_sources[i]]->sel_option == SRC_SelectPrefer)
|
|
||||||
sel_sources[j++] = sel_sources[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (j > 0) {
|
|
||||||
for (i = 0; i < n_sel_sources; i++) {
|
for (i = 0; i < n_sel_sources; i++) {
|
||||||
|
if (sources[sel_sources[i]]->sel_option == SRC_SelectPrefer)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i < n_sel_sources) {
|
||||||
|
for (i = j = 0; i < n_sel_sources; i++) {
|
||||||
if (sources[sel_sources[i]]->sel_option != SRC_SelectPrefer)
|
if (sources[sel_sources[i]]->sel_option != SRC_SelectPrefer)
|
||||||
sources[sel_sources[i]]->status = SRC_NONPREFERRED;
|
sources[sel_sources[i]]->status = SRC_NONPREFERRED;
|
||||||
|
else
|
||||||
|
sel_sources[j++] = sel_sources[i];
|
||||||
}
|
}
|
||||||
|
assert(j > 0);
|
||||||
n_sel_sources = j;
|
n_sel_sources = j;
|
||||||
sel_prefer = 1;
|
sel_prefer = 1;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user