Skip to content

Commit d5e0628

Browse files
committed
nginx/apache: add macro's for handling 4 arguments
Signed-off-by: Hans Zandbelt <[email protected]>
1 parent aa8546a commit d5e0628

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

include/oauth2/apache.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,20 @@ int oauth2_apache_post_config(apr_pool_t *pool, apr_pool_t *p1, apr_pool_t *p2,
184184
return func(srv_cfg->log, member, v1, v2, v3); \
185185
}
186186

187+
#define OAUTH2_APACHE_CMD_ARGSV4(module, type, primitive, func, member) \
188+
static const char *apache_##module##_set_##primitive( \
189+
cmd_parms *cmd, void *m, int argc, char *const argv[]) \
190+
{ \
191+
oauth2_apache_cfg_srv_t *srv_cfg = ap_get_module_config( \
192+
cmd->server->module_config, &module##_module); \
193+
type *cfg = (type *)m; \
194+
(void)cfg; \
195+
return func(srv_cfg->log, member, argc > 0 ? argv[0] : NULL, \
196+
argc > 1 ? argv[1] : NULL, \
197+
argc > 2 ? argv[2] : NULL, \
198+
argc > 3 ? argv[3] : NULL); \
199+
}
200+
187201
#define OAUTH2_APACHE_CMD_ARGS(module, nargs, cmd, member, desc) \
188202
AP_INIT_TAKE##nargs(cmd, apache_##module##_set_##member, NULL, \
189203
RSRC_CONF | ACCESS_CONF | OR_AUTHCFG, desc)

include/oauth2/nginx.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,31 @@
113113
oauth2_mem_free(v1); \
114114
OAUTH2_NGINX_CFG_FUNC_END(cf, rv)
115115

116+
#define OAUTH2_NGINX_CFG_FUNC_ARGS4(module, type, primitive, func, member) \
117+
OAUTH2_NGINX_CFG_FUNC_START(module, type, primitive) \
118+
char *v1 = cf->args->nelts > 1 \
119+
? oauth2_strndup((const char *)value[1].data, \
120+
(size_t)value[1].len) \
121+
: NULL; \
122+
char *v2 = cf->args->nelts > 2 \
123+
? oauth2_strndup((const char *)value[2].data, \
124+
(size_t)value[2].len) \
125+
: NULL; \
126+
char *v3 = cf->args->nelts > 3 \
127+
? oauth2_strndup((const char *)value[3].data, \
128+
(size_t)value[3].len) \
129+
: NULL; \
130+
char *v4 = cf->args->nelts > 4 \
131+
? oauth2_strndup((const char *)value[3].data, \
132+
(size_t)value[4].len) \
133+
: NULL; \
134+
rv = func(cfg->log, member, v1, v2, v3, v4); \
135+
oauth2_mem_free(v4); \
136+
oauth2_mem_free(v3); \
137+
oauth2_mem_free(v2); \
138+
oauth2_mem_free(v1); \
139+
OAUTH2_NGINX_CFG_FUNC_END(cf, rv)
140+
116141
// commands
117142

118143
// clang-format off

src/server/nginx.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,12 @@ static void _oauth2_nginx_port_copy(oauth2_nginx_request_context_t *ctx)
110110
sin6 =
111111
(struct sockaddr_in6 *)ctx->r->connection->local_sockaddr;
112112
port = ntohs(sin6->sin6_port);
113+
break;
113114
#endif
114115
#if (NGX_HAVE_UNIX_DOMAIN)
115116
case AF_UNIX:
116117
port = 0;
118+
break;
117119
#endif
118120
default: /* AF_INET */
119121
sin = (struct sockaddr_in *)ctx->r->connection->local_sockaddr;

0 commit comments

Comments
 (0)