MINOR: h3: refactor h3_control_send()

The only change is that the H3_CF_SETTINGS_SENT flag if-condition is
replaced by a BUG_ON statement. This may help to catch multiple calls on
h3_control_send() instead of silently ignore them.
diff --git a/src/h3.c b/src/h3.c
index 4293258..8d2732e 100644
--- a/src/h3.c
+++ b/src/h3.c
@@ -464,48 +464,48 @@
 	struct h3c *h3c = ctx;
 	unsigned char data[(2 + 3) * 2 * QUIC_VARINT_MAX_SIZE]; /* enough for 3 settings */
 	struct buffer pos, *res;
+	size_t frm_len;
+	struct qcs *qcs = h3_uqs->qcs;
+
+	BUG_ON_HOT(h3c->flags & H3_CF_SETTINGS_SENT);
 
 	ret = 0;
 	pos = b_make((char *)data, sizeof(data), 0, 0);
-	if (!(h3c->flags & H3_CF_SETTINGS_SENT)) {
-		struct qcs *qcs = h3_uqs->qcs;
-		size_t frm_len;
 
-		frm_len = quic_int_getsize(H3_SETTINGS_QPACK_MAX_TABLE_CAPACITY) +
-			quic_int_getsize(h3_settings_qpack_max_table_capacity) +
-			quic_int_getsize(H3_SETTINGS_QPACK_BLOCKED_STREAMS) +
-			quic_int_getsize(h3_settings_qpack_blocked_streams);
-		if (h3_settings_max_field_section_size) {
-			frm_len += quic_int_getsize(H3_SETTINGS_MAX_FIELD_SECTION_SIZE) +
-			quic_int_getsize(h3_settings_max_field_section_size);
-		}
+	frm_len = quic_int_getsize(H3_SETTINGS_QPACK_MAX_TABLE_CAPACITY) +
+		quic_int_getsize(h3_settings_qpack_max_table_capacity) +
+		quic_int_getsize(H3_SETTINGS_QPACK_BLOCKED_STREAMS) +
+		quic_int_getsize(h3_settings_qpack_blocked_streams);
+	if (h3_settings_max_field_section_size) {
+		frm_len += quic_int_getsize(H3_SETTINGS_MAX_FIELD_SECTION_SIZE) +
+		quic_int_getsize(h3_settings_max_field_section_size);
+	}
 
-		b_quic_enc_int(&pos, H3_UNI_S_T_CTRL);
-		/* Build a SETTINGS frame */
-		b_quic_enc_int(&pos, H3_FT_SETTINGS);
-		b_quic_enc_int(&pos, frm_len);
-		b_quic_enc_int(&pos, H3_SETTINGS_QPACK_MAX_TABLE_CAPACITY);
-		b_quic_enc_int(&pos, h3_settings_qpack_max_table_capacity);
-		b_quic_enc_int(&pos, H3_SETTINGS_QPACK_BLOCKED_STREAMS);
-		b_quic_enc_int(&pos, h3_settings_qpack_blocked_streams);
-		if (h3_settings_max_field_section_size) {
-			b_quic_enc_int(&pos, H3_SETTINGS_MAX_FIELD_SECTION_SIZE);
-			b_quic_enc_int(&pos, h3_settings_max_field_section_size);
-		}
+	b_quic_enc_int(&pos, H3_UNI_S_T_CTRL);
+	/* Build a SETTINGS frame */
+	b_quic_enc_int(&pos, H3_FT_SETTINGS);
+	b_quic_enc_int(&pos, frm_len);
+	b_quic_enc_int(&pos, H3_SETTINGS_QPACK_MAX_TABLE_CAPACITY);
+	b_quic_enc_int(&pos, h3_settings_qpack_max_table_capacity);
+	b_quic_enc_int(&pos, H3_SETTINGS_QPACK_BLOCKED_STREAMS);
+	b_quic_enc_int(&pos, h3_settings_qpack_blocked_streams);
+	if (h3_settings_max_field_section_size) {
+		b_quic_enc_int(&pos, H3_SETTINGS_MAX_FIELD_SECTION_SIZE);
+		b_quic_enc_int(&pos, h3_settings_max_field_section_size);
+	}
 
-		res = mux_get_buf(qcs);
-		if (b_room(res) < b_data(&pos)) {
-			// TODO the mux should be put in blocked state, with
-			// the stream in state waiting for settings to be sent
-			ABORT_NOW();
-		}
+	res = mux_get_buf(qcs);
+	if (b_room(res) < b_data(&pos)) {
+		// TODO the mux should be put in blocked state, with
+		// the stream in state waiting for settings to be sent
+		ABORT_NOW();
+	}
 
-		ret = b_force_xfer(res, &pos, b_data(&pos));
-		if (ret > 0) {
-			h3c->flags |= H3_CF_SETTINGS_SENT;
-			if (!(qcs->qcc->wait_event.events & SUB_RETRY_SEND))
-				tasklet_wakeup(qcs->qcc->wait_event.tasklet);
-		}
+	ret = b_force_xfer(res, &pos, b_data(&pos));
+	if (ret > 0) {
+		h3c->flags |= H3_CF_SETTINGS_SENT;
+		if (!(qcs->qcc->wait_event.events & SUB_RETRY_SEND))
+			tasklet_wakeup(qcs->qcc->wait_event.tasklet);
 	}
 
 	return ret;