add probe to observe ech selection
diff --git a/lib/picotls.c b/lib/picotls.c
index f7cf14b..6de3535 100644
--- a/lib/picotls.c
+++ b/lib/picotls.c
@@ -2713,6 +2713,8 @@
     key_schedule_select_outer(tls->key_schedule);
 
 Exit:
+    PTLS_PROBE(ECH_SELECTION, tls, tls->ech.accepted);
+    PTLS_LOG_CONN(ech_selection, tls, { PTLS_LOG_ELEMENT_BOOL(is_ech, tls->ech.accepted); });
     ptls_clear_memory(confirm_hash_expected, sizeof(confirm_hash_expected));
     return ret;
 }
@@ -4264,6 +4266,10 @@
                      ch->ech.cipher_suite, ch->ech.enc, ptls_iovec_init(ech_info_prefix, sizeof(ech_info_prefix)))) != NULL)
                 tls->ech.config_id = ch->ech.config_id;
         }
+        if (!is_second_flight) {
+            PTLS_PROBE(ECH_SELECTION, tls, tls->ech.aead != NULL);
+            PTLS_LOG_CONN(ech_selection, tls, { PTLS_LOG_ELEMENT_BOOL(is_ech, tls->ech.aead != NULL); });
+        }
         if (tls->ech.aead != NULL) {
             /* now that AEAD context is available, create AAD and decrypt inner CH */
             if ((ech.encoded_ch_inner = malloc(ch->ech.payload.len - tls->ech.aead->algo->tag_size)) == NULL ||
diff --git a/picotls-probes.d b/picotls-probes.d
index 614a571..fbafa83 100644
--- a/picotls-probes.d
+++ b/picotls-probes.d
@@ -26,4 +26,5 @@
     probe client_random(struct st_ptls_t *tls, const void *bytes);
     probe receive_message(struct st_ptls_t *tls, uint8_t message, const void *bytes, size_t len, int result);
     probe new_secret(struct st_ptls_t *tls, const char *label, const char *secret_hex);
+    probe ech_selection(struct st_ptls_t *tls, int is_ech);
 };