diff --git a/configure b/configure index c98465870e1cfbb38e1e96bb98b31dea91ee0823..e5f7ba588c91fda7bfcf1b544a3c98d18e29d303 100755 --- a/configure +++ b/configure @@ -1323,7 +1323,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -1510,7 +1509,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1763,15 +1761,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1909,7 +1898,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -2062,7 +2051,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -9280,6 +9268,38 @@ $as_echo_n "checking for bundled jansson... " >&6; } JANSSON_LIB="-L${JANSSON_DIR}/dest/lib -ljansson" PBX_JANSSON=1 + # We haven't run install yet + + # Define the ast_json_int_t (large integer type) to match jansson's + saved_cppflags="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${JANSSON_INCLUDE}" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$JANSSON_DIR/source/src/jansson.h> +int +main () +{ +#if !JSON_INTEGER_IS_LONG_LONG + #error "not long long" + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +$as_echo "#define AST_JSON_INT_T long long" >>confdefs.h + +else + +$as_echo "#define AST_JSON_INT_T long" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="${saved_cppflags}" + + @@ -14446,6 +14466,36 @@ $as_echo "$as_me: *** Please install the 'libjansson' development package or" >& $as_echo "$as_me: *** use './configure --with-jansson-bundled'" >&6;} exit 1 fi + + # Define the ast_json_int_t (large integer type) to match jansson's + saved_cppflags="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${JANSSON_INCLUDE}" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <jansson.h> +int +main () +{ +#if !JSON_INTEGER_IS_LONG_LONG + #error "not long long" + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +$as_echo "#define AST_JSON_INT_T long long" >>confdefs.h + +else + +$as_echo "#define AST_JSON_INT_T long" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="${saved_cppflags}" + else PBX_JANSSON=1 fi @@ -15063,7 +15113,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15109,7 +15159,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15133,7 +15183,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15178,7 +15228,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15202,7 +15252,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -16502,8 +16552,6 @@ main () if (*(data + i) != *(data3 + i)) return 14; close (fd); - free (data); - free (data3); return 0; } _ACEOF diff --git a/configure.ac b/configure.ac index 94be88b82438cfbc5abb30501fa5185631c9cadc..d1ea560a1f74af932ef41afce21450d521c1c096 100644 --- a/configure.ac +++ b/configure.ac @@ -698,6 +698,7 @@ if test "$JANSSON_BUNDLED" = "no" ; then AC_MSG_NOTICE(*** use './configure --with-jansson-bundled') exit 1 fi + JANSSON_DEFINE_JSON_INT() else PBX_JANSSON=1 fi diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index 874c205a43ffd27d5093d887a3383d7fd0001169..f0d7903781088c7529d87eda43872b96fb0c5515 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -7,6 +7,9 @@ +/* Define to 'long' or 'long long' */ +#undef AST_JSON_INT_T + /* Define to 1 if internal poll should be used. */ #undef AST_POLL_COMPAT diff --git a/include/asterisk/json.h b/include/asterisk/json.h index cfd9a29976d7b0a7a617d1fd399fdf90eb42d463..011359b92e8018151ffe3dfda9fc5e4046516e3e 100644 --- a/include/asterisk/json.h +++ b/include/asterisk/json.h @@ -110,6 +110,11 @@ /*!@{*/ +/*! + * \brief Primarily used to cast when packing to an "I" type. + */ +typedef AST_JSON_INT_T ast_json_int_t; + /*! * \brief Initialize the JSON library. */ diff --git a/main/rtp_engine.c b/main/rtp_engine.c index f5f32ebb71788dcf37dd4d64a8a98d6a25cdcd4e..db016fc1adc529614021f9c51ee65c594d460426 100644 --- a/main/rtp_engine.c +++ b/main/rtp_engine.c @@ -2521,8 +2521,8 @@ static struct ast_json *rtcp_report_to_json(struct stasis_message *msg, char str_lsr[32]; snprintf(str_lsr, sizeof(str_lsr), "%u", payload->report->report_block[i]->lsr); - json_report_block = ast_json_pack("{s: i, s: i, s: i, s: i, s: i, s: s, s: i}", - "source_ssrc", payload->report->report_block[i]->source_ssrc, + json_report_block = ast_json_pack("{s: I, s: i, s: i, s: i, s: i, s: s, s: i}", + "source_ssrc", (ast_json_int_t)payload->report->report_block[i]->source_ssrc, "fraction_lost", payload->report->report_block[i]->lost_count.fraction, "packets_lost", payload->report->report_block[i]->lost_count.packets, "highest_seq_no", payload->report->report_block[i]->highest_seq_no, @@ -2554,8 +2554,8 @@ static struct ast_json *rtcp_report_to_json(struct stasis_message *msg, } } - json_rtcp_report = ast_json_pack("{s: i, s: i, s: i, s: o, s: o}", - "ssrc", payload->report->ssrc, + json_rtcp_report = ast_json_pack("{s: I, s: i, s: i, s: o, s: o}", + "ssrc", (ast_json_int_t)payload->report->ssrc, "type", payload->report->type, "report_count", payload->report->reception_report_count, "sender_information", json_rtcp_sender_info ?: ast_json_null(), diff --git a/menuselect/configure b/menuselect/configure index fd7d24b87be6a9675003ce103857f453872c588b..8efb6372e82920e98f39891d12b5d635668c224a 100755 --- a/menuselect/configure +++ b/menuselect/configure @@ -692,7 +692,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -773,7 +772,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' @@ -1026,15 +1024,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1172,7 +1161,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1325,7 +1314,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] diff --git a/third-party/jansson/configure.m4 b/third-party/jansson/configure.m4 index d59d8612578dac9c105d254712bb36200e7b8974..ec34076253330fffeb46283387c80aa781414c54 100644 --- a/third-party/jansson/configure.m4 +++ b/third-party/jansson/configure.m4 @@ -74,6 +74,9 @@ AC_DEFUN([_JANSSON_CONFIGURE], JANSSON_LIB="-L${JANSSON_DIR}/dest/lib -ljansson" PBX_JANSSON=1 + # We haven't run install yet + JANSSON_DEFINE_JSON_INT([$JANSSON_DIR]/source/src/) + AC_SUBST([JANSSON_BUNDLED]) AC_SUBST([PBX_JANSSON]) AC_SUBST([JANSSON_LIB]) @@ -87,3 +90,19 @@ AC_DEFUN([JANSSON_CONFIGURE], _JANSSON_CONFIGURE() fi ]) + +AC_DEFUN([JANSSON_DEFINE_JSON_INT], +[ + # Define the ast_json_int_t (large integer type) to match jansson's + saved_cppflags="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${JANSSON_INCLUDE}" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([#include <$1jansson.h>], + [#if !JSON_INTEGER_IS_LONG_LONG + #error "not long long" + #endif + ])], + [AC_DEFINE([AST_JSON_INT_T], [long long], [Define to 'long' or 'long long'])], + [AC_DEFINE([AST_JSON_INT_T], [long], [Define to 'long' or 'long long'])]) + CPPFLAGS="${saved_cppflags}" +])