static int qctx_should_autotick(QCTX *ctx)
{
int event_handling_mode;
+ QUIC_OBJ *obj = ctx->obj;
- if (ctx->is_stream) {
- event_handling_mode = ctx->xso->event_handling_mode;
- if (event_handling_mode != SSL_VALUE_EVENT_HANDLING_MODE_INHERIT)
- return event_handling_mode != SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT;
- }
+ for (; (event_handling_mode = obj->event_handling_mode)
+ == SSL_VALUE_EVENT_HANDLING_MODE_INHERIT
+ && obj->parent_obj != NULL;
+ obj = obj->parent_obj);
- event_handling_mode = ctx->qc->event_handling_mode;
return event_handling_mode != SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT;
}
if (!qctx_should_autotick(ctx))
return;
- ossl_quic_reactor_tick(ossl_quic_channel_get_reactor(ctx->qc->ch), 0);
+ ossl_quic_reactor_tick(ossl_quic_obj_get0_reactor(ctx->obj), 0);
}
QUIC_TAKES_LOCK
}
value_out = *p_value_in;
- if (ctx->is_stream)
- ctx->xso->event_handling_mode = (int)value_out;
- else
- ctx->qc->event_handling_mode = (int)value_out;
+ ctx->obj->event_handling_mode = (int)value_out;
} else {
- value_out = ctx->is_stream
- ? ctx->xso->event_handling_mode
- : ctx->qc->event_handling_mode;
+ value_out = ctx->obj->event_handling_mode;
}
ret = 1;
/* Is an AON write in progress? */
unsigned int aon_write_in_progress : 1;
- /* Event handling mode. One of SSL_QUIC_VALUE_EVENT_HANDLING. */
- unsigned int event_handling_mode : 2;
-
/*
* The base buffer pointer the caller passed us for the initial AON write
* call. We use this for validation purposes unless
unsigned int addressed_mode_w : 1;
unsigned int addressed_mode_r : 1;
- /* Event handling mode. One of SSL_QUIC_VALUE_EVENT_HANDLING. */
- unsigned int event_handling_mode : 2;
-
/* Default stream type. Defaults to SSL_DEFAULT_STREAM_MODE_AUTO_BIDI. */
uint32_t default_stream_mode;
* by default inherits from the parent SSL object.
*/
unsigned int req_blocking_mode : 2; /* QUIC_BLOCKING_MODE */
+
+ /* Event handling mode. One of SSL_QUIC_VALUE_EVENT_HANDLING. */
+ unsigned int event_handling_mode : 2;
};
enum {