mosquitto icon indicating copy to clipboard operation
mosquitto copied to clipboard

fix CLOCK_BOOTTIME use on kernels not having it

Open diego-santacruz opened this issue 1 year ago • 1 comments

When the libc headers used to build mosquitto define CLOCK_BOOTTIME but the kernel where mosquitto runs does not implement CLOCK_BOOTTIME, all timestamps are wrong (uninitialized data), because there is no check for the success of the clock_gettime() calls.

This adds probing for the availability of CLOCK_BOOTTIME from mosquitto_lib_init(), falling back to CLOCK_MONOTONIC, and then modifies mosquitto_time() to use the selected clock. Probing at init time avoids having to do two clock_gettime() calls for every timestamp if CLOCK_BOOTTIME is not available.

It also fixes a similar problem in mosquitto_lib_init().

This fixes #3089

Thank you for contributing your time to the Mosquitto project!

Before you go any further, please note that we cannot accept contributions if you haven't signed the Eclipse Contributor Agreement. If you aren't able to do that, or just don't want to, please describe your bug fix/feature change in an issue. For simple bug fixes it is can be just as easy for us to be told about the problem and then go fix it directly.

Then please check the following list of things we ask for in your pull request:

  • [x] Have you signed the Eclipse Contributor Agreement, using the same email address as you used in your commits?
  • [x] Do each of your commits have a "Signed-off-by" line, with the correct email address? Use "git commit -s" to generate this line for you.
  • [ ] If you are contributing a new feature, is your work based off the develop branch?
  • [x] If you are contributing a bugfix, is your work based off the fixes branch?
  • [x] Have you added an explanation of what your changes do and why you'd like us to include them?
  • [x] Have you successfully run make test with your changes locally?

diego-santacruz avatar Jul 31 '24 13:07 diego-santacruz

I have amended the PR as I had mistakenly used the clock_t type instead of clockid_t (the compiler had not given any warning about this mismatch).

diego-santacruz avatar Aug 01 '24 15:08 diego-santacruz

Looks good to me, thank you.

ralight avatar Sep 06 '24 22:09 ralight