Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package baresip for openSUSE:Factory checked in at 2026-08-04 21:33:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/baresip (Old) and /work/SRC/openSUSE:Factory/.baresip.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "baresip" Tue Aug 4 21:33:46 2026 rev:19 rq:1369251 version:4.10.0 Changes: -------- --- /work/SRC/openSUSE:Factory/baresip/baresip.changes 2026-06-17 16:29:18.634607931 +0200 +++ /work/SRC/openSUSE:Factory/.baresip.new.16738/baresip.changes 2026-08-04 21:34:13.695750717 +0200 @@ -1,0 +2,13 @@ +Wed Jul 22 14:48:20 UTC 2026 - Martin Hauke <[email protected]> + +- Update to version 4.10.0 + * directfb: remove deprecated module. + * menu: fix limit early media. + * modules: use secure snprintf() instead of insecure sprintf(). + * modules: print not found reason for deprecated modules. + * test: fix a ruff warning in ccheck. + * aaudio: support device selection via config. + * test: call - increase timeout for mediaenc. + * rtprecv: avoid processing of telev events. + +------------------------------------------------------------------- Old: ---- baresip-4.9.0.tar.gz New: ---- baresip-4.10.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ baresip.spec ++++++ --- /var/tmp/diff_new_pack.q29Q0V/_old 2026-08-04 21:34:14.587781871 +0200 +++ /var/tmp/diff_new_pack.q29Q0V/_new 2026-08-04 21:34:14.591782011 +0200 @@ -20,7 +20,7 @@ %global sover 28 %global libname lib%{name}%{sover} Name: baresip -Version: 4.9.0 +Version: 4.10.0 Release: 0 Summary: Modular SIP useragent License: BSD-3-Clause ++++++ baresip-4.9.0.tar.gz -> baresip-4.10.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/CHANGELOG.md new/baresip-4.10.0/CHANGELOG.md --- old/baresip-4.9.0/CHANGELOG.md 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/CHANGELOG.md 2026-07-22 11:48:14.000000000 +0200 @@ -5,6 +5,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v4.10.0 - 2026-07-22 + +### What's Changed +* directfb: remove deprecated module by @alfredh in https://github.com/baresip/baresip/pull/3731 +* menu: fix limit early media by @cspiel1 in https://github.com/baresip/baresip/pull/3754 +* modules: use secure snprintf() instead of insecure sprintf() by @alfredh in https://github.com/baresip/baresip/pull/3746 +* modules: print not found reason for deprecated modules by @sreimers in https://github.com/baresip/baresip/pull/3756 +* test: fix a ruff warning in ccheck by @alfredh in https://github.com/baresip/baresip/pull/3759 +* aaudio: support device selection via config by @chucongqing in https://github.com/baresip/baresip/pull/3767 +* test: call - increase timeout for mediaenc by @cspiel1 in https://github.com/baresip/baresip/pull/3774 +* rtprecv: avoid processing of telev events by @cspiel1 in https://github.com/baresip/baresip/pull/3773 + +**Full Changelog**: https://github.com/baresip/baresip/compare/v4.9.0...v4.10.0 + + ## v4.9.0 - 2026-06-17 ### What's Changed @@ -21,9 +36,9 @@ * uag: check registration state of fallback UA by @cspiel1 in https://github.com/baresip/baresip/pull/3752 * call: make call_supported() input argument const by @alfredh in https://github.com/baresip/baresip/pull/3748 - **Full Changelog**: https://github.com/baresip/baresip/compare/v4.8.0...v4.9.0 + ## v4.8.0 - 2026-05-13 ### What's Changed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/CMakeLists.txt new/baresip-4.10.0/CMakeLists.txt --- old/baresip-4.9.0/CMakeLists.txt 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/CMakeLists.txt 2026-07-22 11:48:14.000000000 +0200 @@ -13,7 +13,7 @@ cmake_minimum_required(VERSION 3.18...4.0) -project(baresip VERSION 4.9.0) +project(baresip VERSION 4.10.0) set(PROJECT_SOVERSION 28) # bump if ABI breaks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/README.md new/baresip-4.10.0/README.md --- old/baresip-4.9.0/README.md 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/README.md 2026-07-22 11:48:14.000000000 +0200 @@ -109,7 +109,6 @@ - MacOSX AVCapture video-source - Linux V4L/V4L2 video-source - X11 grabber video-source - - DirectFB video-output - SDL2 video-output - X11 video-output @@ -264,7 +263,6 @@ ctrl_dbus Control interface using DBUS ctrl_tcp TCP control interface using JSON payload debug_cmd Debug commands -directfb DirectFB video display module dshow Windows DirectShow video source dtls_srtp DTLS-SRTP end-to-end encryption echo Echo server module diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/cmake/FindDIRECTFB.cmake new/baresip-4.10.0/cmake/FindDIRECTFB.cmake --- old/baresip-4.9.0/cmake/FindDIRECTFB.cmake 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/cmake/FindDIRECTFB.cmake 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -find_package(PkgConfig) -pkg_check_modules(PKG_DIRECTFB QUIET directfb) - -set(DIRECTFB_DEFINITIONS ${PKG_DIRECTFB_CFLAGS}) - -find_path(DIRECTFB_INCLUDE_DIR - NAMES directfb.h - HINTS ${PKG_DIRECTFB_INCLUDE_DIRS} -) - -find_library(DIRECTFB_LIBRARIES - NAMES directfb - HINTS ${PKG_DIRECTFB_LIBRARY_DIRS} -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(DIRECTFB DEFAULT_MSG DIRECTFB_LIBRARIES - DIRECTFB_INCLUDE_DIR) - -mark_as_advanced(DIRECTFB_INCLUDE_DIR DIRECTFB_LIBRARIES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/cmake/modules.cmake new/baresip-4.10.0/cmake/modules.cmake --- old/baresip-4.9.0/cmake/modules.cmake 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/cmake/modules.cmake 2026-07-22 11:48:14.000000000 +0200 @@ -24,7 +24,6 @@ ctrl_dbus ctrl_tcp debug_cmd - directfb dshow dtls_srtp echo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/docs/examples/config new/baresip-4.10.0/docs/examples/config --- old/baresip-4.9.0/docs/examples/config 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/docs/examples/config 2026-07-22 11:48:14.000000000 +0200 @@ -149,7 +149,6 @@ #module vidbridge.so # Video display modules -#module directfb.so #module x11.so #module sdl.so #module fakevideo.so diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/include/baresip.h new/baresip-4.10.0/include/baresip.h --- old/baresip-4.9.0/include/baresip.h 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/include/baresip.h 2026-07-22 11:48:14.000000000 +0200 @@ -13,7 +13,7 @@ /** Defines the Baresip version string */ -#define BARESIP_VERSION "4.9.0" +#define BARESIP_VERSION "4.10.0" #ifndef NET_MAX_NS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/mk/Doxyfile new/baresip-4.10.0/mk/Doxyfile --- old/baresip-4.9.0/mk/Doxyfile 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/mk/Doxyfile 2026-07-22 11:48:14.000000000 +0200 @@ -4,7 +4,7 @@ # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = baresip -PROJECT_NUMBER = 4.9.0 +PROJECT_NUMBER = 4.10.0 OUTPUT_DIRECTORY = ../baresip-dox CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/modules/aaudio/player.c new/baresip-4.10.0/modules/aaudio/player.c --- old/baresip-4.9.0/modules/aaudio/player.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/modules/aaudio/player.c 2026-07-22 11:48:14.000000000 +0200 @@ -5,6 +5,9 @@ * Copyright (C) 2024 Sebastian Reimers */ +#include <stdlib.h> +#include <stdint.h> + #include <re.h> #include <rem.h> #include <baresip.h> @@ -18,6 +21,7 @@ void *arg; struct auplay_prm play_prm; size_t sampsz; + int32_t device_id; }; @@ -103,7 +107,10 @@ AAudioStreamBuilder *builder; aaudio_result_t result; + int32_t device_id = st->device_id; + bool fallback = false; + retry: result = AAudio_createStreamBuilder(&builder); if (result != AAUDIO_OK) { warning("aaudio: player: failed to create stream builder: " @@ -122,16 +129,31 @@ AAUDIO_USAGE_VOICE_COMMUNICATION); AAudioStreamBuilder_setPerformanceMode(builder, AAUDIO_PERFORMANCE_MODE_LOW_LATENCY); + if (device_id >= 0) + AAudioStreamBuilder_setDeviceId(builder, device_id); AAudioStreamBuilder_setDataCallback(builder, &dataCallback, st); AAudioStreamBuilder_setErrorCallback(builder, &errorCallback, st); result = AAudioStreamBuilder_openStream(builder, &st->playerStream); if (result != AAUDIO_OK) { + AAudioStreamBuilder_delete(builder); + + if (device_id >= 0 && !fallback) { + warning("aaudio: player: device %d unavailable, " + "falling back to default\n", device_id); + device_id = -1; + fallback = true; + goto retry; + } + warning("aaudio: player: failed to open stream: error %s\n", AAudio_convertResultToText(result)); return result; } + if (fallback) + info("aaudio: player: fell back to default device\n"); + info("aaudio: player: opened stream with direction %d, " "sharing mode %d, sample rate %d, format %d, sessionId %d, " "usage %d, performance mode %d\n", @@ -161,7 +183,7 @@ if (!stp || !ap || !prm || !wh) return EINVAL; - info ("aadio: opening player (%u Hz, %d channels, device %s, " + info ("aaudio: opening player (%u Hz, %d channels, device %s, " "ptime %u)\n", prm->srate, prm->ch, dev, prm->ptime); if (prm->fmt != AUFMT_S16LE) { @@ -182,6 +204,30 @@ st->play_prm = *prm; + /* + * Parse device id from the <device> field of audio_player config + * (e.g. "audio_player aaudio,5"). "default" or empty means -1 + * (let AAudio pick the default device). + */ + if (str_isset(dev) && str_casecmp(dev, "default") != 0) { + char *endptr; + long val = strtol(dev, &endptr, 10); + if (endptr == dev || *endptr != '\0' || val < 0 || + val > INT32_MAX) { + warning("aaudio: player: invalid device id " + "'%s', using default\n", dev); + st->device_id = -1; + } + else { + st->device_id = (int32_t)val; + } + } + else { + st->device_id = -1; + } + + info("aaudio: player: using device id %d\n", st->device_id); + st->wh = wh; st->arg = arg; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/modules/aaudio/recorder.c new/baresip-4.10.0/modules/aaudio/recorder.c --- old/baresip-4.9.0/modules/aaudio/recorder.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/modules/aaudio/recorder.c 2026-07-22 11:48:14.000000000 +0200 @@ -5,10 +5,13 @@ * Copyright (C) 2024 Sebastian Reimers */ +#include <string.h> +#include <stdlib.h> +#include <stdint.h> + #include <re.h> #include <rem.h> #include <baresip.h> -#include <string.h> #include "aaudio.h" @@ -23,6 +26,7 @@ size_t sampsz; size_t sampc; uint64_t samps; + int32_t device_id; }; @@ -130,7 +134,10 @@ AAudioStreamBuilder *builder; aaudio_result_t result; + int32_t device_id = st->device_id; + bool fallback = false; + retry: result = AAudio_createStreamBuilder(&builder); if (result != AAUDIO_OK) { warning("aaudio: recorder: failed to create stream builder: " @@ -151,16 +158,31 @@ AAUDIO_PERFORMANCE_MODE_LOW_LATENCY); AAudioStreamBuilder_setInputPreset(builder, AAUDIO_INPUT_PRESET_VOICE_COMMUNICATION); + if (device_id >= 0) + AAudioStreamBuilder_setDeviceId(builder, device_id); AAudioStreamBuilder_setDataCallback(builder, &dataCallback, st); AAudioStreamBuilder_setErrorCallback(builder, &errorCallback, st); result = AAudioStreamBuilder_openStream(builder, &st->recorderStream); if (result != AAUDIO_OK) { + AAudioStreamBuilder_delete(builder); + + if (device_id >= 0 && !fallback) { + warning("aaudio: recorder: device %d unavailable, " + "falling back to default\n", device_id); + device_id = -1; + fallback = true; + goto retry; + } + warning("aaudio: recorder: failed to open stream: error %s\n", AAudio_convertResultToText(result)); return result; } + if (fallback) + info("aaudio: recorder: fell back to default device\n"); + info("aaudio: recorder: opened stream with direction %d, " "sharing mode %d, sample rate %d, format %d, sessionId %d, " "input preset %d, usage %d, performance mode %d\n", @@ -219,6 +241,30 @@ st->src_prm = *prm; + /* + * Parse device id from the <device> field of audio_source config + * (e.g. "audio_source aaudio,7"). "default" or empty means -1 + * (let AAudio pick the default device). + */ + if (str_isset(dev) && str_casecmp(dev, "default") != 0) { + char *endptr; + long val = strtol(dev, &endptr, 10); + if (endptr == dev || *endptr != '\0' || val < 0 || + val > INT32_MAX) { + warning("aaudio: recorder: invalid device id " + "'%s', using default\n", dev); + st->device_id = -1; + } + else { + st->device_id = (int32_t)val; + } + } + else { + st->device_id = -1; + } + + info("aaudio: recorder: using device id %d\n", st->device_id); + st->sampsz = aufmt_sample_size(prm->fmt); st->sampc = prm->ptime * prm->ch * prm->srate / 1000; st->samps = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/modules/ctrl_tcp/netstring/netstring.c new/baresip-4.10.0/modules/ctrl_tcp/netstring/netstring.c --- old/baresip-4.9.0/modules/ctrl_tcp/netstring/netstring.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/modules/ctrl_tcp/netstring/netstring.c 2026-07-22 11:48:14.000000000 +0200 @@ -138,36 +138,3 @@ return netstring_num_len(data_length) + data_length + 2; } - -/* - * Allocate and create a netstring containing the first `len` bytes of `data`. - * This must be manually freed by the client. - * If `len` is 0 then no data will be read from `data`, and it may be NULL. - */ -size_t netstring_encode_new(char **netstring, char *data, size_t len) -{ - char *ns; - size_t num_len = 1; - - if (len == 0) { - ns = malloc(3); - if (!ns) - return 0; - ns[0] = '0'; - ns[1] = ':'; - ns[2] = ','; - } - else { - num_len = netstring_num_len(len); - ns = malloc(num_len + len + 2); - if (!ns) - return 0; - sprintf(ns, "%lu:", (unsigned long)len); - memcpy(ns + num_len + 1, data, len); - ns[num_len + len + 1] = ','; - } - - *netstring = ns; - - return num_len + len + 2; -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/modules/ctrl_tcp/netstring/netstring.h new/baresip-4.10.0/modules/ctrl_tcp/netstring/netstring.h --- old/baresip-4.9.0/modules/ctrl_tcp/netstring/netstring.h 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/modules/ctrl_tcp/netstring/netstring.h 2026-07-22 11:48:14.000000000 +0200 @@ -28,8 +28,6 @@ size_t netstring_num_len(size_t num); size_t netstring_buffer_size(size_t data_length); -size_t netstring_encode_new(char **netstring, char *data, size_t len); - #define NETSTRING_MAX_SIZE 999999999 #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/modules/directfb/CMakeLists.txt new/baresip-4.10.0/modules/directfb/CMakeLists.txt --- old/baresip-4.9.0/modules/directfb/CMakeLists.txt 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/modules/directfb/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,21 +0,0 @@ -project(directfb) - -find_package(DIRECTFB) - -if(NOT DIRECTFB_FOUND) - return() -endif() - -list(APPEND MODULES_DETECTED ${PROJECT_NAME}) -set(MODULES_DETECTED ${MODULES_DETECTED} PARENT_SCOPE) - -set(SRCS directfb.c) - -if(STATIC) - add_library(${PROJECT_NAME} OBJECT ${SRCS}) -else() - add_library(${PROJECT_NAME} MODULE ${SRCS}) -endif() - -target_include_directories(${PROJECT_NAME} PRIVATE ${DIRECTFB_INCLUDE_DIR}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${DIRECTFB_LIBRARIES}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/modules/directfb/directfb.c new/baresip-4.10.0/modules/directfb/directfb.c --- old/baresip-4.9.0/modules/directfb/directfb.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/modules/directfb/directfb.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,188 +0,0 @@ -/** - * @file directfb.c DirectFB video display module - * - * Copyright (C) 2010 Alfred E. Heggestad - * Copyright (C) 2013 Andreas Shimokawa <[email protected]> - */ -#include <re.h> -#include <rem.h> -#include <baresip.h> -#include <directfb.h> - - -struct vidisp_st { - struct vidsz size; /**< Current size */ - IDirectFBWindow *window; /**< DirectFB Window */ - IDirectFBSurface *surface; /**< Surface for pixels */ - IDirectFBDisplayLayer *layer; /**< Display layer */ -}; - - -static IDirectFB *dfb; -static struct vidisp *vid; - - -static void destructor(void *arg) -{ - struct vidisp_st *st = arg; - - if (st->surface) - st->surface->Release(st->surface); - if (st->window) - st->window->Release(st->window); - if (st->layer) - st->layer->Release(st->layer); -} - - -static int alloc(struct vidisp_st **stp, const struct vidisp *vd, - struct vidisp_prm *prm, const char *dev, - vidisp_resize_h *resizeh, void *arg) -{ - struct vidisp_st *st; - int err = 0; - - /* Not used by DirectFB */ - (void) prm; - (void) dev; - (void) resizeh; - (void) arg; - - st = mem_zalloc(sizeof(*st), destructor); - if (!st) - return ENOMEM; - - dfb->GetDisplayLayer(dfb, DLID_PRIMARY, &st->layer); - - if (err) - mem_deref(st); - else - *stp = st; - - return err; -} - - -static int display(struct vidisp_st *st, const char *title, - const struct vidframe *frame, uint64_t timestamp) -{ - void *pixels; - int pitch, i; - unsigned h; - uint8_t *p; - (void) title; - (void) timestamp; - - if (!vidsz_cmp(&st->size, &frame->size)) { - if (st->size.w && st->size.h) { - info("directfb: reset: %u x %u ---> %u x %u\n", - st->size.w, st->size.h, - frame->size.w, frame->size.h); - } - - if (st->surface) { - st->surface->Release(st->surface); - st->surface = NULL; - } - if (st->window) { - st->window->Release(st->window); - st->window = NULL; - } - } - - if (!st->window) { - DFBWindowDescription desc; - - desc.flags = DWDESC_WIDTH|DWDESC_HEIGHT|DWDESC_PIXELFORMAT; - desc.width = frame->size.w; - desc.height = frame->size.h; - desc.pixelformat = DSPF_I420; - - st->layer->CreateWindow(st->layer, &desc, &st->window); - - st->size = frame->size; - st->window->SetOpacity(st->window, 0xff); - st->window->GetSurface(st->window, &st->surface); - } - - st->surface->Lock(st->surface, DSLF_WRITE, &pixels, &pitch); - - p = pixels; - for (i=0; i<3; i++) { - - const uint8_t *s = frame->data[i]; - const unsigned stp = frame->linesize[0] / frame->linesize[i]; - const unsigned sz = frame->size.w / stp; - - for (h = 0; h < frame->size.h; h += stp) { - - memcpy(p, s, sz); - - s += frame->linesize[i]; - p += (pitch / stp); - } - } - - st->surface->Unlock(st->surface); - - /* Update the screen! */ - st->surface->Flip(st->surface, 0, 0); - - return 0; -} - - -static void hide(struct vidisp_st *st) -{ - if (!st || !st->window) - return; - - st->window->SetOpacity(st->window, 0x00); -} - - -static int module_init(void) -{ - int err = 0; - DFBResult ret; - - ret = DirectFBInit(NULL, NULL); - if (ret) { - DirectFBError("DirectFBInit() failed", ret); - return (int) ret; - } - - ret = DirectFBCreate(&dfb); - if (ret) { - DirectFBError("DirectFBCreate() failed", ret); - return (int) ret; - } - - err = vidisp_register(&vid, baresip_vidispl(), - "directfb", alloc, NULL, display, hide); - if (err) - return err; - - return 0; -} - - -static int module_close(void) -{ - vid = mem_deref(vid); - - if (dfb) { - dfb->Release(dfb); - dfb = NULL; - } - - return 0; -} - - -EXPORT_SYM const struct mod_export DECL_EXPORTS(directfb) = { - "directfb", - "vidisp", - module_init, - module_close -}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/modules/menu/menu.c new/baresip-4.10.0/modules/menu/menu.c --- old/baresip-4.9.0/modules/menu/menu.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/modules/menu/menu.c 2026-07-22 11:48:14.000000000 +0200 @@ -125,7 +125,7 @@ static void limit_earlymedia(struct call* call, void *arg) { - enum sdp_dir ldir, ndir; + enum sdp_dir rdir, ndir; uint32_t maxcnt = 32; bool update = false; (void)arg; @@ -133,8 +133,8 @@ if (!call_is_outgoing(call)) return; - ldir = sdp_media_ldir(stream_sdpmedia(audio_strm(call_audio(call)))); - ndir = ldir; + rdir = sdp_media_rdir(stream_sdpmedia(audio_strm(call_audio(call)))); + ndir = rdir; conf_get_u32(conf_cur(), "menu_max_earlyaudio", &maxcnt); if (menu.outcnt > maxcnt) @@ -142,7 +142,7 @@ else if (menu.outcnt > 1) ndir &= SDP_SENDONLY; - if (ndir != ldir) { + if (ndir != rdir) { call_set_audio_ldir(call, ndir); update = true; } @@ -155,8 +155,8 @@ } /* video */ - ldir = sdp_media_ldir(stream_sdpmedia(video_strm(call_video(call)))); - ndir = ldir; + rdir = sdp_media_rdir(stream_sdpmedia(video_strm(call_video(call)))); + ndir = rdir; maxcnt = 32; conf_get_u32(conf_cur(), "menu_max_earlyvideo_rx", &maxcnt); @@ -168,7 +168,7 @@ if (menu.outcnt > maxcnt) ndir &= SDP_RECVONLY; - if (ndir != ldir) { + if (ndir != rdir) { call_set_video_ldir(call, ndir); update = true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/modules/snapshot/snapshot.c new/baresip-4.10.0/modules/snapshot/snapshot.c --- old/baresip-4.9.0/modules/snapshot/snapshot.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/modules/snapshot/snapshot.c 2026-07-22 11:48:14.000000000 +0200 @@ -166,20 +166,9 @@ return buf; } - sprintf(buf, (tmx->tm_mon < 9 ? "%s-%d-0%d" : "%s-%d-%d"), name, - 1900 + tmx->tm_year, tmx->tm_mon + 1); - - sprintf(buf + strlen(buf), (tmx->tm_mday < 10 ? "-0%d" : "-%d"), - tmx->tm_mday); - - sprintf(buf + strlen(buf), (tmx->tm_hour < 10 ? "-0%d" : "-%d"), - tmx->tm_hour); - - sprintf(buf + strlen(buf), (tmx->tm_min < 10 ? "-0%d" : "-%d"), - tmx->tm_min); - - sprintf(buf + strlen(buf), (tmx->tm_sec < 10 ? "-0%d.png" : "-%d.png"), - tmx->tm_sec); + re_snprintf(buf, length, "%s-%d-%02d-%02d-%02d-%02d-%02d.png", + name, 1900 + tmx->tm_year, tmx->tm_mon + 1, + tmx->tm_mday, tmx->tm_hour, tmx->tm_min, tmx->tm_sec); return buf; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/src/config.c new/baresip-4.10.0/src/config.c --- old/baresip-4.9.0/src/config.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/src/config.c 2026-07-22 11:48:14.000000000 +0200 @@ -1186,9 +1186,6 @@ (void)re_fprintf(f, "#module\t\t\t" "vidbridge" MOD_EXT "\n"); (void)re_fprintf(f, "\n# Video display modules\n"); -#ifdef LINUX - (void)re_fprintf(f, "#module\t\t\t" "directfb" MOD_EXT "\n"); -#endif (void)re_fprintf(f, "#module\t\t\t" "x11" MOD_EXT "\n"); (void)re_fprintf(f, "#module\t\t\t" "sdl" MOD_EXT "\n"); (void)re_fprintf(f, "#module\t\t\t" "fakevideo" MOD_EXT "\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/src/module.c new/baresip-4.10.0/src/module.c --- old/baresip-4.9.0/src/module.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/src/module.c 2026-07-22 11:48:14.000000000 +0200 @@ -8,6 +8,48 @@ #include "core.h" +static struct { + char *name; + char *reason; + char *version; +} notfound[] = { + /* moved */ + {"b2bua", "moved to baresip-apps", ""}, + {"auloop", "moved to baresip-apps", ""}, + {"vidloop", "moved to baresip-apps", ""}, + {"mc", "moved to baresip-apps", ""}, + {"mpa", "moved to baresip-apps", "v4.2.0"}, + {"ebuacip", "moved to baresip-apps", "v4.0.0"}, + /* replaced */ + {"winwave", "replaced by wasapi module", "v3.18.0"}, + {"zrtp", "use gzrtp instead", "v2.9.0"}, + {"x11grab", "use avformat.so instead", "v1.x"}, + {"celt", "module deleted, use opus.so instead", "v0.4.12"}, + {"v4l", "deprecated module, use v4l2.so instead", "v0.6.2"}, + /* deleted */ + {"directfb", "deprecated module", "v4.10.0"}, + {"g726", "deprecated module", "v4.8.0"}, + {"webrtc_aecm", "removed module", "v4.2.0"}, + {"sndio", "deprecated module", "v3.0.0"}, + {"i2s", "deprecated module", "v2.9.0"}, + {"omx", "deprecated module", ""}, + {"gsm", "deprecated module", ""}, + {"gst_video", "deprecated module", "v2.x"}, + {"speex_pp", "deprecated module", "v1.x"}, + {"rst", "deprecated module", "v1.x"}, + {"ilbc", "deprecated module", "v1.x"}, + {"oss", "deprecated module", ""}, + {"cairo", "deprecated module", ""}, + {"opengl", "deprecated module", ""}, + {"isac", "deprecated module", ""}, + {"qtcapture", "deprecated module", ""}, + {"opengles", "deprecated module (not working)", ""}, + {"avahi", "deprecated module", ""}, + {"dtmfio", "deprecated module", ""}, + {"sdl", "deprecated module", "v0.6.2"}, +}; + + /* * Append module extension, if not exist * @@ -97,6 +139,14 @@ out: if (err) { warning("module %r: %m\n", name, err); + for (size_t i = 0; i < RE_ARRAY_SIZE(notfound); i++) { + if (0 == pl_strcasecmp(name, notfound[i].name)) { + warning("\t%s (since %s)\n", + notfound[i].reason, + notfound[i].version); + break; + } + } } else if (modp) *modp = m; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/src/rtprecv.c new/baresip-4.10.0/src/rtprecv.c --- old/baresip-4.9.0/src/rtprecv.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/src/rtprecv.c 2026-07-22 11:48:14.000000000 +0200 @@ -344,7 +344,7 @@ rx->pseq = (uint16_t)(hdr->seq - 1); rx->pseq_set = true; rx->pt = -1; - rx->pt_tel = 0; + rx->pt_tel = -1; rx->ssrc_changed = true; mtx_unlock(rx->mtx); } @@ -397,7 +397,7 @@ bool handle; handle = hdr->pt != rx->pt; - if (rx->pt_tel) + if (rx->pt_tel != -1) handle |= hdr->pt == rx->pt_tel; if (!handle) @@ -478,6 +478,9 @@ err = pass_pt_work(rx, hdr->pt, mb); if (err) return; + + if (hdr->pt == rx->pt_tel) + return; } if (rx->jbuf) { @@ -769,6 +772,7 @@ rx->arg = arg; rx->pseq = -1; rx->pt = -1; + rx->pt_tel = -1; err = str_dup(&rx->name, name); err |= mutex_alloc(&rx->mtx); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/test/call.c new/baresip-4.10.0/test/call.c --- old/baresip-4.9.0/test/call.c 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/test/call.c 2026-07-22 11:48:14.000000000 +0200 @@ -1480,7 +1480,7 @@ TEST_ERR(err); /* run main-loop with timeout, wait for events */ - err = re_main_timeout(5000); + err = re_main_timeout(10000); TEST_ERR(err); TEST_ERR(fix.err); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baresip-4.9.0/test/ccheck.py new/baresip-4.10.0/test/ccheck.py --- old/baresip-4.9.0/test/ccheck.py 2026-06-17 08:22:32.000000000 +0200 +++ new/baresip-4.10.0/test/ccheck.py 2026-07-22 11:48:14.000000000 +0200 @@ -235,7 +235,7 @@ return return - if 'LIST_FOREACH' in line and not 'LIST_FOREACH_SAFE' in line: + if 'LIST_FOREACH' in line and 'LIST_FOREACH_SAFE' not in line: self.listfor_depth = 1 return
