From: Willy Tarreau Date: Tue, 2 Aug 2011 09:25:54 +0000 (+0200) Subject: [MINOR] proxy: make findproxy() return proxies from numeric IDs too X-Git-Tag: v1.5-dev8~162 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bc216c4ad0793e5f240361bfc67de4f691b4b3a4;p=thirdparty%2Fhaproxy.git [MINOR] proxy: make findproxy() return proxies from numeric IDs too Sometimes it's useful to be able to search a proxy by its numeric ID, so let's add support for names such as #. --- diff --git a/src/proxy.c b/src/proxy.c index 3b56c86ea2..6df460e590 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -315,12 +315,22 @@ struct proxy *findproxy_mode(const char *name, int mode, int cap) { return target; } +/* Returns a pointer to the proxy matching either name , or id if + * begins with a '#'. NULL is returned if no match is found, as well as + * if multiple matches are found (eg: too large capabilities mask). + */ struct proxy *findproxy(const char *name, int cap) { struct proxy *curproxy, *target = NULL; + int pid = 0; + + if (*name == '#') + pid = atoi(name + 1); for (curproxy = proxy; curproxy; curproxy = curproxy->next) { - if ((curproxy->cap & cap)!=cap || strcmp(curproxy->id, name)) + if ((curproxy->cap & cap) != cap || + (pid && curproxy->uuid != pid) || + (!pid && strcmp(curproxy->id, name))) continue; if (!target) {