[sr-dev] [kamailio/kamailio] time: add support for time64 libc (PR #2894)

micmac1 notifications at github.com
Fri Oct 22 20:12:11 CEST 2021

libcs are implementing changes to fix the year 2038 issue on 32 bit
platforms (see [1]). musl libc already went ahead and implemented it,
starting with musl-1.2.0 (see [2]).

This commit adds a new definition to src/core/dprint.h:


If __USE_TIME_BITS64 is defined (by a time64 libc, see [1]), it is set
to the proper conversion for type int64_t, PRId64.  If __USE_TIME_BITS64
is not defined, the status quo remains unchanged ("%ld" is used).

Note: In some places kamailio uses "%li" instead of "%ld". But in the
context of printf etc. there is no difference, so this commit replaces
"%li" with "%ld".

The new definition is used in the different parts of kamailio, where

These changes get rid of the new warnings that appeared with musl-1.2.0.
Below an example warning:

In file included from auth_identity.c:50:
auth_identity.c: In function 'check_date':
../../core/dprint.h:316:73: warning: format '%ld' expects argument of type 'long int', but argument 11 has type 'time_t' {aka 'long long int'} [-Wformat=]
  316 |                                                         fprintf(stderr, "%2d(%d) %s: %.*s%s%s%s" fmt, \
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~
../../core/dprint.h:340:25: note: in expansion of macro 'LOG_FX'
  340 |                         LOG_FX(facility, level, lname, prefix, _FUNC_NAME_, fmt, ## args)
      |                         ^~~~~~
../../core/dprint.h:346:25: note: in expansion of macro 'LOG_FL'
  346 |                         LOG_FL(facility, level, NULL, prefix, fmt, ## args)
      |                         ^~~~~~
../../core/dprint.h:349:25: note: in expansion of macro 'LOG_FP'
  349 |                         LOG_FP(DEFAULT_FACILITY, (level), LOC_INFO, fmt, ## args)
      |                         ^~~~~~
auth_identity.c:594:17: note: in expansion of macro 'LOG'
  594 |                 LOG(L_INFO, "AUTH_IDENTITY VERIFIER: Outdated date header value (%ld sec)\n", tnow - tmsg + glb_iauthval);
      |                 ^~~

[1] https://sourceware.org/glibc/wiki/Y2038ProofnessDesign
[2] https://musl.libc.org/time64.html

Signed-off-by: Sebastian Kemper <sebastian_ml at gmx.net>

<!-- Kamailio Pull Request Template -->

  - for detailed contributing guidelines, read:
  - pull requests must be done to master branch, unless they are backports
    of fixes from master branch to a stable branch
  - backports to stable branches must be done with 'git cherry-pick -x ...'
  - code is contributed under BSD for core and main components (tm, sl, auth, tls)
  - code is contributed GPLv2 or a compatible license for the other components
  - GPL code is contributed with OpenSSL licensing exception

#### Pre-Submission Checklist
<!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply -->
<!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above-->
<!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list -->
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)

#### Type Of Change
- [x] Small bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)

#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)

#### Description
<!-- Describe your changes in detail -->

Hi all,

This adds time64 libc support. Should be non-breaking, status quo remains. I hope you don't mind a made up a new patch category, "time".

I did not run-test this (pretty busy right now). But the warnings go away.

If absolutely run-testing is needed for this, let me know.

Kind regards,
You can view, comment on, or merge this pull request online at:


-- Commit Summary --

  * <a href="https://github.com/kamailio/kamailio/pull/2894/commits/27175614787f6b05795f1e019e7d17df32d19be6">time: add support for time64 libc</a>

-- File Changes --

    M src/core/dprint.h (8)
    M src/modules/auth_identity/auth_identity.c (2)
    M src/modules/cdp/routing.c (4)
    M src/modules/db_redis/redis_dbase.c (2)
    M src/modules/ims_charging/ims_ro.c (2)
    M src/modules/ims_dialog/dlg_handlers.c (2)
    M src/modules/ims_icscf/scscf_list.c (4)
    M src/modules/ims_registrar_pcscf/notify.c (2)
    M src/modules/ims_registrar_pcscf/save.c (2)
    M src/modules/ims_registrar_scscf/registrar_notify.c (3)
    M src/modules/ims_registrar_scscf/save.c (2)
    M src/modules/ims_usrloc_scscf/impurecord.c (4)
    M src/modules/nat_traversal/nat_traversal.c (2)
    M src/modules/xhttp_pi/xhttp_pi_fnc.c (4)

-- Patch Links --


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-dev/attachments/20211022/b6a8a3b7/attachment-0001.htm>

More information about the sr-dev mailing list