Revision 9bfd8974
Added by Jim Pingle over 2 years ago
src/usr/local/www/xmlrpc.php | ||
---|---|---|
228 | 228 |
$syncd_full_sections = array(); |
229 | 229 |
|
230 | 230 |
foreach ($sync_full_sections as $section) { |
231 |
if (!isset($sections[$section])) { |
|
231 |
/* Do not test for empty here or removing final entry |
|
232 |
* from a section will not work */ |
|
233 |
if (!array_key_exists($section, $sections)) { |
|
232 | 234 |
continue; |
233 | 235 |
} |
234 | 236 |
|
235 |
$config[$section] = $sections[$section];
|
|
236 |
unset($sections[$section]);
|
|
237 |
config_set_path($section, array_get_path($sections, $section));
|
|
238 |
array_del_path($sections, $section);
|
|
237 | 239 |
$syncd_full_sections[] = $section; |
238 | 240 |
} |
239 | 241 |
|
... | ... | |
395 | 397 |
|
396 | 398 |
$vipbackup = array(); |
397 | 399 |
$oldvips = array(); |
398 |
if (isset($sections['virtualip']) && |
|
399 |
is_array($config['virtualip']['vip'])) { |
|
400 |
foreach ($config['virtualip']['vip'] as $vip) { |
|
400 |
if (array_key_exists('virtualip', $sections)) { |
|
401 |
foreach (config_get_path('virtualip/vip', []) as $vip) { |
|
402 |
if (empty($vip)) { |
|
403 |
continue; |
|
404 |
} |
|
401 | 405 |
if ($vip['mode'] == "carp") { |
402 | 406 |
$key = $vip['interface'] . |
403 | 407 |
"_vip" . $vip['vhid']; |
... | ... | |
435 | 439 |
/* For vip section, first keep items sent from the master */ |
436 | 440 |
$config = array_merge_recursive_unique($config, $sections); |
437 | 441 |
|
438 |
|
|
439 | 442 |
/* Remove locally items removed remote */ |
440 | 443 |
foreach ($voucher as $zone => $item) { |
441 | 444 |
/* No rolls on master, delete local ones */ |
... | ... | |
504 | 507 |
* on the backup |
505 | 508 |
*/ |
506 | 509 |
if (is_array($vipbackup) && !empty($vipbackup)) { |
507 |
if (!is_array($config['virtualip'])) { |
|
508 |
$config['virtualip'] = array(); |
|
509 |
} |
|
510 |
if (!is_array($config['virtualip']['vip'])) { |
|
511 |
$config['virtualip']['vip'] = array(); |
|
512 |
} |
|
510 |
$vips = config_get_path('virtualip/vip', []); |
|
513 | 511 |
foreach ($vipbackup as $vip) { |
514 |
array_unshift($config['virtualip']['vip'], $vip);
|
|
512 |
array_unshift($vips, $vip);
|
|
515 | 513 |
} |
514 |
config_set_path('virtualip/vip', $vips); |
|
516 | 515 |
} |
517 | 516 |
|
518 | 517 |
/* Log what happened */ |
Also available in: Unified diff
Improve handling of XMLRPC sync of empty sections. Fixes #14034