]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: proxy: define cap PR_CAP_LUA
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 24 Mar 2021 09:49:34 +0000 (10:49 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 26 Mar 2021 14:28:33 +0000 (15:28 +0100)
Define a new cap PR_CAP_LUA. It can be used to allocate the internal
proxy for lua Socket class. This cap overrides default settings for
preferable values in the lua context.

include/haproxy/proxy-t.h
src/proxy.c

index 009a7bd00bf7b2e76fd9a0608a3e955b82a45417..e8e23851b5ff9327f5f0a63bcc78e3e82df7dbc1 100644 (file)
@@ -68,6 +68,7 @@ enum PR_SRV_STATE_FILE {
 #define PR_CAP_BE      0x0002
 #define PR_CAP_LISTEN  (PR_CAP_FE|PR_CAP_BE)
 #define PR_CAP_DEF     0x0004           /* defaults section */
+#define PR_CAP_LUA     0x0008           /* internal proxy used by lua engine */
 
 /* bits for proxy->options */
 #define PR_O_REDISP     0x00000001      /* allow reconnection to dispatch in case of errors */
index 1541b63a61bf2e7d01a35be7aa249d310b2deb80..335bbafe0748fa45519a61dc27243f619dea40b7 100644 (file)
@@ -1342,10 +1342,14 @@ void proxy_preset_defaults(struct proxy *defproxy)
 {
        defproxy->mode = PR_MODE_TCP;
        defproxy->disabled = 0;
-       defproxy->maxconn = cfg_maxpconn;
-       defproxy->conn_retries = CONN_RETRIES;
+       if (!(defproxy->cap & PR_CAP_LUA)) {
+               defproxy->maxconn = cfg_maxpconn;
+               defproxy->conn_retries = CONN_RETRIES;
+       }
        defproxy->redispatch_after = 0;
        defproxy->options = PR_O_REUSE_SAFE;
+       if (defproxy->cap & PR_CAP_LUA)
+               defproxy->options2 |= PR_O2_INDEPSTR;
        defproxy->max_out_conns = MAX_SRV_LIST;
 
        defproxy->defsrv.check.inter = DEF_CHKINTR;
@@ -1376,6 +1380,9 @@ void proxy_preset_defaults(struct proxy *defproxy)
 #if defined(USE_QUIC)
        quic_transport_params_init(&defproxy->defsrv.quic_params, 0);
 #endif
+
+       if (defproxy->cap & PR_CAP_LUA)
+               defproxy->timeout.connect = 5000;
 }
 
 /* Frees all dynamic settings allocated on a default proxy that's about to be
@@ -1470,7 +1477,9 @@ struct proxy *alloc_new_proxy(const char *name, unsigned int cap, char **errmsg)
        curproxy->last_change = now.tv_sec;
        curproxy->id = strdup(name);
        curproxy->cap = cap;
-       proxy_store_name(curproxy);
+
+       if (!(cap & PR_CAP_LUA))
+               proxy_store_name(curproxy);
 
  done:
        return curproxy;