int srv_check_reuse_ws(struct server *srv);
const struct mux_ops *srv_get_ws_proto(struct server *srv);
+/* allocate a new server and return it (or NULL on failure). The structure is
+ * zeroed.
+ */
+static inline struct server *srv_alloc(void)
+{
+ struct server *srv;
+
+ srv = calloc(1, sizeof(*srv));
+ return srv;
+}
+
+/* free a previously allocated server an nullifies the pointer */
+static inline void srv_free(struct server **srv_ptr)
+{
+ ha_free(srv_ptr);
+}
+
/* increase the number of cumulated streams on the designated server */
static inline void srv_inc_sess_ctr(struct server *s)
{
list_for_each_entry(child, &proc_list, list) {
free((char *)child->srv->conf.file); /* cast because of const char * */
free(child->srv->id);
- ha_free(&child->srv);
+ srv_free(&child->srv);
}
free(msg);
*/
if (p->defsrv) {
srv_free_params(p->defsrv);
- ha_free(&p->defsrv);
+ srv_free(&p->defsrv);
}
if (p->lbprm.proxy_deinit)
if (defproxy->defsrv)
ha_free((char **)&defproxy->defsrv->conf.file);
ha_free(&defproxy->defbe.name);
- ha_free(&defproxy->defsrv);
+ srv_free(&defproxy->defsrv);
h = defproxy->req_cap;
while (h) {
if (name)
memprintf(errmsg, "proxy '%s': %s", name, *errmsg);
- ha_free(&px->defsrv);
+ srv_free(&px->defsrv);
ha_free(&px->id);
counters_fe_shared_drop(&px->fe_counters.shared);
counters_be_shared_drop(&px->be_counters.shared);
* quitting.
*/
if (curproxy)
- free(curproxy->defsrv);
+ srv_free(&curproxy->defsrv);
free(curproxy);
return NULL;
}
* none allocated yet in the current proxy so we have
* to allocate and pre-initialize it right now.
*/
- curproxy->defsrv = calloc(1, sizeof(*curproxy->defsrv));
+ curproxy->defsrv = srv_alloc();
if (!curproxy->defsrv) {
memprintf(errmsg, "proxy '%s': out of memory allocating default-server", curproxy->id);
return 1;
if (curproxy->defsrv) {
ha_free((char **)&curproxy->defsrv->conf.file);
- ha_free(&curproxy->defsrv);
+ srv_free(&curproxy->defsrv);
}
}
return 0;
{
struct server *srv;
- srv = calloc(1, sizeof *srv);
+ srv = srv_alloc();
if (!srv)
return NULL;
EXTRA_COUNTERS_FREE(srv->extra_counters);
- ha_free(&srv);
+ srv_free(&srv);
end:
return next;
free_check(&newsrv->check);
MT_LIST_DELETE(&newsrv->global_list);
}
- free(newsrv);
+ srv_free(&newsrv);
return i - srv->tmpl_info.nb_low;
}
*/
newsrv = curproxy->defsrv;
if (!newsrv) {
- newsrv = calloc(1, sizeof(*newsrv));
+ newsrv = srv_alloc();
if (!newsrv) {
ha_alert("out of memory.\n");
err_code |= ERR_ALERT | ERR_ABORT;