diff --git a/core/emperor.c b/core/emperor.c index 27749c02..41c73b6c 100644 --- a/core/emperor.c +++ b/core/emperor.c @@ -48,6 +48,20 @@ char *vassal_attr_get(struct uwsgi_instance *c_ui, char *attr) { return NULL; } +int vassal_attr_get_multi(struct uwsgi_instance *c_ui, char *attr, int (*func)(struct uwsgi_instance *, char *, void *), void *data) { + if (!attr) return -1; + struct uwsgi_dyn_dict *attrs = c_ui->attrs; + while(attrs) { + if (!strcmp(attrs->key, attr)) { + if (func(c_ui, attrs->value, data)) { + return -1; + } + } + attrs = attrs->next; + } + return 0; +} + // this generates the argv for the new vassal static char **vassal_new_argv(struct uwsgi_instance *n_ui, int *slot_to_free) { diff --git a/uwsgi.h b/uwsgi.h index 3c3a2dee..57e97108 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -4887,6 +4887,7 @@ char *uwsgi_subscription_algo_name(void *); int uwsgi_wait_for_fs(char *, int); void uwsgi_hooks_setns_run(struct uwsgi_string_list *, pid_t, uid_t, gid_t); char *vassal_attr_get(struct uwsgi_instance *, char *); +int vassal_attr_get_multi(struct uwsgi_instance *, char *, int (*)(struct uwsgi_instance *, char *, void *), void *); #ifdef __cplusplus } #endif