commit - 952c015b38f9d4dcaf68a269c4018a920f35eb5f
commit + 80854f0233cbd6df2ed2ea07a17d910fb988a59d
blob - 6a6a55a0fbb637fd9edde2c9ff89f2fbe786466c
blob + fad0138773815e118c58858f329ae320960cdcd0
--- carp.c
+++ carp.c
-/* $OpenBSD: carp.c,v 1.12 2016/08/18 00:45:52 jsg Exp $ */
+/* $OpenBSD: carp.c,v 1.13 2026/01/01 08:30:33 rsadowski Exp $ */
/*
* Copyright (c) 2006 Henning Brauer <henning@openbsd.org>
struct carpgroup *c;
int level;
- if ((c = carp_group_find(group)) == NULL) {
- if ((c = calloc(1, sizeof(struct carpgroup))) == NULL) {
- log_warn("%s: calloc", __func__);
- return (-1);
- }
- if ((c->group = strdup(group)) == NULL) {
- log_warn("%s: strdup", __func__);
- free(c);
- return (-1);
- }
+ if (carp_group_find(group) != NULL)
+ return (0);
- /* only demote if this group already is demoted */
- if ((level = carp_demote_get(group)) == -1) {
- free(c->group);
- free(c);
- return (-1);
- }
- if (level > 0 || force)
- c->do_demote = 1;
-
- TAILQ_INSERT_TAIL(&carpgroups, c, entry);
+ if ((c = calloc(1, sizeof(struct carpgroup))) == NULL) {
+ log_warn("%s: calloc", __func__);
+ return (-1);
}
+ if ((c->group = strdup(group)) == NULL) {
+ log_warn("%s: strdup", __func__);
+ free(c);
+ return (-1);
+ }
+ /* only demote if this group already is demoted */
+ if ((level = carp_demote_get(group)) == -1) {
+ free(c->group);
+ free(c);
+ return (-1);
+ }
+ if (level > 0 || force)
+ c->do_demote = 1;
+ TAILQ_INSERT_TAIL(&carpgroups, c, entry);
return (0);
}