int listen:1;
int keep:1;
int ssl:1;
- };
+ } extra;
};
struct ssl_context
{
if (fd != -1)
state = BUFFEREVENT_SSL_ACCEPTING;
- if (ctx->opts->ssl) {
+ if (ctx->opts->extra.ssl) {
ssl = SSL_new(ctx->ssl.ctx);
if (!ssl)
goto err;
case 's': o.src.address = strdup("127.1"); break;
case 'R': o.max_read = atoi(optarg); break;
- case 'l': o.listen = 1; break;
- case 'k': o.keep = 1; break;
- case 'S': o.ssl = 1; break;
+ case 'l': o.extra.listen = 1; break;
+ case 'k': o.extra.keep = 1; break;
+ case 'S': o.extra.ssl = 1; break;
/**
* TODO: implement other bits:
{
struct context *ctx = arg;
EVUTIL_ASSERT(bev == ctx->out);
- if (!event_cb_(bev, what, ctx->opts->ssl, !ctx->opts->keep))
+ if (!event_cb_(bev, what, ctx->opts->extra.ssl, !ctx->opts->extra.keep))
return;
ctx->out = NULL;
}
struct bufferevent *bev = NULL;
struct event_base *base = evconnlistener_get_base(listener);
- if (!ctx->opts->keep)
+ if (!ctx->opts->extra.keep)
evconnlistener_disable(listener);
info("Accepting %s (fd=%d)\n",
static void client_event_cb(struct bufferevent *bev, short what, void *arg)
{
struct context *ctx = arg;
- if (!event_cb_(bev, what, ctx->opts->ssl, 1))
+ if (!event_cb_(bev, what, ctx->opts->extra.ssl, 1))
return;
ctx->out = NULL;
}
static void in_event_cb(struct bufferevent *bev, short what, void *arg)
{
struct context *ctx = arg;
- if (!event_cb_(bev, what, ctx->opts->ssl, 1))
+ if (!event_cb_(bev, what, ctx->opts->extra.ssl, 1))
return;
ctx->in = NULL;
goto err;
#endif
- if (o.ssl && ssl_ctx_init(&ctx.ssl))
+ if (o.extra.ssl && ssl_ctx_init(&ctx.ssl))
goto err;
- if (o.listen) {
+ if (o.extra.listen) {
int flags = 0;
flags |= LEV_OPT_CLOSE_ON_FREE;
flags |= LEV_OPT_CLOSE_ON_EXEC;