From: Alan T. DeKok Date: Wed, 6 Mar 2024 16:28:53 +0000 (-0500) Subject: let the application get the retry timers X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a75d2fddb032c01e70051bc627fde7459e191a25;p=thirdparty%2Ffreeradius-server.git let the application get the retry timers --- diff --git a/src/lib/bio/retry.c b/src/lib/bio/retry.c index ad116db35e6..18b3e7d4ed6 100644 --- a/src/lib/bio/retry.c +++ b/src/lib/bio/retry.c @@ -627,6 +627,20 @@ int fr_bio_retry_entry_start(UNUSED fr_bio_t *bio, fr_bio_retry_entry_t *item, f return 0; } +/** Allow the callbacks / application to know when things are being retried. + * + * This is not initialized util _after_ fr_bio_retry_entry_start() has been called. + */ +const fr_retry_t *fr_bio_retry_entry_info(UNUSED fr_bio_t *bio, fr_bio_retry_entry_t *item) +{ + fr_assert(item->buffer != NULL); + + if (!item->retry.config) return NULL; + + return &item->retry; +} + + /** Cancel all outstanding packets. * */ diff --git a/src/lib/bio/retry.h b/src/lib/bio/retry.h index 5c23d3b1abd..7f09768c4b8 100644 --- a/src/lib/bio/retry.h +++ b/src/lib/bio/retry.h @@ -112,4 +112,6 @@ int fr_bio_retry_entry_cancel(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx) C int fr_bio_retry_entry_start(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx, fr_retry_config_t const *cfg) CC_HINT(nonnull); +const fr_retry_t *fr_bio_retry_entry_info(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx) CC_HINT(nonnull); + ssize_t fr_bio_retry_rewrite(fr_bio_t *bio, fr_bio_retry_entry_t *retry_ctx, const void *buffer, size_t size) CC_HINT(nonnull(1,2));