Full Code of baresip/re for AI

main 3cf4aff3f2c0 cached
501 files
2.7 MB
717.6k tokens
6524 symbols
1 requests
Download .txt
Showing preview only (2,864K chars total). Download the full file or copy to clipboard to get everything.
Repository: baresip/re
Branch: main
Commit: 3cf4aff3f2c0
Files: 501
Total size: 2.7 MB

Directory structure:
gitextract_s5tkatt2/

├── .clangd
├── .github/
│   └── workflows/
│       ├── abi.yml
│       ├── android.yml
│       ├── build.yml
│       ├── clang-analyze.yml
│       ├── cmake_win.yml
│       ├── codeql.yml
│       ├── coverage.yml
│       ├── coverity.yml
│       ├── fedora.yml
│       ├── freebsd.yml
│       ├── ios.yml
│       ├── lint.yml
│       ├── mingw.yml
│       ├── musl.yml
│       ├── run-on-arch.yml
│       ├── sanitizers.yml
│       ├── sonar.yml
│       ├── ssl.yml
│       ├── strict-c.yml
│       └── valgrind.yml
├── .gitignore
├── CHANGELOG.md
├── CMakeLists.txt
├── LICENSE
├── Makefile
├── README.md
├── cmake/
│   ├── FindMBEDTLS.cmake
│   ├── libre-config.cmake
│   ├── re-config.cmake
│   └── sanitizer.cmake
├── docs/
│   ├── ChangeLog
│   ├── TODO
│   └── main.dox
├── include/
│   ├── re.h
│   ├── re_aes.h
│   ├── re_async.h
│   ├── re_atomic.h
│   ├── re_av1.h
│   ├── re_base64.h
│   ├── re_bfcp.h
│   ├── re_btrace.h
│   ├── re_conf.h
│   ├── re_convert.h
│   ├── re_crc32.h
│   ├── re_dbg.h
│   ├── re_dd.h
│   ├── re_dns.h
│   ├── re_fmt.h
│   ├── re_h264.h
│   ├── re_h265.h
│   ├── re_hash.h
│   ├── re_hmac.h
│   ├── re_http.h
│   ├── re_httpauth.h
│   ├── re_ice.h
│   ├── re_json.h
│   ├── re_list.h
│   ├── re_main.h
│   ├── re_mbuf.h
│   ├── re_md5.h
│   ├── re_mem.h
│   ├── re_mod.h
│   ├── re_mqueue.h
│   ├── re_msg.h
│   ├── re_net.h
│   ├── re_odict.h
│   ├── re_pcp.h
│   ├── re_rtmp.h
│   ├── re_rtp.h
│   ├── re_rtpext.h
│   ├── re_sa.h
│   ├── re_sdp.h
│   ├── re_sha.h
│   ├── re_shim.h
│   ├── re_sip.h
│   ├── re_sipevent.h
│   ├── re_sipreg.h
│   ├── re_sipsess.h
│   ├── re_srtp.h
│   ├── re_stun.h
│   ├── re_sys.h
│   ├── re_tcp.h
│   ├── re_telev.h
│   ├── re_thread.h
│   ├── re_tls.h
│   ├── re_tmr.h
│   ├── re_trace.h
│   ├── re_trice.h
│   ├── re_turn.h
│   ├── re_types.h
│   ├── re_udp.h
│   ├── re_unixsock.h
│   ├── re_uri.h
│   ├── re_websock.h
│   ├── rem.h
│   ├── rem_aac.h
│   ├── rem_au.h
│   ├── rem_aubuf.h
│   ├── rem_auconv.h
│   ├── rem_audio.h
│   ├── rem_aufile.h
│   ├── rem_auframe.h
│   ├── rem_aulevel.h
│   ├── rem_aumix.h
│   ├── rem_auresamp.h
│   ├── rem_autone.h
│   ├── rem_avc.h
│   ├── rem_dsp.h
│   ├── rem_dtmf.h
│   ├── rem_fir.h
│   ├── rem_flv.h
│   ├── rem_g711.h
│   ├── rem_goertzel.h
│   ├── rem_vid.h
│   ├── rem_vidconv.h
│   ├── rem_video.h
│   └── rem_vidmix.h
├── mk/
│   └── Doxyfile
├── packaging/
│   ├── CMakeLists.txt
│   └── libre.pc.in
├── rem/
│   ├── aac/
│   │   └── aac.c
│   ├── au/
│   │   ├── fmt.c
│   │   └── util.c
│   ├── aubuf/
│   │   ├── ajb.c
│   │   ├── ajb.h
│   │   └── aubuf.c
│   ├── auconv/
│   │   └── auconv.c
│   ├── aufile/
│   │   ├── aufile.c
│   │   ├── aufile.h
│   │   └── wave.c
│   ├── auframe/
│   │   └── auframe.c
│   ├── aulevel/
│   │   └── aulevel.c
│   ├── aumix/
│   │   └── aumix.c
│   ├── auresamp/
│   │   └── resamp.c
│   ├── autone/
│   │   └── tone.c
│   ├── avc/
│   │   └── config.c
│   ├── dtmf/
│   │   └── dec.c
│   ├── fir/
│   │   └── fir.c
│   ├── g711/
│   │   └── g711.c
│   ├── goertzel/
│   │   └── goertzel.c
│   ├── vid/
│   │   ├── draw.c
│   │   ├── fmt.c
│   │   └── frame.c
│   ├── vidconv/
│   │   └── vconv.c
│   └── vidmix/
│       └── vidmix.c
├── sonar-project.properties
├── src/
│   ├── aes/
│   │   ├── apple/
│   │   │   └── aes.c
│   │   ├── openssl/
│   │   │   └── aes.c
│   │   └── stub.c
│   ├── async/
│   │   └── async.c
│   ├── av1/
│   │   ├── depack.c
│   │   ├── obu.c
│   │   └── pkt.c
│   ├── base64/
│   │   └── b64.c
│   ├── bfcp/
│   │   ├── attr.c
│   │   ├── bfcp.h
│   │   ├── conn.c
│   │   ├── msg.c
│   │   ├── reply.c
│   │   └── request.c
│   ├── btrace/
│   │   └── btrace.c
│   ├── conf/
│   │   └── conf.c
│   ├── crc32/
│   │   └── crc32.c
│   ├── dbg/
│   │   └── dbg.c
│   ├── dd/
│   │   ├── dd.c
│   │   ├── dd_enc.c
│   │   └── putbit.c
│   ├── dns/
│   │   ├── client.c
│   │   ├── cstr.c
│   │   ├── darwin/
│   │   │   └── srv.c
│   │   ├── dname.c
│   │   ├── dns.h
│   │   ├── hdr.c
│   │   ├── ns.c
│   │   ├── res.c
│   │   ├── rr.c
│   │   ├── rrlist.c
│   │   └── win32/
│   │       └── srv.c
│   ├── fmt/
│   │   ├── ch.c
│   │   ├── hexdump.c
│   │   ├── pl.c
│   │   ├── print.c
│   │   ├── prm.c
│   │   ├── regex.c
│   │   ├── str.c
│   │   ├── str_error.c
│   │   ├── text2pcap.c
│   │   ├── time.c
│   │   └── unicode.c
│   ├── h264/
│   │   ├── getbit.c
│   │   ├── h264.h
│   │   ├── nal.c
│   │   └── sps.c
│   ├── h265/
│   │   └── nal.c
│   ├── hash/
│   │   ├── func.c
│   │   └── hash.c
│   ├── hmac/
│   │   ├── apple/
│   │   │   └── hmac.c
│   │   ├── hmac.c
│   │   ├── hmac_sha1.c
│   │   └── openssl/
│   │       └── hmac.c
│   ├── http/
│   │   ├── auth.c
│   │   ├── chunk.c
│   │   ├── client.c
│   │   ├── http.h
│   │   ├── msg.c
│   │   ├── request.c
│   │   └── server.c
│   ├── httpauth/
│   │   ├── basic.c
│   │   └── digest.c
│   ├── ice/
│   │   ├── cand.c
│   │   ├── candpair.c
│   │   ├── chklist.c
│   │   ├── comp.c
│   │   ├── connchk.c
│   │   ├── ice.h
│   │   ├── icem.c
│   │   ├── icesdp.c
│   │   ├── icestr.c
│   │   ├── stunsrv.c
│   │   └── util.c
│   ├── json/
│   │   ├── decode.c
│   │   ├── decode_odict.c
│   │   └── encode.c
│   ├── list/
│   │   └── list.c
│   ├── main/
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── method.c
│   │   └── openssl.c
│   ├── mbuf/
│   │   └── mbuf.c
│   ├── md5/
│   │   └── wrap.c
│   ├── mem/
│   │   ├── mem.c
│   │   ├── mem_pool.c
│   │   └── secure.c
│   ├── mod/
│   │   ├── dl.c
│   │   ├── mod.c
│   │   ├── mod_internal.h
│   │   └── win32/
│   │       └── dll.c
│   ├── mqueue/
│   │   ├── mqueue.c
│   │   ├── mqueue.h
│   │   └── win32/
│   │       └── pipe.c
│   ├── msg/
│   │   ├── ctype.c
│   │   └── param.c
│   ├── net/
│   │   ├── bsd/
│   │   │   └── brt.c
│   │   ├── if.c
│   │   ├── ifaddrs.c
│   │   ├── linux/
│   │   │   ├── addrs.c
│   │   │   ├── macros.h
│   │   │   └── rt.c
│   │   ├── net.c
│   │   ├── netstr.c
│   │   ├── posix/
│   │   │   └── pif.c
│   │   ├── rt.c
│   │   ├── sock.c
│   │   ├── sockopt.c
│   │   └── win32/
│   │       └── wif.c
│   ├── odict/
│   │   ├── entry.c
│   │   ├── get.c
│   │   ├── odict.c
│   │   ├── odict.h
│   │   └── type.c
│   ├── pcp/
│   │   ├── README
│   │   ├── msg.c
│   │   ├── option.c
│   │   ├── payload.c
│   │   ├── pcp.c
│   │   ├── pcp.h
│   │   ├── reply.c
│   │   └── request.c
│   ├── rtmp/
│   │   ├── README.md
│   │   ├── amf.c
│   │   ├── amf_dec.c
│   │   ├── amf_enc.c
│   │   ├── chunk.c
│   │   ├── conn.c
│   │   ├── control.c
│   │   ├── ctrans.c
│   │   ├── dechunk.c
│   │   ├── hdr.c
│   │   ├── rtmp.h
│   │   └── stream.c
│   ├── rtp/
│   │   ├── fb.c
│   │   ├── member.c
│   │   ├── ntp.c
│   │   ├── pkt.c
│   │   ├── rr.c
│   │   ├── rtcp.c
│   │   ├── rtcp.h
│   │   ├── rtp.c
│   │   ├── sdes.c
│   │   ├── sess.c
│   │   └── source.c
│   ├── rtpext/
│   │   └── rtpext.c
│   ├── sa/
│   │   ├── printaddr.c
│   │   └── sa.c
│   ├── sdp/
│   │   ├── attr.c
│   │   ├── format.c
│   │   ├── media.c
│   │   ├── msg.c
│   │   ├── sdp.h
│   │   ├── session.c
│   │   ├── str.c
│   │   └── util.c
│   ├── sha/
│   │   └── wrap.c
│   ├── shim/
│   │   └── shim.c
│   ├── sip/
│   │   ├── addr.c
│   │   ├── auth.c
│   │   ├── contact.c
│   │   ├── cseq.c
│   │   ├── ctrans.c
│   │   ├── dialog.c
│   │   ├── keepalive.c
│   │   ├── keepalive_udp.c
│   │   ├── msg.c
│   │   ├── rack.c
│   │   ├── reply.c
│   │   ├── request.c
│   │   ├── sip.c
│   │   ├── sip.h
│   │   ├── strans.c
│   │   ├── transp.c
│   │   └── via.c
│   ├── sipevent/
│   │   ├── listen.c
│   │   ├── msg.c
│   │   ├── notify.c
│   │   ├── sipevent.h
│   │   └── subscribe.c
│   ├── sipreg/
│   │   └── reg.c
│   ├── sipsess/
│   │   ├── accept.c
│   │   ├── ack.c
│   │   ├── close.c
│   │   ├── connect.c
│   │   ├── info.c
│   │   ├── listen.c
│   │   ├── modify.c
│   │   ├── prack.c
│   │   ├── reply.c
│   │   ├── request.c
│   │   ├── sess.c
│   │   ├── sipsess.h
│   │   └── update.c
│   ├── srtp/
│   │   ├── README
│   │   ├── misc.c
│   │   ├── replay.c
│   │   ├── srtcp.c
│   │   ├── srtp.c
│   │   ├── srtp.h
│   │   └── stream.c
│   ├── stun/
│   │   ├── addr.c
│   │   ├── attr.c
│   │   ├── ctrans.c
│   │   ├── dnsdisc.c
│   │   ├── hdr.c
│   │   ├── ind.c
│   │   ├── keepalive.c
│   │   ├── msg.c
│   │   ├── rep.c
│   │   ├── req.c
│   │   ├── stun.c
│   │   ├── stun.h
│   │   └── stunstr.c
│   ├── sys/
│   │   ├── daemon.c
│   │   ├── endian.c
│   │   ├── fs.c
│   │   ├── rand.c
│   │   ├── sleep.c
│   │   └── sys.c
│   ├── tcp/
│   │   ├── tcp.c
│   │   └── tcp_high.c
│   ├── telev/
│   │   └── telev.c
│   ├── thread/
│   │   ├── posix.c
│   │   ├── thread.c
│   │   └── win32.c
│   ├── tls/
│   │   ├── openssl/
│   │   │   ├── sni.c
│   │   │   ├── tls.c
│   │   │   ├── tls.h
│   │   │   ├── tls_tcp.c
│   │   │   └── tls_udp.c
│   │   └── stub.c
│   ├── tmr/
│   │   └── tmr.c
│   ├── trace/
│   │   └── trace.c
│   ├── trice/
│   │   ├── README.md
│   │   ├── cand.c
│   │   ├── candpair.c
│   │   ├── chklist.c
│   │   ├── connchk.c
│   │   ├── lcand.c
│   │   ├── rcand.c
│   │   ├── stunsrv.c
│   │   ├── tcpconn.c
│   │   ├── trice.c
│   │   └── trice.h
│   ├── turn/
│   │   ├── chan.c
│   │   ├── perm.c
│   │   ├── turnc.c
│   │   └── turnc.h
│   ├── udp/
│   │   ├── mcast.c
│   │   └── udp.c
│   ├── unixsock/
│   │   └── unixsock.c
│   ├── uri/
│   │   ├── uri.c
│   │   └── uric.c
│   └── websock/
│       └── websock.c
├── test/
│   ├── CMakeLists.txt
│   ├── aac.c
│   ├── aes.c
│   ├── async.c
│   ├── au.c
│   ├── aubuf.c
│   ├── aulength.c
│   ├── aulevel.c
│   ├── aupos.c
│   ├── auresamp.c
│   ├── av1.c
│   ├── base64.c
│   ├── bfcp.c
│   ├── btrace.c
│   ├── combo/
│   │   └── dtls_turn.c
│   ├── conf.c
│   ├── convert.c
│   ├── cplusplus.cpp
│   ├── crc32.c
│   ├── data/
│   │   ├── client.pem
│   │   ├── client_wrongkey.pem
│   │   ├── fstab.json
│   │   ├── menu.json
│   │   ├── rfc7159.json
│   │   ├── server-ecdsa.pem
│   │   ├── sni/
│   │   │   ├── client-interm.pem
│   │   │   ├── root-ca.pem
│   │   │   └── server-interm.pem
│   │   ├── utf8.json
│   │   ├── webapp.json
│   │   └── widget.json
│   ├── dbg.c
│   ├── dd.c
│   ├── dns.c
│   ├── dsp.c
│   ├── dtls.c
│   ├── dtmf.c
│   ├── fir.c
│   ├── fmt.c
│   ├── g711.c
│   ├── h264.c
│   ├── h265.c
│   ├── hash.c
│   ├── hmac.c
│   ├── http.c
│   ├── httpauth.c
│   ├── ice.c
│   ├── json.c
│   ├── list.c
│   ├── main.c
│   ├── mbuf.c
│   ├── md5.c
│   ├── mem.c
│   ├── mem_pool.c
│   ├── mock/
│   │   ├── cert.c
│   │   ├── dnssrv.c
│   │   ├── nat.c
│   │   ├── sipsrv.c
│   │   ├── stunsrv.c
│   │   └── turnsrv.c
│   ├── mqueue.c
│   ├── net.c
│   ├── odict.c
│   ├── pcp.c
│   ├── remain.c
│   ├── rtcp.c
│   ├── rtmp.c
│   ├── rtp.c
│   ├── rtpext.c
│   ├── sa.c
│   ├── sdp.c
│   ├── sha.c
│   ├── sip.c
│   ├── sipauth.c
│   ├── sipevent.c
│   ├── sipreg.c
│   ├── sipsess.c
│   ├── srtp.c
│   ├── stun.c
│   ├── sys.c
│   ├── tcp.c
│   ├── telev.c
│   ├── test.c
│   ├── test.h
│   ├── thread.c
│   ├── tls.c
│   ├── tmr.c
│   ├── trace.c
│   ├── trice.c
│   ├── turn.c
│   ├── types.c
│   ├── udp.c
│   ├── unixsock.c
│   ├── uri.c
│   ├── vid.c
│   ├── vidconv.c
│   └── websock.c
└── tools/
    └── genfir.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .clangd
================================================
If:
  PathMatch: [include/.*\.h]
CompileFlags:
  Add: [-Wall, -DHAVE_INTTYPES_H, -include re.h]
  Remove: [-xobjective-c++-header]
---
Diagnostics:
  Suppress: "-Wgnu-zero-variadic-macro-arguments"


================================================
FILE: .github/workflows/abi.yml
================================================
name: ABI Checks

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  abicheck:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v5
      with:
          ref: 'v4.6.0'
          path: old

    - uses: actions/checkout@v5
      with:
          path: current

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: install abidiff
      run: sudo apt-get update && sudo apt-get install -y abigail-tools

    - name: make shared lib
      run: |
        cmake -S old -B old/build && cmake --build old/build

    - name: make current shared lib
      run: |
        cmake -S current -B current/build && cmake --build current/build

    - name: abidiff compare
      id: abidiff
      run: abidiff old/build/libre.so current/build/libre.so
      continue-on-error: true

    - name: display warning
      if: steps.abidiff.outcome != 'success'
      run: echo "::warning::ABI Check failed - bump ABI version"


================================================
FILE: .github/workflows/android.yml
================================================
name: Android

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

env:
  openssl: 3.2.1
  toolchain: toolchains/llvm/prebuilt/linux-x86_64
  api: 26
  abi: x86_64

jobs:
  android:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v5

    - name: Enable KVM
      run: |
        echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
        sudo udevadm control --reload-rules
        sudo udevadm trigger --name-match=kvm

    - uses: actions/cache@v4
      id: openssl
      with:
        path: openssl
        key: ${{ runner.os }}-android-${{ env.abi }}-openssl-${{ env.openssl }}

    - name: "build openssl"
      if: steps.openssl.outputs.cache-hit != 'true'
      run: |
        wget -q https://www.openssl.org/source/openssl-$openssl.tar.gz
        tar -xzf openssl-$openssl.tar.gz
        mv openssl-$openssl openssl
        cd openssl && ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME PATH=$ANDROID_NDK_LATEST_HOME/$toolchain/bin:$PATH ./Configure android-$abi no-shared no-tests -U__ANDROID_API__ -D__ANDROID_API__=$api && PATH=$ANDROID_NDK_LATEST_HOME/$toolchain/bin:$PATH make build_libs && cd ..

    - name: build
      # unixsock is not currently supported on Android as only abstract (not pathname) addresses are allowed
      run: |
        cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI="$abi" -DANDROID_PLATFORM=android-$api -DOPENSSL_ROOT_DIR=openssl -DOPENSSL_INCLUDE_DIR=openssl/include -DOPENSSL_CRYPTO_LIBRARY=openssl/libcrypto.a -DOPENSSL_SSL_LIBRARY=openssl/libssl.a -DUSE_UNIXSOCK=OFF .
        cmake --build . -j 4 -t retest

    - name: run
      uses: reactivecircus/android-emulator-runner@v2
      with:
        api-level: ${{ env.api }}
        arch: ${{ env.abi }}
        target: google_apis
        # Use test data directory as a writeable directory for I/O tests as the emulator file system is not generally writeable
        script: |
          adb push test/retest /data/local/tmp/retest
          adb shell chmod 775 /data/local/tmp/retest
          adb push test/data /data/local/tmp/retest-data
          adb shell chmod 775 /data/local/tmp/retest-data
          adb push $ANDROID_NDK_LATEST_HOME/$toolchain/sysroot/usr/lib/$abi-linux-android/libc++_shared.so /data/local/tmp/libc++_shared.so
          adb shell HOME=/data/local/tmp LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/retest -r -v -d /data/local/tmp/retest-data


================================================
FILE: .github/workflows/build.yml
================================================
name: Build

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  build:
    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        build_type: [Release, Debug]
        compiler: [gcc, clang, gcc-14, clang-21]
        os: [ubuntu-22.04, ubuntu-24.04, macos-latest]
        exclude:
          - os: macos-latest
            compiler: gcc
          - os: macos-latest
            compiler: gcc-14
          - os: macos-latest
            compiler: clang-21
          - os: ubuntu-22.04
            compiler: gcc-14
          - os: ubuntu-22.04
            compiler: clang-21
    env:
      CC: ${{ matrix.compiler }}
      CMAKE_GENERATOR: Ninja

    steps:
    - uses: actions/checkout@v5

    - name: Set Xcode version
      if: ${{ runner.os == 'macOS' }}
      run: sudo xcode-select -s /Applications/Xcode_16.2.app 

    - name: openssl path macos
      if: ${{ runner.os == 'macOS' }}
      run: |
        echo "OPENSSL_ROOT_DIR=$(brew --prefix openssl)" >> $GITHUB_ENV

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: install packages
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo apt-get update && sudo apt-get install -y ninja-build

    - name: Install clang
      if: ${{ matrix.compiler == 'clang-21' }}
      run: |
        wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
        sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main"
        sudo apt-get update && sudo apt-get install -y clang-21

    - name: make info
      run: |
        echo "OS: ${{ matrix.os }}"
        echo "--- ${{ matrix.compiler }} DEBUG VERSION ---"
        ${{ matrix.compiler }} - --version

    - name: cmake
      run: |
        cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror"
        cmake --build build -t retest
    
    - name: retest
      run: |
        ./build/test/retest -r -v


================================================
FILE: .github/workflows/clang-analyze.yml
================================================
name: clang analyze

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  clang-analyze:
    runs-on: ubuntu-24.04

    steps:
    - uses: actions/checkout@v5

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: Install clang-tools
      run: |
        wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
        sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main"
        sudo apt-get update && sudo apt-get install -y clang-tools-21

    - name: analyze
      run: | 
        cmake -B build -DCMAKE_C_COMPILER=clang-21
        analyze-build-21 --cdb build/compile_commands.json --status-bugs -v


================================================
FILE: .github/workflows/cmake_win.yml
================================================
name: Windows

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  build:
    name: ${{ matrix.config.name }}
    runs-on: ${{ matrix.config.os }}
    strategy:
      fail-fast: false
      matrix:
        config:
        - {
            name: "Windows Debug",
            os: windows-2022,
            environment_script: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat",
            generators: "Ninja",
            build: "Debug",
            openssl: true,
            disable_openssl: "OFF",
            testing: true,
            c11_threads: "ON"
          }
        - {
            name: "Windows Release",
            os: windows-2022,
            environment_script: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat",
            generators: "Ninja",
            build: "Release",
            openssl: true,
            disable_openssl: "OFF",
            testing: true,
            c11_threads: "ON"
          }
        - {
            name: "Windows Debug 32-bit",
            os: windows-2022,
            environment_script: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build\\vcvarsamd64_x86.bat",
            generators: "Ninja",
            build: "Debug",
            openssl: false,
            disable_openssl: "ON",
            choco: "--x86",
            testing: true,
            c11_threads: "OFF" # missing vcruntime library
          }
        - {
            name: "Windows Debug ARM64",
            os: windows-2022,
            environment_script: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build\\vcvarsamd64_arm64.bat",
            generators: "Ninja",
            build: "Debug",
            openssl: false,
            disable_openssl: "ON",
            testing: false,
            c11_threads: "ON"
          }

    steps:
      - uses: actions/checkout@v5

      - name: Install OpenSSL
        if: ${{ matrix.config.openssl }}
        run: |
          choco install --no-progress ${{ matrix.config.choco }} openssl --version 3.6.2

      - name: Build
        shell: cmd
        run: |
          call "${{ matrix.config.environment_script }}"
          cmake --version
          ninja --version
          cmake -S . -B build -G "${{ matrix.config.generators }}" -DCMAKE_C_FLAGS="/WX" -DHAVE_THREADS="${{ matrix.c11_threads }}" -DCMAKE_BUILD_TYPE="${{ matrix.config.build }}" -DCMAKE_DISABLE_FIND_PACKAGE_OpenSSL="${{ matrix.config.disable_openssl }}"
          cmake --build build --parallel -t retest

      - name: retest
        if: ${{ matrix.config.testing }}
        shell: cmd
        run: |
          build\test\retest.exe -a -v


================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  analyze:
    name: CodeQL Analyze
    runs-on: ubuntu-latest

    env:
      CMAKE_GENERATOR: Ninja

    steps:
    - name: Checkout repository
      uses: actions/checkout@v5

    - name: Initialize CodeQL
      uses: github/codeql-action/init@v3
      with:
        languages: cpp
        queries: security-extended

    - name: install packages
      run: |
        sudo apt-get update && sudo apt-get install -y ninja-build

    - run: |
        cmake -B build && cmake --build build

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v3



================================================
FILE: .github/workflows/coverage.yml
================================================
name: Coverage

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  coverage:
    runs-on: ubuntu-22.04

    env:
      CMAKE_GENERATOR: Ninja

    steps:
    - uses: actions/checkout@v5

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: install packages
      run: |
        sudo apt-get update && sudo apt-get install -y ninja-build

    - name: make
      run: | 
        cmake -B build -DCMAKE_C_FLAGS="--coverage" -DCMAKE_EXE_LINKER_FLAGS="--coverage" -DUSE_TRACE=ON
        cmake --build build -j -t retest

    - name: retest
      run: |
        ./build/test/retest -a -v
        ./build/test/retest -r -m select -v

    - name: gcov
      run: | 
        gcov build/**/*.o

    - name: install gcovr
      run: |
        pip install gcovr==5.0

    - name: coverage check
      run: |
        min_cov="70.0"
        mkdir html
        cov=$(~/.local/bin/gcovr -r . --html-details html/index.html --json-summary | jq .line_percent)
        echo "Coverage: ${cov}% (min $min_cov%)"
        exit $(echo "$cov < $min_cov" | bc -l)

    - name: coverage zip
      run: |
        zip -r coverage.zip html

    - uses: actions/upload-artifact@v4
      with:
        name: coverage
        path: coverage.zip
        retention-days: 7


================================================
FILE: .github/workflows/coverity.yml
================================================
name: Coverity Check

on:
  push:
    tags:
      - "*"
    branches:
      - coverity
    workflow_dispatch:

jobs:
  coverity:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v5
    - name: Prepare
      run: cmake -B ${{github.workspace}}/build
    - uses: vapier/coverity-scan-action@v1
      with:
        project: 'baresip%2Fre'
        token: ${{ secrets.COVERITY_SCAN_TOKEN }}
        command: make -C ${{github.workspace}}/build
        email: 'hallo@studio-link.de'


================================================
FILE: .github/workflows/fedora.yml
================================================
name: Fedora

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  build:
    runs-on: ${{ matrix.os }}
    container: fedora

    strategy:
      matrix:
        compiler: [clang]
        os: [ubuntu-latest]

    env:
      CC: ${{ matrix.compiler }}
      CMAKE_GENERATOR: Ninja

    steps:
    - uses: actions/checkout@v5
    - name: install devel tools
      run: |
        yum -y install gcc clang cmake make openssl-devel zlib-devel ninja-build

    - name: make info
      run: |
        echo "OS: ${{ matrix.os }}"
        echo "--- ${{ matrix.compiler }} DEBUG VERSION ---"
        ${{ matrix.compiler }} - --version
        cmake --version

    - name: make
      run: |
        cmake -B build -DCMAKE_C_FLAGS="-Werror" && cmake --build build -j 16 -t retest

    - name: retest
      run: |
        ./build/test/retest -r -v


================================================
FILE: .github/workflows/freebsd.yml
================================================
name: FreeBSD

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 20

    env:
      CMAKE_GENERATOR: Ninja

    steps:
    - uses: actions/checkout@v5

    - name: Test in FreeBSD
      id: test
      uses: vmactions/freebsd-vm@v1
      with:
        release: "14.4"
        usesh: true
        prepare: |

        run: |
          pkg update && pkg install -y ninja cmake
          freebsd-version
          cmake -B build && cmake --build build -t retest
          ./build/test/retest -r -v


================================================
FILE: .github/workflows/ios.yml
================================================
name: iOS

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  ios:
    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v5

    - name: build Xcode
      run: |
        cmake -B build_xcode -G Xcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 -DCMAKE_DISABLE_FIND_PACKAGE_OpenSSL=ON -DUSE_OPENSSL=OFF -DCMAKE_C_FLAGS="-Werror"
        cmake --build build_xcode -- CODE_SIGNING_ALLOWED=NO

    - name: normal build
      run: |
        cmake -B build -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 -DCMAKE_DISABLE_FIND_PACKAGE_OpenSSL=ON -DUSE_OPENSSL=OFF -DCMAKE_C_FLAGS="-Werror"
        cmake --build build -j


================================================
FILE: .github/workflows/lint.yml
================================================
name: lint

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  lint:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v5
    - name: ccheck
      run: |
        wget "https://raw.githubusercontent.com/baresip/baresip/main/test/ccheck.py"
        python3 ccheck.py
    - name: CMakeLint
      run: |
        pip install cmakelint
        find . -name "CMakeLists.txt" -exec ~/.local/bin/cmakelint {} +


================================================
FILE: .github/workflows/mingw.yml
================================================
name: MinGW-w64 Test

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  MinGW-w64-build:
    runs-on: ubuntu-22.04

    env:
      CMAKE_GENERATOR: Ninja

    steps:

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: "install packages"
      run: |
        sudo apt-get update && sudo apt-get install -y mingw-w64 ninja-build
    
    - uses: actions/checkout@v5 # needed for pr checkout

    - uses: sreimers/pr-dependency-action@v0.6
      with:
        name: baresip-win32
        repo: https://github.com/baresip/baresip-win32
        secret: ${{ secrets.GITHUB_TOKEN }}

    - uses: actions/checkout@v5
      with:
        path: baresip-win32/re

    - uses: actions/cache@v4
      id: openssl
      with:
        path: baresip-win32/openssl
        key: ${{ runner.os }}-mingw-openssl-3.5.0

    - name: "build openssl"
      if: steps.openssl.outputs.cache-hit != 'true'
      run: |
        wget https://www.openssl.org/source/openssl-3.5.0.tar.gz
        tar -xzf openssl-3.5.0.tar.gz
        mv openssl-3.5.0 baresip-win32/openssl
        make -j$(nproc) -C baresip-win32 openssl

    - name: "build"
      run: |
        cd baresip-win32 && make retest
    
    - uses: actions/upload-artifact@v4
      with:
        name: retest-exe
        path: baresip-win32/re/build/test/retest.exe
        retention-days: 1

  wintest:
    runs-on: windows-latest
    needs: MinGW-w64-build

    steps:
    - uses: actions/checkout@v5
    - uses: actions/download-artifact@v4
    - uses: sreimers/pr-dependency-action@v0.6
      with:
        name: re
        repo: https://github.com/baresip/re
        secret: ${{ secrets.GITHUB_TOKEN }}

    - name: "cv2pdb"
      run: |
        curl -L https://github.com/rainers/cv2pdb/releases/download/v0.52/cv2pdb-0.52.zip --output cv2pdb.zip
        unzip -o cv2pdb.zip
      shell: bash

    - name: "prepare retest.exe"
      run: mv retest-exe/retest.exe re/ && cd re && ../cv2pdb.exe ./retest.exe
      shell: bash

    - name: "run retest.exe"
      run: cd re && ./retest.exe -v -ri
      shell: bash


================================================
FILE: .github/workflows/musl.yml
================================================
name: Alpine (musl)

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  build:
    runs-on: ubuntu-latest
    container: alpine

    env:
      CMAKE_GENERATOR: Ninja

    steps:
    - uses: actions/checkout@v5
    - name: install devel tools
      run: |
        apk add musl-dev git cmake gcc g++ make binutils openssl-dev linux-headers zlib-dev ninja

    - name: make
      run: |
        cmake -B build -DCMAKE_C_FLAGS="-Werror"
        cmake --build build -j


================================================
FILE: .github/workflows/run-on-arch.yml
================================================
on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  build_job:
    # The host should always be linux
    runs-on: ubuntu-22.04
    name: Build on ${{ matrix.distro }} ${{ matrix.arch }}

    strategy:
      matrix:
        include:
          - arch: aarch64
            distro: bookworm
          - arch: armv7
            distro: ubuntu22.04

    steps:
      - uses: actions/checkout@v5

      - uses: uraimo/run-on-arch-action@v3
        name: Build artifact
        id: build
        with:
          arch: ${{ matrix.arch }}
          distro: ${{ matrix.distro }}

          # Not required, but speeds up builds
          githubToken: ${{ github.token }}

          install: |
            case "${{ matrix.distro }}" in
              ubuntu*|jessie|stretch|buster|bullseye|bookworm)
                apt-get update -q -y
                apt-get install -q -y cmake gcc g++ libssl-dev ninja-build
                ;;
            esac

          run: |
            cmake -G Ninja -B build -DCMAKE_C_FLAGS="-Werror"
            cmake --build build -j --target retest
            ./build/test/retest -r -v


================================================
FILE: .github/workflows/sanitizers.yml
================================================
name: Sanitizers

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  sanitizers:
    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os: [ubuntu-24.04]
        sanitizer: [thread, address, undefined]
    env:
      CC: clang-20
      CXX: clang++-20
      CMAKE_GENERATOR: Ninja
      CFLAGS: "-fsanitize=${{ matrix.sanitizer }} -fno-sanitize-recover=all -fno-sanitize=function"
      CXXFLAGS: "-fsanitize=${{ matrix.sanitizer }} -fno-sanitize-recover=all -fno-sanitize=function"
      ASAN_OPTIONS: fast_unwind_on_malloc=0

    steps:
    - uses: actions/checkout@v5

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: install packages
      run: |
        sudo apt-get update && sudo apt-get install -y ninja-build

    - name: Install clang-tools
      run: |
        wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
        sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main"
        sudo apt-get update && sudo apt-get install -y clang-tools-20

    - name: make info
      run: |
        echo "OS: ${{ matrix.os }}"
        clang - --version

    - name: cmake
      run: |
        cmake -B build -DHAVE_THREADS= && cmake --build build -j -t retest

    - name: retest
      run: |
        ./build/test/retest -av


================================================
FILE: .github/workflows/sonar.yml
================================================
name: Sonarcloud
on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    env:
      SONAR_SCANNER_VERSION: 5.0.1.3006
      SONAR_SERVER_URL: "https://sonarcloud.io"
      BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: 17
          distribution: 'oracle'
      - name: Download and set up sonar-scanner
        env:
          SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip
        run: |
          mkdir -p $HOME/.sonar
          curl -sSLo $HOME/.sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }} 
          unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/
          echo "$HOME/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH
      - name: Download and set up build-wrapper
        env:
          BUILD_WRAPPER_DOWNLOAD_URL: ${{ env.SONAR_SERVER_URL }}/static/cpp/build-wrapper-linux-x86.zip
        run: |
          curl -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip ${{ env.BUILD_WRAPPER_DOWNLOAD_URL }}
          unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/
          echo "$HOME/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH
      - name: Run build-wrapper
        run: |
          cmake -S . -B build
          build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build build/
      - name: Run sonar-scanner
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        run: |
          sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}"



================================================
FILE: .github/workflows/ssl.yml
================================================
name: OpenSSL no-deprecated and LibreSSL

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  ssl:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        ssl: [libressl, openssl]

    env:
      CMAKE_GENERATOR: Ninja
      OPENSSL_ROOT_DIR: "assets/${{ matrix.ssl }}"

    steps:
    - uses: actions/checkout@v5

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: install packages
      run: |
        sudo apt-get update && sudo apt-get install -y ninja-build

    - name: Download pre-compiled OpenSSL/LibreSSL
      run: |
        wget "https://github.com/baresip/tools/releases/download/v2026.05.0/assets.tar.gz"
        tar -xf assets.tar.gz

    - name: make
      run: |
        cmake -B build -DCMAKE_C_FLAGS="-Werror"
        cmake --build build -j
        cmake --build build -t retest

    - name: retest
      run: |
        ./build/test/retest -r -v


================================================
FILE: .github/workflows/strict-c.yml
================================================
name: Strict C checks

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  strict-c:
    runs-on: ubuntu-latest

    env:
      CMAKE_GENERATOR: Ninja

    steps:
    - uses: actions/checkout@v5

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: install packages
      run: |
        sudo apt-get update && sudo apt-get install -y ninja-build

    - name: make strict C99
      run: | 
        cmake -DCMAKE_C_STANDARD=99 -DCMAKE_C_EXTENSIONS=OFF  -DCMAKE_C_FLAGS="-Werror" -B build 
        cmake --build build
        rm -Rf build

    - name: make strict C11
      run: | 
        cmake -DCMAKE_C_STANDARD=11 -DCMAKE_C_EXTENSIONS=OFF -DCMAKE_C_FLAGS="-Werror" -B build
        cmake --build build
        rm -Rf build


================================================
FILE: .github/workflows/valgrind.yml
================================================
name: valgrind leak check

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  valgrind:
    runs-on: ubuntu-latest

    env:
      CMAKE_GENERATOR: Ninja

    steps:
    - uses: actions/checkout@v5

    - name: fix flaky azure mirrors
      if: ${{ runner.os == 'Linux' }}
      run: |
        sudo sed -i 's/azure\./de\./' /etc/apt/sources.list

    - name: install packages
      run: |
        sudo apt-get update && sudo apt-get install -y libssl-dev valgrind ninja-build

    - name: make
      run: |
        cmake -B build && cmake --build build -j -t retest

    - name: retest
      run: |
        valgrind --leak-check=full --show-reachable=yes --error-exitcode=42 ./build/test/retest -r -v


================================================
FILE: .gitignore
================================================
/build*
/dist
test.d
test.o
*stamp
*.previous
libre.a
libre.*dylib
libre.pc
libre.so*
*.gcov

# Windows build folder
Win32/*

# Visual studio config
mk/win32/baresip.vcxproj.user

# ctags
tags

# Vim swp files
*.swp

# clangd
.cache
compile_commands.json

# Visual studio config
mk/win32/*.vcxproj.user


================================================
FILE: CHANGELOG.md
================================================
# libre Changelog

All notable changes to libre will be documented in this file.

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.8.0 - 2026-05-13

## What's Changed
* ci/cmake_win: fix choco openssl by @sreimers in https://github.com/baresip/re/pull/1563
* test,sipreg: enable outbound testing by @alfredh in https://github.com/baresip/re/pull/1553
* ci/windows: roll back choco openssl version 3.6.2 by @alfredh in https://github.com/baresip/re/pull/1566
* hash: safety check for string by @cspiel1 in https://github.com/baresip/re/pull/1562
* ci/freebsd: use freebsd 14.4 and pkg update fixes by @sreimers in https://github.com/baresip/re/pull/1567
* tls: upgrade usage of legacy functions by @alfredh in https://github.com/baresip/re/pull/1565
* ci/coverage: increase minimum coverage to 70% by @alfredh in https://github.com/baresip/re/pull/1564
* tls: use SSL_set1_dnsname() for OpenSSL 4.0.0 and later by @alfredh in https://github.com/baresip/re/pull/1569
* tls/openssl/sni: fix OpenSSL 4 deprecation and refactor by @sreimers in https://github.com/baresip/re/pull/1570
* http: Send HTTP request with explicit server address by @fAuernigg in https://github.com/baresip/re/pull/1571
* tls/openssl: fix OpenSSL 4.0.0 consts by @sreimers in https://github.com/baresip/re/pull/1572
* ci/ssl: bump no-deprecated OpenSSL and LibreSSL by @sreimers in https://github.com/baresip/re/pull/1573
* readme: update supported OpenSSL and LibreSSL versions by @sreimers in https://github.com/baresip/re/pull/1574
* mem: update mem_debug_tail() doxygen comment by @alfredh in https://github.com/baresip/re/pull/1576


**Full Changelog**: https://github.com/baresip/re/compare/v4.7.0...v4.8.0


## v4.7.0 - 2026-04-07

### What's Changed
* test: use dns_rrlist_apply() in mock DNS-server by @alfredh in https://github.com/baresip/re/pull/1532
* sip: fix missing auth algorithm for known realm by @cspiel1 in https://github.com/baresip/re/pull/1535
* cmake,unixsock: always add unixsock header and functions by @sreimers in https://github.com/baresip/re/pull/1536
* test/dns: save error code from async work in DNS-test by @alfredh in https://github.com/baresip/re/pull/1538
* docs: update list of modules in README.md by @alfredh in https://github.com/baresip/re/pull/1537
* sipsess/modify: fix calling of offer handler by @maximilianfridrich in https://github.com/baresip/re/pull/1539
* http/server: cleanup  of http_verify_msg_d by @cspiel1 in https://github.com/baresip/re/pull/1542
* test: add permission handler to TURN test by @alfredh in https://github.com/baresip/re/pull/1541
* sip/dialog: fix OOM scenarios is sip_dialog_update by @maximilianfridrich in https://github.com/baresip/re/pull/1543
* test/turnsrv: add LIFETIME attribute to allocation response by @alfredh in https://github.com/baresip/re/pull/1545
* test: add testing of websock_tcp() in websock testcases by @alfredh in https://github.com/baresip/re/pull/1544
* test: split turn-test into permissions/channels by @alfredh in https://github.com/baresip/re/pull/1547
* test: add negative testcases in unixsock by @alfredh in https://github.com/baresip/re/pull/1546
* trace: flush operations must not run concurrently by @sreimers in https://github.com/baresip/re/pull/1550
* test,turn: add forced error code and test more combinations by @alfredh in https://github.com/baresip/re/pull/1551
* test: use TEST_ERR() to check async errors in RTCP-test by @alfredh in https://github.com/baresip/re/pull/1549
* test,odict: add testing of more api functions by @alfredh in https://github.com/baresip/re/pull/1552
* ci/abi: bump old version by @sreimers in https://github.com/baresip/re/pull/1560

**Full Changelog**: https://github.com/baresip/re/compare/v4.6.0...v4.7.0


## v4.6.0 - 2026-03-04

### What's Changed
* ci: bump OpenSSL version for Windows job by @alfredh in https://github.com/baresip/re/pull/1509
* async: print number of workers by @alfredh in https://github.com/baresip/re/pull/1511
* dns: remove usage of domain parameter from dns_srv_get() by @alfredh in https://github.com/baresip/re/pull/1510
* thread: with c23 once_flag is mandatory by @sreimers in https://github.com/baresip/re/pull/1516
* cmake: fix some cmakelint warnings by @alfredh in https://github.com/baresip/re/pull/1517
* test/dns: add AAAA tests by @cspiel1 in https://github.com/baresip/re/pull/1515
* test: add testcase for DNS over TCP by @alfredh in https://github.com/baresip/re/pull/1508
* mem: add mem_debug_tail by @sreimers in https://github.com/baresip/re/pull/1524
* rtp: rtp_listen_single() - try multiple ports by @cspiel1 in https://github.com/baresip/re/pull/1526
* test: add testcode for stun_server_discover() by @alfredh in https://github.com/baresip/re/pull/1522
* test: add testing of dns_rr_print() by @alfredh in https://github.com/baresip/re/pull/1518
* test: add testing of DNS query from handler by @alfredh in https://github.com/baresip/re/pull/1528
* dns: add dns_rr_dup and test_dns_rr_dup by @maximilianfridrich in https://github.com/baresip/re/pull/1512
* sip/request: duplicate RR entries from DNS by @maximilianfridrich in https://github.com/baresip/re/pull/1529
* test: add testing of DNS header code names by @alfredh in https://github.com/baresip/re/pull/1530

**Full Changelog**: https://github.com/baresip/re/compare/v4.5.0...v4.6.0


## v4.5.0 - 2026-01-28

### What's Changed
* net: remove net_if_getaddr4() -- deprecated by @alfredh in https://github.com/baresip/re/pull/1494
* test: add testing of dtls_set_handlers() api by @alfredh in https://github.com/baresip/re/pull/1495
* h265: use h264_find_startcode() -- duplicated code by @alfredh in https://github.com/baresip/re/pull/1493
* fmt: str_bool: reuse similar logic in pl_bool() by @alfredh in https://github.com/baresip/re/pull/1496
* net: cleanup fallback return by @sreimers in https://github.com/baresip/re/pull/1497
* fmt/print: add backtrace for incompatible format arguments by @sreimers in https://github.com/baresip/re/pull/1499
* btrace: fix for linux addr2line by @cspiel1 in https://github.com/baresip/re/pull/1500
* rtp: add RTP listen on single port by @cspiel1 in https://github.com/baresip/re/pull/1498
* copyright: update for new year by @Clusters in https://github.com/baresip/re/pull/1502
* async: do not hold lock during cb call by @cspiel1 in https://github.com/baresip/re/pull/1503
* docs: fix README.md document include by @sreimers in https://github.com/baresip/re/pull/1501
* tmr: improve thread list lock handling by @sreimers in https://github.com/baresip/re/pull/1504
* aumix: add aumix_source_put_auframe and deprecate aumix_source_put by @sreimers in https://github.com/baresip/re/pull/1505
* rtp/sess: fix ts_arrive calculation by @sreimers in https://github.com/baresip/re/pull/1506

## New Contributors
* @Clusters made their first contribution in https://github.com/baresip/re/pull/1502

**Full Changelog**: https://github.com/baresip/re/compare/v4.4.0...v4.5.0


## v4.4.0 - 2025-12-22

### What's Changed
* fmt: add pl_alloc_dup() by @cspiel1 in https://github.com/baresip/re/pull/1469
* tools: add genfir python script from librem by @alfredh in https://github.com/baresip/re/pull/1471
* test: av1 obu print by @alfredh in https://github.com/baresip/re/pull/1473
* genfir: upgrade to python 3 by @alfredh in https://github.com/baresip/re/pull/1472
* test: add negative conf tests by @alfredh in https://github.com/baresip/re/pull/1474
* turn: add channel peer mutex locking by @sreimers in https://github.com/baresip/re/pull/1478
* test: remove h265 fragment handling by @alfredh in https://github.com/baresip/re/pull/1477
* test: add testing of re_text2pcap_trace() by @alfredh in https://github.com/baresip/re/pull/1476
* dd: change dd_print() to struct re_printf *pf and add test by @alfredh in https://github.com/baresip/re/pull/1475
* rtp, stun/msg: doxygen fixes by @sreimers in https://github.com/baresip/re/pull/1479
* trace: add trace line handler by @sreimers in https://github.com/baresip/re/pull/1460
* trace: deref id after new trace handler by @sreimers in https://github.com/baresip/re/pull/1481
* test: add testing of dbg module by @alfredh in https://github.com/baresip/re/pull/1480
* aumix: implement aumix_source_set_id by @sreimers in https://github.com/baresip/re/pull/1482
* dns: check memory allocation in get_resolv_dns() by @alfredh in https://github.com/baresip/re/pull/1484
* test: check errors in turn_thread() test by @alfredh in https://github.com/baresip/re/pull/1485
* test: remove rotate from mock DNS-server by @alfredh in https://github.com/baresip/re/pull/1487
* test: check re_main_timeout() return value in test_rtp_listen_priv() by @alfredh in https://github.com/baresip/re/pull/1488
* h265,test: improve testing and usage of h265_nal_print() by @alfredh in https://github.com/baresip/re/pull/1486
* test: more testing of IPv6 protocol by @alfredh in https://github.com/baresip/re/pull/1490
* stun: remove PADDING attribute by @alfredh in https://github.com/baresip/re/pull/1491
* stun: remove natbd strings (deprecated) by @alfredh in https://github.com/baresip/re/pull/1489

**Full Changelog**: https://github.com/baresip/re/compare/v4.3.0...v4.4.0


## v4.3.0 - 2025-11-19

### What's Changed
* cmake: remove macOS include path by @mohd-akram in https://github.com/baresip/re/pull/1449
* test: sort testcases in alphabetical order by @alfredh in https://github.com/baresip/re/pull/1447
* test: increase coverage of websock test with protocol on/off by @alfredh in https://github.com/baresip/re/pull/1446
* sdp/media: fix sdp_media_align_formats pt handling by @sreimers in https://github.com/baresip/re/pull/1450
* dns: fix AAAA address comparison in getaddr_dup() by @alfredh in https://github.com/baresip/re/pull/1452
* test: add support for IPv6 DNS testing by @alfredh in https://github.com/baresip/re/pull/1454
* ci: add clang-21 by @sreimers in https://github.com/baresip/re/pull/1453
* sys/fs: improve fs_fread error handling by @sreimers in https://github.com/baresip/re/pull/1455
* test: compare DNS RR records data in order to increase test-coverage by @alfredh in https://github.com/baresip/re/pull/1458
* dns: correct comment in dnsc_query_srv() by @alfredh in https://github.com/baresip/re/pull/1457
* h265: Fix NAL Decode nuh_layer_id by @xiaokuang95 in https://github.com/baresip/re/pull/1456
* auframe: avoid auframe_bytes_to_ms division by zero by @sreimers in https://github.com/baresip/re/pull/1459
* aumix: add aumix_latency and new defaults by @sreimers in https://github.com/baresip/re/pull/1461
* dns: remove get_android_dns() by @alfredh in https://github.com/baresip/re/pull/1464
* test: add testing of DNS nameservers by @alfredh in https://github.com/baresip/re/pull/1462
* cmake/re-config: fix HAVE_THREADS discovery by @sreimers in https://github.com/baresip/re/pull/1466

### New Contributors
* @mohd-akram made their first contribution in https://github.com/baresip/re/pull/1449
* @xiaokuang95 made their first contribution in https://github.com/baresip/re/pull/1456

**Full Changelog**: https://github.com/baresip/re/compare/v4.2.0...v4.3.0


## v4.2.0 - 2025-10-15

### What's Changed
* test: add testcode for btrace module by @alfredh in https://github.com/baresip/re/pull/1414
* types: add ETIME fallback by @sreimers in https://github.com/baresip/re/pull/1420
* test: add testing of conf_get_bool() by @alfredh in https://github.com/baresip/re/pull/1419
* test/btrace: skip thread test by @sreimers in https://github.com/baresip/re/pull/1422
* Revert "dtls: remove dtls_set_handlers() -- unused" by @sreimers in https://github.com/baresip/re/pull/1421
* ice/icem: add icem_rcand_ready helper by @sreimers in https://github.com/baresip/re/pull/1424
* ice/sdp: remove mDNS AI_V4MAPPED and log late candidate by @sreimers in https://github.com/baresip/re/pull/1423
* tls: minor improvements to SNI and Common-name comparison by @alfredh in https://github.com/baresip/re/pull/1425
* tls: revert wrong match-checking in SNI function by @alfredh in https://github.com/baresip/re/pull/1427
* ci-windows: bump choco openssl version to 3.5.3 by @alfredh in https://github.com/baresip/re/pull/1426
* tls: sni - a null pointer check by @cspiel1 in https://github.com/baresip/re/pull/1430
* test: fix some minor typos by @alfredh in https://github.com/baresip/re/pull/1429
* dbg: remove dbg_close() -- unused by @alfredh in https://github.com/baresip/re/pull/1428
* ci,windows: bump choco openssl to 3.5.4 by @alfredh in https://github.com/baresip/re/pull/1433
* misc: fix some minor typos by @alfredh in https://github.com/baresip/re/pull/1432
* test: test both fragmented and non-fragmented H.265 packets by @alfredh in https://github.com/baresip/re/pull/1434
* test: add negative AES testcases by @alfredh in https://github.com/baresip/re/pull/1435
* test: add test for conf_apply() by @alfredh in https://github.com/baresip/re/pull/1436
* ci/android: Upgrade to API-level 29 (Android 10.0) by @alfredh in https://github.com/baresip/re/pull/1439
* ci/android: remove AVD cache by @sreimers in https://github.com/baresip/re/pull/1442
* ci/android: revert to android api level 26 by @sreimers in https://github.com/baresip/re/pull/1443
* bump version number to 4.2.0 by @alfredh in https://github.com/baresip/re/pull/1440

**Full Changelog**: https://github.com/baresip/re/compare/v4.1.0...v4.2.0


## v4.1.0 - 2025-09-10

### What's Changed
* ci: temporary workaround for choco openssl failure by @alfredh in https://github.com/baresip/re/pull/1395
* test: add support for IPv6 on UDP-test by @alfredh in https://github.com/baresip/re/pull/1390
* ci: enable Windows testing when OpenSSL is disabled by @alfredh in https://github.com/baresip/re/pull/1392
* websock: remove unused peer member by @alfredh in https://github.com/baresip/re/pull/1396
* test: add testing of udp_rxsz_set() and udp_sockbuf_set() by @alfredh in https://github.com/baresip/re/pull/1397
* ci/build: select xcode version 16.2 by @sreimers in https://github.com/baresip/re/pull/1400
* udp: combine udp_recv_helper() and udp_recv_packet() by @alfredh in https://github.com/baresip/re/pull/1398
* test: add support for UDP multicast test by @alfredh in https://github.com/baresip/re/pull/1402
* ci: update actions/checkout@v5 by @sreimers in https://github.com/baresip/re/pull/1403
* uri: remove uri_escape_user() by @alfredh in https://github.com/baresip/re/pull/1401
* uri: remove some unused escape functions by @alfredh in https://github.com/baresip/re/pull/1404
* test: add support for IPv6 and TURN by @alfredh in https://github.com/baresip/re/pull/1405
* test: add support for testing more DTLS-SRTP suites by @alfredh in https://github.com/baresip/re/pull/1408
* dtls: remove dtls_set_handlers() -- unused by @alfredh in https://github.com/baresip/re/pull/1407
* tls: remove tls_set_certificate_der() -- unused by @alfredh in https://github.com/baresip/re/pull/1410
* test: set low MTU in DTLS-test by @alfredh in https://github.com/baresip/re/pull/1411
* test: add support for TURN mock-server authentication by @alfredh in https://github.com/baresip/re/pull/1409
* tls: tls_set_resumption() -- change const enum to enum by @alfredh in https://github.com/baresip/re/pull/1412
* ci/abi: bump old abi by @sreimers in https://github.com/baresip/re/pull/1417
* ci/coverage: bump min coverage by @sreimers in https://github.com/baresip/re/pull/1416

**Full Changelog**: https://github.com/baresip/re/compare/v4.0.0...v4.1.0


## v4.0.0 - 2025-08-06

### What's Changed

This major release drops obsolete API functions, OpenSSL 1.1.1 support and support for old OS versions.
The breaking changes are discussed here: https://github.com/baresip/re/discussions/1372

* rem: remove backwards wrapper for au_calc_nsamp() by @alfredh in https://github.com/baresip/re/pull/1366
* rem: remove local macros, include stdint.h instead by @alfredh in https://github.com/baresip/re/pull/1369
* mod: remove unused MOD_PRE macro by @alfredh in https://github.com/baresip/re/pull/1370
* tcp: remove special case for mingw32/wine by @alfredh in https://github.com/baresip/re/pull/1367
* dd: update AV1 and DD docs by @alfredh in https://github.com/baresip/re/pull/1376
* test: fix formatted string arguments in URI testcode by @alfredh in https://github.com/baresip/re/pull/1375
* tls: drop OpenSSL 1.1.1 support by @sreimers in https://github.com/baresip/re/pull/1371
* Update supported OS versions by @sreimers in https://github.com/baresip/re/pull/1373
* readme: update supported compilers by @sreimers in https://github.com/baresip/re/pull/1374
* tls: disable tls_conn_change_cert for LibreSSL by @sreimers in https://github.com/baresip/re/pull/1377
* ci/ssl: bump ssl tools assets by @sreimers in https://github.com/baresip/re/pull/1127
* aubuf: remove unused struct auframe in ajb.c by @alfredh in https://github.com/baresip/re/pull/1378
* aubuf: remove unused private function plot_underrun() by @alfredh in https://github.com/baresip/re/pull/1380
* readme: bump supported GNU C library (glibc) 2.31 by @sreimers in https://github.com/baresip/re/pull/1379
* misc: remove deprecated functions/params by @sreimers in https://github.com/baresip/re/pull/1384
* uri: remove password field by @alfredh in https://github.com/baresip/re/pull/1382
* websock: increase test coverage by @alfredh in https://github.com/baresip/re/pull/1381
* udp: remove obsolete todo in udp_local_get() by @alfredh in https://github.com/baresip/re/pull/1386
* av1: remove av1_packetize_new() -- backwards compat wrapper by @alfredh in https://github.com/baresip/re/pull/1385
* tls: remove tls_set_selfsigned_rsa() -- use Elliptic Curve instead by @alfredh in https://github.com/baresip/re/pull/1388
* test: enable dtls_set_single() for DTLS client test by @alfredh in https://github.com/baresip/re/pull/1387

**Full Changelog**: https://github.com/baresip/re/compare/v3.24.0...v4.0.0


## v3.24.0 - 2025-07-09

### What's Changed
* list: add LIST_FOREACH_SAFE helper macro by @sreimers in https://github.com/baresip/re/pull/1343
* test: SDP interop testing by @alfredh in https://github.com/baresip/re/pull/1341
* ci/abi: bump old ref version by @sreimers in https://github.com/baresip/re/pull/1344
* list: improve already linked warning by @sreimers in https://github.com/baresip/re/pull/1345
* ci/mingw: use windows-latest by @sreimers in https://github.com/baresip/re/pull/1346
* ci/clang: use clang-20 by @sreimers in https://github.com/baresip/re/pull/1348
* av1: rename av1_packetize_new() and add wrapper by @alfredh in https://github.com/baresip/re/pull/1349
* trice: update header to match filename by @alfredh in https://github.com/baresip/re/pull/1350
* rtp/rr: fix fraction left shift promotion by @sreimers in https://github.com/baresip/re/pull/1353
* test/sipsess: cast rel100_mode by @sreimers in https://github.com/baresip/re/pull/1354
* test: print trice_debug to buffer to test debug functions by @alfredh in https://github.com/baresip/re/pull/1352
* trice: update doxygen documentation by @alfredh in https://github.com/baresip/re/pull/1351
* rtp: add rtp_seq_less inline function helper by @sreimers in https://github.com/baresip/re/pull/1355
* trice: remove trice_set_software() by @alfredh in https://github.com/baresip/re/pull/1359
* trice: always enable PRFLX candidates by @alfredh in https://github.com/baresip/re/pull/1360
* rtp: add TWCC packet definition helpers by @sreimers in https://github.com/baresip/re/pull/1357
* test: add support check for SRTP GCM test cases by @alfredh in https://github.com/baresip/re/pull/1361
* trice: add more doxygen comments by @alfredh in https://github.com/baresip/re/pull/1362
* prepare for release -- bump version to 3.24.0 by @alfredh in https://github.com/baresip/re/pull/1365

**Full Changelog**: https://github.com/baresip/re/compare/v3.23.0...v3.24.0


## v3.23.0 - 2025-06-04

### What's Changed
* fmt/pl: optimize pl_bool return early by @sreimers in https://github.com/baresip/re/pull/1311
* ci/coverage: bump min_cov by @sreimers in https://github.com/baresip/re/pull/1312
* av1: allow OBU type 0 (RESERVED) by @alfredh in https://github.com/baresip/re/pull/1313
* ci: remove step to install ninja on macOS by @alfredh in https://github.com/baresip/re/pull/1315
* rtp: remove unused function ntp2unix() by @alfredh in https://github.com/baresip/re/pull/1314
* tls: fix compiler warning with libressl 4.1.0 by @alfredh in https://github.com/baresip/re/pull/1318
* vhprintf: change from char to int to store error number from %m by @alfredh in https://github.com/baresip/re/pull/1319
* http: cancel verify_cert_tmr and skip init by @alfredh in https://github.com/baresip/re/pull/1317
* mem: update doxygen comments in mem_pool.c by @alfredh in https://github.com/baresip/re/pull/1320
* tls: fix LibreSSL SSL_verify_cb by @sreimers in https://github.com/baresip/re/pull/1322
* cmake,http: add HAVE_TLS1_3_POST_HANDSHAKE_AUTH by @sreimers in https://github.com/baresip/re/pull/1323
* av1: remove deprecated av1_packetize_high() by @alfredh in https://github.com/baresip/re/pull/1321
* tls: fix SSL_SESSION_is_resumable LibreSSL by @sreimers in https://github.com/baresip/re/pull/1324
* sip: exposed ltag and rtag in sip dialog by @gordongrech in https://github.com/baresip/re/pull/1326
* sipsess: add cancel reason to close handler by @KillingSpark in https://github.com/baresip/re/pull/1325
* h265: add H265_NAL_RSV_IRAP_VCL{22,23} by @alfredh in https://github.com/baresip/re/pull/1327
* test/httpauth: fix debug warning for digest response by @cspiel1 in https://github.com/baresip/re/pull/1332
* sha: use PROV_RSA_AES for CryptAcquireContext by @alfredh in https://github.com/baresip/re/pull/1331
* test: Add test for thread tss by @weili-jiang in https://github.com/baresip/re/pull/1334
* 100rel improvements by @maximilianfridrich in https://github.com/baresip/re/pull/1333
* test/async: Remove unsupported AI_V4MAPPED on Android by @weili-jiang in https://github.com/baresip/re/pull/1336
* test/sys: Use writeable datapath for fs_open test by @weili-jiang in https://github.com/baresip/re/pull/1335
* net: Support ifaddrs on Android API level >= 24 by @weili-jiang in https://github.com/baresip/re/pull/1338
* ci: Enable testing on Android by @weili-jiang in https://github.com/baresip/re/pull/1337
* test/sipsess: fix test_sipsess_100rel_answer_not_allowed by @maximilianfridrich in https://github.com/baresip/re/pull/1340

### New Contributors
* @gordongrech made their first contribution in https://github.com/baresip/re/pull/1326
* @KillingSpark made their first contribution in https://github.com/baresip/re/pull/1325

**Full Changelog**: https://github.com/baresip/re/compare/v3.22.0...v3.23.0


## v3.22.0 - 2025-04-30

### What's Changed
* rtp: remove unused int proto by @alfredh in https://github.com/baresip/re/pull/1296
* mbuf: null pointer checks for inline functions by @cspiel1 in https://github.com/baresip/re/pull/1294
* test: more coverage in rtcp_loop by @alfredh in https://github.com/baresip/re/pull/1295
* ci: remove version from choco install openssl by @alfredh in https://github.com/baresip/re/pull/1297
* net/linux/addrs: use malloc for buffer by @sreimers in https://github.com/baresip/re/pull/1298
* cmake: update cmake_minimum_required 3.18...4.0 by @sreimers in https://github.com/baresip/re/pull/1291
* ci: upgrade mingw to openssl 3.5.0 by @alfredh in https://github.com/baresip/re/pull/1299
* ci/abi: bump ref version by @sreimers in https://github.com/baresip/re/pull/1300
* rtp: RTCP Extended report by @shrim27 in https://github.com/baresip/re/pull/1302
* test: move test_rtcp_xr_rrtr to rtcp.c by @alfredh in https://github.com/baresip/re/pull/1306
* Handle "w" properly in the AV1 packetizer by @npcook in https://github.com/baresip/re/pull/1305
* test: add coverage of RTCP-XR DLRR by @alfredh in https://github.com/baresip/re/pull/1307
* av1: remove deprecated av1_packetize_one_w() by @alfredh in https://github.com/baresip/re/pull/1308

## New Contributors
* @shrim27 made their first contribution in https://github.com/baresip/re/pull/1302
* @npcook made their first contribution in https://github.com/baresip/re/pull/1305

**Full Changelog**: https://github.com/baresip/re/compare/v3.21.1...v3.22.0

## v3.21.1 - 2025-04-04

### What's Changed
* vidconv: fix vidconv_center underflows by @sreimers in https://github.com/baresip/re/pull/1287
* mem: fix buffer overflow in mem_realloc by @maximilianfridrich in https://github.com/baresip/re/pull/1289
* mem/mem_pool: use pointer-pointer to prevent heap-use-after-free by @sreimers in https://github.com/baresip/re/pull/1290

**Full Changelog**: https://github.com/baresip/re/compare/v3.21.0...v3.21.1


## v3.21.0 - 2025-03-26

### What's Changed
* fmt/pl: add pl_strncasecmp and tests by @sreimers in https://github.com/baresip/re/pull/1277
* ci: upgrade run-on-arch-action to fix random segfaults by @alfredh in https://github.com/baresip/re/pull/1280
* test: add testing of RTCP FIR-RFC5104 by @alfredh in https://github.com/baresip/re/pull/1281
* rtpext: add rtpext_find by @sreimers in https://github.com/baresip/re/pull/1282
* rtp: add rtp_ prefix to member functions by @alfredh in https://github.com/baresip/re/pull/1283
* rtp/rtcp: add rtcp_send_twcc and rtcp_rtpfb_twcc_encode by @sreimers in https://github.com/baresip/re/pull/1285
* list: optimize list_count by @sreimers in https://github.com/baresip/re/pull/1284
* bump version to 3.21.0 by @alfredh in https://github.com/baresip/re/pull/1286


**Full Changelog**: https://github.com/baresip/re/compare/v3.20.0...v3.21.0


## v3.20.0 - 2025-02-18

### What's Changed
* http/server: increase BUFSIZE_MAX to 1 MB and add http_set_max_body_size by @sreimers in https://github.com/baresip/re/pull/1262
* test: init err to zero (fixes cppcheck warning) by @alfredh in https://github.com/baresip/re/pull/1265
* test: add RTCP_APP to RTCP test by @alfredh in https://github.com/baresip/re/pull/1266
* mem,aubuf: add pre-allocated memory pool management by @sreimers in https://github.com/baresip/re/pull/1255
* test: increase test_oom levels and oom fixes by @sreimers in https://github.com/baresip/re/pull/1260
* mem/mem_pool: fix mem_pool_extend new member destructor by @sreimers in https://github.com/baresip/re/pull/1267
* ci: bump version and min_cov by @sreimers in https://github.com/baresip/re/pull/1268
* av1: remove duplicate/unused getbit.c by @alfredh in https://github.com/baresip/re/pull/1272
* test/cmake: link C++ lib by @sreimers in https://github.com/baresip/re/pull/1269
* http: restart timer for each chunk by @fAuernigg in https://github.com/baresip/re/pull/1273
* ci/valgrind: use ubuntu-latest by @sreimers in https://github.com/baresip/re/pull/1274

**Full Changelog**: https://github.com/baresip/re/compare/v3.19.0...v3.20.0


## v3.19.0 - 2025-01-15

### What's Changed
* fmt: fix pl trim methods and add tests by @maximilianfridrich in https://github.com/baresip/re/pull/1226
* sipsess: add sipsess_msg getter function by @cspiel1 in https://github.com/baresip/re/pull/1225
* rtp/sess: fix missing srate_tx locking by @sreimers in https://github.com/baresip/re/pull/1231
* rtcp: use rtcp_rtpfb_gnack_encode() function by @alfredh in https://github.com/baresip/re/pull/1233
* net/linux: add net_netlink_addrs by @sreimers in https://github.com/baresip/re/pull/1232
* tcp,udp: set TOS (TCLASS) for IPv6 sockets by @maximilianfridrich in https://github.com/baresip/re/pull/1218
* sys/fs: fix fs_fopen return null check by @sreimers in https://github.com/baresip/re/pull/1237
* test: remove mock tcp-server (unused) by @alfredh in https://github.com/baresip/re/pull/1235
* rtp: remove rtcp_psfb_sli_encode() (unused) by @alfredh in https://github.com/baresip/re/pull/1234
* ci/clang: bump clang-18 and use ubuntu 24.04 by @sreimers in https://github.com/baresip/re/pull/1236
* net/linux/addrs: fix point-to-point peer address bug by @sreimers in https://github.com/baresip/re/pull/1239
* ci/coverage: bump min_cov by @sreimers in https://github.com/baresip/re/pull/1241
* ci/sanitizers: bump clang and ubuntu by @sreimers in https://github.com/baresip/re/pull/1242
* net/linux/addrs: fix netlink kernel warnings by @sreimers in https://github.com/baresip/re/pull/1243
* rem: add au_ prefix to calc_nsamp() by @alfredh in https://github.com/baresip/re/pull/1244
* rem/vidconv: add vidconv_center and x and y source offsets by @sreimers in https://github.com/baresip/re/pull/1240
* test: add testcode for rem au-module by @alfredh in https://github.com/baresip/re/pull/1245
* mem: remove peak from memstat by @alfredh in https://github.com/baresip/re/pull/1238
* debian: replace with CPack DEB Generator by @sreimers in https://github.com/baresip/re/pull/1247
* copyright: happy new year 2025 by @sreimers in https://github.com/baresip/re/pull/1246
* test/vidconv: remove static struct test by @sreimers in https://github.com/baresip/re/pull/1248
* net/linux/addrs: use list instead of fixed array for interface up by @sreimers in https://github.com/baresip/re/pull/1251
* test: optional IPv6 for tcp/udp tos test by @alfredh in https://github.com/baresip/re/pull/1252
* cmake: update min requirement and use range by @sreimers in https://github.com/baresip/re/pull/1253
* rem/vid/frame: fix vidframe init by @sreimers in https://github.com/baresip/re/pull/1257
* atomic: fix compilation for C++ and Windows-ARM64 by @alfredh in https://github.com/baresip/re/pull/1259
* test: add test for C++ applications by @alfredh in https://github.com/baresip/re/pull/1254
* ci: use ubuntu-22.04 were needed by @sreimers in https://github.com/baresip/re/pull/1261
* cmake: enable compiler warnings for C only by @alfredh in https://github.com/baresip/re/pull/1263


**Full Changelog**: https://github.com/baresip/re/compare/v3.18.0...v3.19.0


## v3.18.0 - 2024-12-11

### What's Changed
* odict: add odict_pl_add() by @cspiel1 in https://github.com/baresip/re/pull/1208
* ci/build: remove Ubuntu 20.04, add 24.04, use GCC 14 on 24.04 by @robert-scheck in https://github.com/baresip/re/pull/1210
* test: vertical alignment of integration test names by @alfredh in https://github.com/baresip/re/pull/1212
* sip: update doxygen comment by @alfredh in https://github.com/baresip/re/pull/1215
* test/http: decrease test runs from 20 to 3 to decrease test time by @fAuernigg in https://github.com/baresip/re/pull/1216
* sip/transp: allow requests w/o Max-Forwards header by @cspiel1 in https://github.com/baresip/re/pull/1217
* test: remove unused fuzz mock by @alfredh in https://github.com/baresip/re/pull/1220
* rtp: use rtp_pt_is_rtcp() for RTCP demultiplexing by @alfredh in https://github.com/baresip/re/pull/1221
* aes: remove 192-bits CTR-mode (looks unused) by @alfredh in https://github.com/baresip/re/pull/1219
* rtp: send all RTCP packets as compound packets by @maximilianfridrich in https://github.com/baresip/re/pull/1222
* rtp/sess.c: lock rtcp_sess in rtcp_set_srate_tx to fix data race by @maximilianfridrich in https://github.com/baresip/re/pull/1223
* Update Doxyfile by @alfredh in https://github.com/baresip/re/pull/1224
* test: remove unused packet-filter mock by @alfredh in https://github.com/baresip/re/pull/1227
* bump version to 3.18.0 by @alfredh in https://github.com/baresip/re/pull/1230


**Full Changelog**: https://github.com/baresip/re/compare/v3.17.0...v3.18.0


## v3.17.0 - 2024-11-06

### What's Changed
* types: remove old BREAKPOINT macro by @alfredh in https://github.com/baresip/re/pull/1194
* dnsc: Fallback to getaddrinfo without any DNS servers by @weili-jiang in https://github.com/baresip/re/pull/1195
* dns/client: return ENOTSUP if no server or not getaddrinfo by @sreimers in https://github.com/baresip/re/pull/1196
* conf: add conf_get_float by @juha-h in https://github.com/baresip/re/pull/1198
* ci/run-on-arch: use ubuntu 22.04 by @sreimers in https://github.com/baresip/re/pull/1204
* thread: fix thrd_equal win32 handle by @sreimers in https://github.com/baresip/re/pull/1203
* test: add pktsize to test_h264_packet_base() by @alfredh in https://github.com/baresip/re/pull/1205
* tls: make tls_verify_handler() static by @alfredh in https://github.com/baresip/re/pull/1201
* types: fix clang-tidy warning (gcc bit fields workaround) by @sreimers in https://github.com/baresip/re/pull/1206

### New Contributors
* @weili-jiang made their first contribution in https://github.com/baresip/re/pull/1195

**Full Changelog**: https://github.com/baresip/re/compare/v3.16.0...v3.17.0


## v3.16.0 - 2024-10-02

### What's Changed
* thread: fix pthread_setname_np NetBSD by @leleliu008 in https://github.com/baresip/re/pull/1182
* ice: AI_V4MAPPED macro is missing on some BSD systems by @leleliu008 in https://github.com/baresip/re/pull/1181
* rtp/rtcp: add RTCP Generic NACK packet send (RFC 4585 6.2.1) by @sreimers in https://github.com/baresip/re/pull/1186
* main/fd_listen: return EMFILE if maxfds is reached by @sreimers in https://github.com/baresip/re/pull/1185
* ci: build retest for android by @alfredh in https://github.com/baresip/re/pull/1187
* test: minor cmake cleanup by @alfredh in https://github.com/baresip/re/pull/1188
* test: fix re_printf format string for multithread test by @alfredh in https://github.com/baresip/re/pull/1190
* ci: run retest on Fedora by @alfredh in https://github.com/baresip/re/pull/1191

### New Contributors
* @leleliu008 made their first contribution in https://github.com/baresip/re/pull/1182

**Full Changelog**: https://github.com/baresip/re/compare/v3.15.0...v3.16.0


## v3.15.0 - 2024-08-28

### What's Changed
* misc: remove HAVE_INET6 by @sreimers in https://github.com/baresip/re/pull/1159
* dns/rr: fix dns_rr_print underflow by @sreimers in https://github.com/baresip/re/pull/1162
* test/async: remove AI_ADDRCONFIG by @sreimers in https://github.com/baresip/re/pull/1165
* retest: update usage message by @robert-scheck in https://github.com/baresip/re/pull/1166
* add filter_registrar option by @maximilianfridrich in https://github.com/baresip/re/pull/1160
* sa: add utility function to check if address is multicast by @cmfitch1 in https://github.com/baresip/re/pull/1168
* tls/sni: skip SNI check if we are client or server_name absent by @maximilianfridrich in https://github.com/baresip/re/pull/1169
* tls/sni: do not enable client verification when SNI matching is done by @maximilianfridrich in https://github.com/baresip/re/pull/1172
* dd: Dependency Descriptor RTP header extension by @alfredh in https://github.com/baresip/re/pull/1170
* aubuf: add AUBUF_TRACE mode with id by @sreimers in https://github.com/baresip/re/pull/1174
* sip/transp: add client certificate to all TLS transports by @maximilianfridrich in https://github.com/baresip/re/pull/1173
* tmr: add TMR_INIT by @sreimers in https://github.com/baresip/re/pull/1177
* sipsess/reply: fix heap-use-after-free bug by @sreimers in https://github.com/baresip/re/pull/1179
* version 3.15.0 by @alfredh in https://github.com/baresip/re/pull/1180

### New Contributors
* @cmfitch1 made their first contribution in https://github.com/baresip/re/pull/1168

**Full Changelog**: https://github.com/baresip/re/compare/v3.14.0...v3.15.0


## [v3.14.0] - 2024-07-23

### What's Changed
* aumix: use mutex_alloc() by @alfredh in https://github.com/baresip/re/pull/1142
* sipreg/reg.c: stop retrying registers early after 401/407 by @maximilianfridrich in https://github.com/baresip/re/pull/1143
* aumix: add locking in aumix_source_count() by @alfredh in https://github.com/baresip/re/pull/1145
* test: init err in test_sip_auth_encode() by @alfredh in https://github.com/baresip/re/pull/1146
* sipreg: refactor response_handler else optimization by @sreimers in https://github.com/baresip/re/pull/1147
* vidmix: improve mutex usage by @alfredh in https://github.com/baresip/re/pull/1148
* udp/mcast: use group scopeid as interface for IPv6 by @maximilianfridrich in https://github.com/baresip/re/pull/1149
* .clangd: suppress -Wgnu-zero-variadic-macro-arguments by @maximilianfridrich in https://github.com/baresip/re/pull/1150
* ci/build: use only macos-latest by @sreimers in https://github.com/baresip/re/pull/1153
* cmake: fix resolv on FreeBSD by @sreimers in https://github.com/baresip/re/pull/1152
* test: use h264_stap_decode_annexb() by @alfredh in https://github.com/baresip/re/pull/1151
* sipsess/reply: terminate session if no (PR)ACK received after 64*T1 by @maximilianfridrich in https://github.com/baresip/re/pull/1155
* rtcp: send BYE manually by @alfredh in https://github.com/baresip/re/pull/1154
* cmake: check accept4 only on linux by @sreimers in https://github.com/baresip/re/pull/1157
* cmake: fix iOS HAVE_ROUTE_LIST and darwin dns by @sreimers in https://github.com/baresip/re/pull/1158
* test: check if header and payload is set by @alfredh in https://github.com/baresip/re/pull/1161


**Full Changelog**: https://github.com/baresip/re/compare/v3.13.0...v3.14.0


## [v3.13.0] - 2024-06-19

### What's Changed
* http/client: use dynamically sized buffers for PEM setters by @maximilianfridrich in https://github.com/baresip/re/pull/1117
* tls: allow secure TLS renegotiation by @maximilianfridrich in https://github.com/baresip/re/pull/1121
* tls: always enable USE_OPENSSL_SRTP by @alfredh in https://github.com/baresip/re/pull/1122
* main: remove call to openssl init by @alfredh in https://github.com/baresip/re/pull/1120
* sip/transp: Allow ACK w/o Max-Forwards header by @juha-h in https://github.com/baresip/re/pull/1124
* net: remove NET_ADDRSTRLEN by @alfredh in https://github.com/baresip/re/pull/1123
* ci/ios: increase min deployment target by @sreimers in https://github.com/baresip/re/pull/1126
* tls/http: add certificate chain setters by @maximilianfridrich in https://github.com/baresip/re/pull/1125
* sipsess/connect: set sess->established immediately on 200 receival by @maximilianfridrich in https://github.com/baresip/re/pull/1128
* test/cmake: add crypt32 linking for WIN32 by @sreimers in https://github.com/baresip/re/pull/1130
* ci/sanitizers: use clang-17 by @sreimers in https://github.com/baresip/re/pull/1131
* ci/sanitizer: add undefined behavior sanitizer by @sreimers in https://github.com/baresip/re/pull/1132
* sip: verify call-id, to-tag, cseq of INVITE response by @maximilianfridrich in https://github.com/baresip/re/pull/1129
* ci: remove one unneeded directory change by @alfredh in https://github.com/baresip/re/pull/1134
* test: change GENERATOR_SSRC from define to type by @alfredh in https://github.com/baresip/re/pull/1133
* tls: refactoring SNI ctx usage for libressl support by @sreimers in https://github.com/baresip/re/pull/1136
* test: add test_rtcp_loop() by @alfredh in https://github.com/baresip/re/pull/1137
* ci/coverage: increase min coverage by @sreimers in https://github.com/baresip/re/pull/1138
* ci/coverage: use json summary and upload html details by @sreimers in https://github.com/baresip/re/pull/1139
* sip: add host param to sip_send_conn by @sreimers in https://github.com/baresip/re/pull/1141


**Full Changelog**: https://github.com/baresip/re/compare/v3.12.0...v3.13.0

## [v3.12.0] - 2024-05-15

### What's Changed
* cmake: fix static library build (vcpkg) by @alfredh in https://github.com/baresip/re/pull/1096
* h264: add STAP-A decode with long startcodes by @alfredh in https://github.com/baresip/re/pull/1101
* sess,request: deref request and ctrans immediately by @maximilianfridrich in https://github.com/baresip/re/pull/1099
* ua: enforce magic cookie in Via branch by @maximilianfridrich in https://github.com/baresip/re/pull/1102
* sip/auth: SHA-256 digest algorithm support by @sreimers in https://github.com/baresip/re/pull/1103
* ci/coverage: increase min. coverage by @sreimers in https://github.com/baresip/re/pull/1106
* rtp: fix correct logging text by @alfredh in https://github.com/baresip/re/pull/1109
* types: fix RE_ARG_SIZE gcc bit fields by @sreimers in https://github.com/baresip/re/pull/1110
* fmt: use re_fprintf instead of DEBUG_WARNING to avoid deadlock by @alfredh in https://github.com/baresip/re/pull/1112
* dbg: remove support for logfile by @alfredh in https://github.com/baresip/re/pull/1111
* test: add usage of rtcp_msg_print() by @alfredh in https://github.com/baresip/re/pull/1105
* http/client: add setter to disable tls server verification by @maximilianfridrich in https://github.com/baresip/re/pull/1114
* dbg: mutex should be unlocked while calling print handler by @alfredh in https://github.com/baresip/re/pull/1113
* Update README.md by @alfredh in https://github.com/baresip/re/pull/1115
* http/request: reset body mbuf pos on re-sending by @maximilianfridrich in https://github.com/baresip/re/pull/1116
* bump version by @alfredh in https://github.com/baresip/re/pull/1118
* cmake: bump soversion by @alfredh in https://github.com/baresip/re/pull/1119


**Full Changelog**: https://github.com/baresip/re/compare/v3.11.0...v3.12.0


## [v3.11.0] - 2024-04-09

### What's Changed
* ci/clang-analyze: bump clang version and fix status-bugs by @sreimers in https://github.com/baresip/re/pull/1079
* main: Flush list of deleted fhs on `fd_poll` errors by @Lastique in https://github.com/baresip/re/pull/1081
* main: Use slist for fhs delete list. by @Lastique in https://github.com/baresip/re/pull/1082
* http/server: fix wrong sizeof in verify_msg by @akscf in https://github.com/baresip/re/pull/1083
* ci/sanitizers: add mmap rnd_bits workaround by @sreimers in https://github.com/baresip/re/pull/1086
* rtcp: add printing of TWCC packet by @alfredh in https://github.com/baresip/re/pull/1084
* include: add re_h264.h to re.h by @alfredh in https://github.com/baresip/re/pull/1087
* sdp: add sdp media lattr apply function the same way as for rattr by @cHuberCoffee in https://github.com/baresip/re/pull/1089
* av1: improve packetizer by @alfredh in https://github.com/baresip/re/pull/1088
* test: minor H.264 improvements by @alfredh in https://github.com/baresip/re/pull/1090
* tls: add session resumption setter by @maximilianfridrich in https://github.com/baresip/re/pull/1091
* thread/posix: optimize handler and fix gcc arm32 warning by @sreimers in https://github.com/baresip/re/pull/1093
* h264: fix for Annex-B bitstreams with 4-byte startcode by @alfredh in https://github.com/baresip/re/pull/1092
* ci/arch: add armv7 check by @sreimers in https://github.com/baresip/re/pull/1085
* main,httpauth: fix different from the declaration by @jobo-zt in https://github.com/baresip/re/pull/1095
* httpauth: fix doxygen comment by @alfredh in https://github.com/baresip/re/pull/1097

### New Contributors
* @akscf made their first contribution in https://github.com/baresip/re/pull/1083

**Full Changelog**: https://github.com/baresip/re/compare/v3.10.0...v3.11.0


## [v3.10.0] - 2024-03-06

## What's Changed
* transp: deref qent only if qentp is not set by @maximilianfridrich in https://github.com/baresip/re/pull/1061
* sipsess: fix doxygen comments by @alfredh in https://github.com/baresip/re/pull/1062
* aufile: fix doxygen comment by @alfredh in https://github.com/baresip/re/pull/1063
* ci/codeql: bump action v3 by @sreimers in https://github.com/baresip/re/pull/1064
* misc: text2pcap helpers (RTP/RTCP capturing) by @sreimers in https://github.com/baresip/re/pull/1065
* ci/mingw: bump upload/download-artifact and cache versions by @sreimers in https://github.com/baresip/re/pull/1066
* transp,tls: add TLS client verification by @maximilianfridrich in https://github.com/baresip/re/pull/1059
* fmt/text2pcap: cleanup by @sreimers in https://github.com/baresip/re/pull/1067
* ci/android: cache openssl build by @sreimers in https://github.com/baresip/re/pull/1068
* ci/misc: fix double push/pull runs by @sreimers in https://github.com/baresip/re/pull/1069
* fmt/text2pcap: fix coverity return value warning by @sreimers in https://github.com/baresip/re/pull/1070
* sipsess/listen: improve glare handling by @maximilianfridrich in https://github.com/baresip/re/pull/1071
* conf: add conf_get_i32 by @sreimers in https://github.com/baresip/re/pull/1072


**Full Changelog**: https://github.com/baresip/re/compare/v3.9.0...v3.10.0


## [v3.9.0] - 2024-01-31

## What's Changed
* http: fix doxygen by @cspiel1 in https://github.com/baresip/re/pull/1033
* types: remove old ARRAY_SIZE macro by @alfredh in https://github.com/baresip/re/pull/1034
* cmake: bump minimum to version 3.14 by @alfredh in https://github.com/baresip/re/pull/1030
* test: use re_is_aligned() by @alfredh in https://github.com/baresip/re/pull/1035
* sipsess: refactor and simplify SDP negotiation state by @maximilianfridrich in https://github.com/baresip/re/pull/1016
* bump year by @sreimers in https://github.com/baresip/re/pull/1038
* cmake,pc: fix static library build by @alfredh in https://github.com/baresip/re/pull/1036
* rx thread activate by @cspiel1 in https://github.com/baresip/re/pull/1037
* test: fix cppcheck warnings by @alfredh in https://github.com/baresip/re/pull/1040
* test: move test_rtcp_decode_badmsg() to separate testcase by @alfredh in https://github.com/baresip/re/pull/1041
* rtp: lock more fields from rtcp_sess by @cspiel1 in https://github.com/baresip/re/pull/1039
* rtp: lock rtcp_set_srate() by @cspiel1 in https://github.com/baresip/re/pull/1043
* test: HAVE_INET6 is always defined by @alfredh in https://github.com/baresip/re/pull/1046
* ci: add run-on-arch for ARM64 linux by @alfredh in https://github.com/baresip/re/pull/1045
* httpauth: digest verification rfc 7616 by @cHuberCoffee in https://github.com/baresip/re/pull/1044
* tmr: prevent race condition on cancel by @sreimers in https://github.com/baresip/re/pull/1048
* aubuf: fix coverity defect by @alfredh in https://github.com/baresip/re/pull/1051
* btrace: fix coverity warning by @alfredh in https://github.com/baresip/re/pull/1049
* ci/win: downgrade openssl by @sreimers in https://github.com/baresip/re/pull/1054
* docs: update README by @alfredh in https://github.com/baresip/re/pull/1053
* http: client - set scopeid fixes HTTP requests for IPv6ll by @cspiel1 in https://github.com/baresip/re/pull/1055
* rtp: add rtp_source_ prefix to RTP source api by @alfredh in https://github.com/baresip/re/pull/1052
* rtp: make struct rtp_source public by @alfredh in https://github.com/baresip/re/pull/1057
* rtp: sess - fix coverity warning by @cspiel1 in https://github.com/baresip/re/pull/1058
* mk: bump version to 3.9.0 by @alfredh in https://github.com/baresip/re/pull/1060


**Full Changelog**: https://github.com/baresip/re/compare/v3.8.0...v3.9.0


## [v3.8.0] - 2023-12-27

## What's Changed
* Update README.md by @alfredh in https://github.com/baresip/re/pull/1013
* rem/aufile: aufile_get_length use aufmt_sample_size by @larsimmisch in https://github.com/baresip/re/pull/1011
* rem/aufile: test and fix aufile_set_position nread by @larsimmisch in https://github.com/baresip/re/pull/1010
* ci/ssl: bump assets release by @sreimers in https://github.com/baresip/re/pull/1014
* readme: update supported openssl versions by @sreimers in https://github.com/baresip/re/pull/1015
* ci: upgrade android to openssl 3.2.0 by @alfredh in https://github.com/baresip/re/pull/1017
* sipsess/connect: don't create a dialog for 100 responses by @maximilianfridrich in https://github.com/baresip/re/pull/1018
* aubuf: fix build with re_trace_event by @cspiel1 in https://github.com/baresip/re/pull/1019
* trace: fix coverity warnings by @alfredh in https://github.com/baresip/re/pull/1024
* aumix: fix coverity defect in destructor by @alfredh in https://github.com/baresip/re/pull/1025
* main: fix doxygen comment by @alfredh in https://github.com/baresip/re/pull/1026
* connect: do not enforce Contact header in 1XX responses with To tag by @maximilianfridrich in https://github.com/baresip/re/pull/1028
* test/sipsess: test re-INVITE with wait for ACK by @cspiel1 in https://github.com/baresip/re/pull/1027
* dialog: fix rtags of forking INVITE by @maximilianfridrich in https://github.com/baresip/re/pull/1023
* cmake: add RE_LIBS config and add atomic check by @sreimers in https://github.com/baresip/re/pull/1029
* ci: use actions/checkout@v4 by @robert-scheck in https://github.com/baresip/re/pull/1031

**Full Changelog**: https://github.com/baresip/re/compare/v3.7.0...v3.8.0


## [v3.7.0] - 2023-11-06

## What's Changed
* trace: add id handling by @sreimers in https://github.com/baresip/re/pull/981
* fmt/pl: add pl_alloc_str by @sreimers in https://github.com/baresip/re/pull/983
* ci/freebsd: limit runtime to 20 mins by @sreimers in https://github.com/baresip/re/pull/985
* Httpauth digest response by @cHuberCoffee in https://github.com/baresip/re/pull/944
* dialog: REVERT fix rtags of forking INVITE with 100rel (#947) by @juha-h in https://github.com/baresip/re/pull/986
* ice: AI_V4MAPPED doesn't exist on OpenBSD by @landryb in https://github.com/baresip/re/pull/989
* test: call - add call on-hold/resume test by @cspiel1 in https://github.com/baresip/re/pull/990
* async: fix re_async_cancel mqueue handling by @sreimers in https://github.com/baresip/re/pull/995
* async: clear callback function pointer after use (#992) by @cspiel1 in https://github.com/baresip/re/pull/993
* Update README.md: Fix link in section Examples. by @Wolf-SO in https://github.com/baresip/re/pull/991
* ci/abi: bump version by @sreimers in https://github.com/baresip/re/pull/1000
* rtp: make flag rtcp_mux atomic by @cspiel1 in https://github.com/baresip/re/pull/997
* cmake,udp: improve QOS_FLOWID and PQOS_FLOWID detection by @sreimers in https://github.com/baresip/re/pull/1002
* types: extend RE_ARG to 32 by @sreimers in https://github.com/baresip/re/pull/1003
* sip/transp: add win32 local transport addr fallback by @sreimers in https://github.com/baresip/re/pull/1001
* cmake/config: set HAVE_THREADS only if threads.h by @sreimers in https://github.com/baresip/re/pull/1005
* ci/freebsd: update vmactions/freebsd-vm@v1 by @sreimers in https://github.com/baresip/re/pull/1006
* Coverity httpauth fixes by @sreimers in https://github.com/baresip/re/pull/1007
* rem/aufile: fix aufile_get_length calculations by @larsimmisch in https://github.com/baresip/re/pull/1008

## New Contributors
* @Wolf-SO made their first contribution in https://github.com/baresip/re/pull/991

**Full Changelog**: https://github.com/baresip/re/compare/v3.6.0...v3.7.0

## [v3.6.2] - 2023-11-06

## What's Changed
sip/transp: add win32 local transport addr fallback (fixes TCP/TLS register)


## [v3.6.1] - 2023-11-03

## What's Changed
ice: AI_V4MAPPED doesn't exist on OpenBSD #989
dialog: REVERT fix rtags of forking INVITE with 100rel (#947) #986
debian: fix version number


## [v3.6.0] - 2023-10-17

## What's Changed
* ci/coverage: increase min. coverage by @sreimers in https://github.com/baresip/re/pull/958
* Implement aufile_set_position by @larsimmisch in https://github.com/baresip/re/pull/943
* dialog: fix rtags of forking INVITE with 100rel by @maximilianfridrich in https://github.com/baresip/re/pull/947
* tls/alloc: set default min proto TLS 1.2 by @sreimers in https://github.com/baresip/re/pull/948
* test: init err to 0 in sdp test (cppcheck) by @alfredh in https://github.com/baresip/re/pull/959
* main: fd_listen fhs alloc rewrite by @sreimers in https://github.com/baresip/re/pull/805
* Expand RE_BREAKPOINT macro on ARM64 by @larsimmisch in https://github.com/baresip/re/pull/961
* jbuf: trace data for plot by @cspiel1 in https://github.com/baresip/re/pull/964
* trace: use global trace log by @sreimers in https://github.com/baresip/re/pull/965
* main: use ifdef for RE_TRACE_ENABLED by @sreimers in https://github.com/baresip/re/pull/966
* test/hexdump: hide output by @sreimers in https://github.com/baresip/re/pull/968
* trace: remove global default trace json by @sreimers in https://github.com/baresip/re/pull/969
* ci/ssl: use tools repo and new assets by @sreimers in https://github.com/baresip/re/pull/972
* fmt: doxygen correction in print.c by @cspiel1 in https://github.com/baresip/re/pull/973
* trace: use only explicit RE_TRACE_ENABLED by cmake by @sreimers in https://github.com/baresip/re/pull/974
* cmake: enable C11 for Windows (not MINGW) by @alfredh in https://github.com/baresip/re/pull/970
* ci/coverage: lower min. coverage by @sreimers in https://github.com/baresip/re/pull/975
* jbuf: move jbuf to baresip by @cspiel1 in https://github.com/baresip/re/pull/971
* ci/coverage: improve coverage (enable trace) by @sreimers in https://github.com/baresip/re/pull/976
* ci: bump pr-dependency-action@v0.6 by @sreimers in https://github.com/baresip/re/pull/977
* ice: mDNS refactoring by @sreimers in https://github.com/baresip/re/pull/934
* trace: add flush worker and optimize memory usage by @sreimers in https://github.com/baresip/re/pull/967
* rtp: fix video jitter calculation and add arrival time rtp header by @sreimers in https://github.com/baresip/re/pull/978
* ci: remove DARWIN compile flag from iOS build by @alfredh in https://github.com/baresip/re/pull/979
* thread: add trace thread name logging by @sreimers in https://github.com/baresip/re/pull/980
* ci/coverage: reduce min. coverage by @sreimers in https://github.com/baresip/re/pull/982


**Full Changelog**: https://github.com/baresip/re/compare/v3.5.1...v3.6.0

## [v3.5.1] - 2023-09-12

## What's Changed
* cmake: fix RELEASE definition for older cmake releases by @sreimers in https://github.com/baresip/re/pull/953
* ci/build: add release build check by @sreimers in https://github.com/baresip/re/pull/954
* cmake: fix definitions for older cmake by @sreimers in https://github.com/baresip/re/pull/955

**Full Changelog**: https://github.com/baresip/re/compare/v3.5.0...v3.5.1

## [v3.5.0] - 2023-09-12

## What's Changed
* ci/sonar: update scanner and java version by @sreimers in https://github.com/baresip/re/pull/895
* ci/sonar: fix java distribution by @sreimers in https://github.com/baresip/re/pull/897
* udp: add doxygen comments by @alfredh in https://github.com/baresip/re/pull/896
* tls: fix some doxygen warnings by @alfredh in https://github.com/baresip/re/pull/894
* mk: add release target by @sreimers in https://github.com/baresip/re/pull/901
* types: add re_assert and re_assert_se definition by @sreimers in https://github.com/baresip/re/pull/900
* btrace improvements by @sreimers in https://github.com/baresip/re/pull/902
* Safe RE_VA_ARG helpers by @sreimers in https://github.com/baresip/re/pull/758
* mbuf: add safe mbuf_printf by @sreimers in https://github.com/baresip/re/pull/899
* auth: cast time_t timestamp by @sreimers in https://github.com/baresip/re/pull/903
* mbuf: add mbuf_write_ptr and mbuf_read_ptr by @sreimers in https://github.com/baresip/re/pull/898
* ci/mingw: remove cmake workaround by @sreimers in https://github.com/baresip/re/pull/906
* tls: assume OpenSSL version 1.1.1 or later by @alfredh in https://github.com/baresip/re/pull/907
* cmake: cleanup, remove unused define USE_OPENSSL_DTLS by @alfredh in https://github.com/baresip/re/pull/908
* test/turn: use mutex instead atomic  by @sreimers in https://github.com/baresip/re/pull/909
* stun: remove unused struct members by @alfredh in https://github.com/baresip/re/pull/910
* stun: complete doxygen for struct by @alfredh in https://github.com/baresip/re/pull/912
* tcp,udp: full IPv6 dual-stack socket support by @sreimers in https://github.com/baresip/re/pull/911
* aufile: add methods to get size in bytes/length in ms by @larsimmisch in https://github.com/baresip/re/pull/913
* async: signal ESHUTDOWN to all open worker callbacks by @sreimers in https://github.com/baresip/re/pull/915
* dns/client: fix async getaddr query abort (not thread safe) by @sreimers in https://github.com/baresip/re/pull/914
* async,dns/client: replace ESHUTDOWN with ECANCELED and optimize err handling by @sreimers in https://github.com/baresip/re/pull/918
* sip: remove unused local variable by @cspiel1 in https://github.com/baresip/re/pull/920
* dns/client: optimize udp timeout by @sreimers in https://github.com/baresip/re/pull/916
* ice: add candidate sdp mdns support by @sreimers in https://github.com/baresip/re/pull/917
* ice/icesdp: fix freeaddrinfo by @sreimers in https://github.com/baresip/re/pull/923
* retest: fix format string in test_listcases for size_t argument by @cHuberCoffee in https://github.com/baresip/re/pull/922
* httpauth: http digest challenge request using RFC 7616 by @cHuberCoffee in https://github.com/baresip/re/pull/919
* types: fix RE_ARG_SIZE default argument promotions by @sreimers in https://github.com/baresip/re/pull/924
* sip: fix TCP source port by @cspiel1 in https://github.com/baresip/re/pull/921
* fmt/print: add 64-bit length modifier %Li, %Ld and %Lu by @sreimers in https://github.com/baresip/re/pull/905
* fmt/print: improve print RE_VA_ARG debugging by @sreimers in https://github.com/baresip/re/pull/925
* sip/request: fix check return code (found by coverity) by @sreimers in https://github.com/baresip/re/pull/926
* httpauth/digest: use %L instead of PRI*64 macros by @sreimers in https://github.com/baresip/re/pull/927
* types: add RE_ARG_SIZE struct pl (avoids wrong print fmt %r usage) by @sreimers in https://github.com/baresip/re/pull/928
* dns/client: fix getaddrinfo err handling and mem_ref dnsc by @sreimers in https://github.com/baresip/re/pull/929
* rtp/rtp_debug: fix printf size format by @sreimers in https://github.com/baresip/re/pull/933
* main: optimize re_lock and re_unlock by @alfredh in https://github.com/baresip/re/pull/935
* hexdump: fix format and add test by @alfredh in https://github.com/baresip/re/pull/936
* test: fix bug in performance test format by @alfredh in https://github.com/baresip/re/pull/937
* types: remove some duplicated error codes by @alfredh in https://github.com/baresip/re/pull/939
* test: minor improvements in remain test by @alfredh in https://github.com/baresip/re/pull/931
* dbg: remove unused functions by @sreimers in https://github.com/baresip/re/pull/941
* cmake/re-config: add default CMAKE_BUILD_TYPE and fix RELEASE definition by @sreimers in https://github.com/baresip/re/pull/945

## New Contributors
* @larsimmisch made their first contribution in https://github.com/baresip/re/pull/913

**Full Changelog**: https://github.com/baresip/re/compare/v3.4.0...v3.5.0

## [v3.4.0] - 2023-08-09

## What's Changed
* rtpext: uniform parameter name fixes doxygen warning by @cspiel1 in https://github.com/baresip/re/pull/868
* mk: add rem to doxygen inputs by @cspiel1 in https://github.com/baresip/re/pull/869
* vidmix: allow different pixel format by @sreimers in https://github.com/baresip/re/pull/864
* ajb doxygen by @cspiel1 in https://github.com/baresip/re/pull/870
* aes: correct parameters for stub by @cspiel1 in https://github.com/baresip/re/pull/872
* ci/build: fail on cmake and compile warnings by @sreimers in https://github.com/baresip/re/pull/873
* fmt: fix format string in fmt_timestamp() by @alfredh in https://github.com/baresip/re/pull/874
* hmac,md5,sha: add mbedtls backend by @cspiel1 in https://github.com/baresip/re/pull/871
* test: no need to rewind freshly allocated mbuf by @alfredh in https://github.com/baresip/re/pull/876
* httpauth: basic challenge creation and verification functions by @cHuberCoffee in https://github.com/baresip/re/pull/875
* Fix include of re_thread.h in re_tmr.h by @nielsavonds in https://github.com/baresip/re/pull/879
* btrace: fix WIN32_LEAN_AND_MEAN macro redefine by @jobo-zt in https://github.com/baresip/re/pull/880
* aumix: add record sum handler by @sreimers in https://github.com/baresip/re/pull/877
* ci/win: disable x86 testing by @sreimers in https://github.com/baresip/re/pull/883
* sipsess: allow UPDATE and INFO in early dialog by @maximilianfridrich in https://github.com/baresip/re/pull/878
* prefix macro VERSION by @cspiel1 in https://github.com/baresip/re/pull/882
* main: use HAVE_SIGNAL in init.c by @cspiel1 in https://github.com/baresip/re/pull/881
* test: change to ASSERT_XXX macros, remove EXPECT_XXX macros by @alfredh in https://github.com/baresip/re/pull/885
* fmt: handy functions for pointer-length objects by @cHuberCoffee in https://github.com/baresip/re/pull/884
* test: add TWCC test from Chrome 114 packet by @alfredh in https://github.com/baresip/re/pull/886
* sipsess/listen: Fix target_refresh_handler by @maximilianfridrich in https://github.com/baresip/re/pull/888
* ci/mingw: downgrade cmake by @sreimers in https://github.com/baresip/re/pull/890
* cmake: fix target include path for subdir projects by @sreimers in https://github.com/baresip/re/pull/891

## New Contributors
* @nielsavonds made their first contribution in https://github.com/baresip/re/pull/879
* @jobo-zt made their first contribution in https://github.com/baresip/re/pull/880

**Full Changelog**: https://github.com/baresip/re/compare/v3.3.0...v3.4.0

## [v3.3.0] - 2023-07-05

## What's Changed
* jbuf: use float ratio by @sreimers in https://github.com/baresip/re/pull/817
* src: fix some typos by @alfredh in https://github.com/baresip/re/pull/828
* jbuf: constant jbuf_put() by @cspiel1 in https://github.com/baresip/re/pull/821
* ci/coverity: split up prepare and make steps by @sreimers in https://github.com/baresip/re/pull/832
* vidmix: coverity fix by @alfredh in https://github.com/baresip/re/pull/830
* sys/fs: fix fs_stdio_hide resource leak by @sreimers in https://github.com/baresip/re/pull/833
* http: coverity fix by @alfredh in https://github.com/baresip/re/pull/834
* avc: fix coverity by @alfredh in https://github.com/baresip/re/pull/835
* sys: fix return value by @alfredh in https://github.com/baresip/re/pull/836
* Do not automatically make new call when 3xx response is received by @juha-h in https://github.com/baresip/re/pull/829
* sipreg: supports PNS custom contact URI by @codyit in https://github.com/baresip/re/pull/837
* ci: add iOS platform by @alfredh in https://github.com/baresip/re/pull/838
* ci/mingw: use cv2pdb for debug info conversion by @sreimers in https://github.com/baresip/re/pull/839
* main: fix warning on Windows by @alfredh in https://github.com/baresip/re/pull/842
* http: add compile-time check for USE_TLS by @alfredh in https://github.com/baresip/re/pull/841
* test: check if USE_TLS is defined by @alfredh in https://github.com/baresip/re/pull/843
* thread: fix WIN32 mingw warning by @sreimers in https://github.com/baresip/re/pull/844
* src: fix doxygen warnings by @alfredh in https://github.com/baresip/re/pull/847
* rtpext: add doxygen comments by @alfredh in https://github.com/baresip/re/pull/846
* jbuf: enable old frame drop warnings by @sreimers in https://github.com/baresip/re/pull/848
* md5: add support for native Windows Wincrypt API by @alfredh in https://github.com/baresip/re/pull/850
* rtpext: add support for Two-Byte headers by @alfredh in https://github.com/baresip/re/pull/849
* sha: add support for Windows native API by @alfredh in https://github.com/baresip/re/pull/851
* cmake: change '-lm' to 'm' in LINKLIBS by @alfredh in https://github.com/baresip/re/pull/854
* hmac: add support for native Windows API by @alfredh in https://github.com/baresip/re/pull/853
* CI: Add support for building Windows ARM by @alfredh in https://github.com/baresip/re/pull/855
* async: add work mutex handling by @sreimers in https://github.com/baresip/re/pull/857
* SIP/TCP use source port for Via header by @cspiel1 in https://github.com/baresip/re/pull/824
* sip: use TCP source port for Contact header by @cspiel1 in https://github.com/baresip/re/pull/858
* cmake: remove obsolete $<INSTALL_INTERFACE:include for re-objs by @alfredh in https://github.com/baresip/re/pull/860
* vidmix: always clear frames (avoid artifacts) by @sreimers in https://github.com/baresip/re/pull/861
* http: use correct formatting %zu for size_t by @alfredh in https://github.com/baresip/re/pull/866

## New Contributors
* @codyit made their first contribution in https://github.com/baresip/re/pull/837

**Full Changelog**: https://github.com/baresip/re/compare/v3.2.0...v3.3.0


## [v3.2.0] - 2023-05-31

## What's Changed
* btrace: add win32 support by @sreimers in https://github.com/baresip/re/pull/767
* cmake,thread: OpenBSD support by @landryb in https://github.com/baresip/re/pull/773
* main/init: add exception signal handlers by @sreimers in https://github.com/baresip/re/pull/765
* ua: unescape incoming Refer-To header by @maximilianfridrich in https://github.com/baresip/re/pull/770
* main: add debug boolean to re\_thread\_check() by @sreimers in https://github.com/baresip/re/pull/775
* btrace: add addr2line handling by @sreimers in https://github.com/baresip/re/pull/764
* cmake: add optional static and shared build options by @sreimers in https://github.com/baresip/re/pull/778
* main/init: enable win32 signal handler by @sreimers in https://github.com/baresip/re/pull/779
* uric/contact: fix display name and contact header uri escaping by @maximilianfridrich in https://github.com/baresip/re/pull/762
* ci/analyze: update clang and use analyze-build by @sreimers in https://github.com/baresip/re/pull/781
* main: use mtx\_recursive by @sreimers in https://github.com/baresip/re/pull/782
* test: fix printf formating by @alfredh in https://github.com/baresip/re/pull/783
* main: add re\_thread\_enter/leave polling check by @sreimers in https://github.com/baresip/re/pull/784
* main/init: remove ContextRecord-\>Rip (not available on all platforms) by @sreimers in https://github.com/baresip/re/pull/790
* sipsess: fix RSeq header and rel\_seq numbering by @maximilianfridrich in https://github.com/baresip/re/pull/796
* websock: add proto support by @sreimers in https://github.com/baresip/re/pull/798
* sip/transp: fix websock\_accept proto by @sreimers in https://github.com/baresip/re/pull/800
* sip/transp: remove unneeded websocket tcp tmr by @sreimers in https://github.com/baresip/re/pull/801
* aubuf: activate overrun/underrun statistics by @cspiel1 in https://github.com/baresip/re/pull/803
* cmake: add libre namespace export by @sreimers in https://github.com/baresip/re/pull/786
* revert uri escaping commits by @maximilianfridrich in https://github.com/baresip/re/pull/802
* jbuf: refactor frame calculation by @sreimers in https://github.com/baresip/re/pull/788
* jbuf: frame fixes by @sreimers in https://github.com/baresip/re/pull/806
* sip: add missing WS and WSS transport decoder for VIA headers by @pitti98 in https://github.com/baresip/re/pull/809
* ice: Fix conncheck callback called multiple times by @pitti98 in https://github.com/baresip/re/pull/807
* jbuf: JBUF\_FIXED should also keep min wish size by @sreimers in https://github.com/baresip/re/pull/813
* ci: compile choco openssl with --x86 for 32-bits by @alfredh in https://github.com/baresip/re/pull/814
* jbuf: fix possible division by zero by @sreimers in https://github.com/baresip/re/pull/815
* fix some cppcheck warnings by @alfredh in https://github.com/baresip/re/pull/816
* test/ice: fix cppcheck by @sreimers in https://github.com/baresip/re/pull/818
* tls/openssl: fix cppcheck warnings by @sreimers in https://github.com/baresip/re/pull/820
* base64: fix cppcheck warnings by @sreimers in https://github.com/baresip/re/pull/819
* main/init: fix upper signal handling by @sreimers in https://github.com/baresip/re/pull/822
* include: fix some typos by @alfredh in https://github.com/baresip/re/pull/825

## New Contributors
* @landryb made their first contribution in https://github.com/baresip/re/pull/773
* @pitti98 made their first contribution in https://github.com/baresip/re/pull/809

**Full Changelog**: https://github.com/baresip/re/compare/v3.1.0...v3.2.0

## [v3.1.0] - 2023-04-27

## What's Changed
* ci: bump mingw openssl to 3.1.0 by @alfredh in https://github.com/baresip/re/pull/738
* thread: add cnd_timedwait() by @sreimers in https://github.com/baresip/re/pull/736
* Add tls and http apis for post handshake by @fAuernigg in https://github.com/baresip/re/pull/713
* ci/sanitizers: add multi thread testing by @sreimers in https://github.com/baresip/re/pull/741
* ci/win: use separate retest step by @sreimers in https://github.com/baresip/re/pull/742
* thread: fix pthread_setname_np thread pointer deref by @sreimers in https://github.com/baresip/re/pull/744
* ci: add FreeBSD test by @sreimers in https://github.com/baresip/re/pull/745
* cmake: bump minimum version of OpenSSL to 1.1.1 by @alfredh in https://github.com/baresip/re/pull/746
* ci: avoid hardcoded OpenSSL path on macOS by @robert-scheck in https://github.com/baresip/re/pull/747
* sip,uri,test: Escape SIP URIs by @maximilianfridrich in https://github.com/baresip/re/pull/740
* udp: add a lock for the helpers list by @cspiel1 in https://github.com/baresip/re/pull/732
* rem/vidmix: add position index handling by @sreimers in https://github.com/baresip/re/pull/749
* aubuf: set auframe fields correct in read_auframe loop by @cspiel1 in https://github.com/baresip/re/pull/750
* list: refactor/optimize list_insert_sorted by @sreimers in https://github.com/baresip/re/pull/748
* ci/freebsd: remove openssl-devel by @sreimers in https://github.com/baresip/re/pull/755
* tmr: add tmr_continue() by @vanrein in https://github.com/baresip/re/pull/754
* ci,cmake: replace C99 check by strict C99 and C11 checks by @sreimers in https://github.com/baresip/re/pull/759
* atomic: Fix missing memory order arguments in MSVC atomic functions by @Lastique in https://github.com/baresip/re/pull/766
* thread: remove win32 SetThreadDescription  by @sreimers in https://github.com/baresip/re/pull/768

**Full Changelog**: https://github.com/baresip/re/compare/v3.0.0...v3.1.0

---

## [v3.0.0] - 2023-03-20

## What's Changed
* main: allow poll_method change only before setup by @sreimers in https://github.com/baresip/re/pull/681
* main: add more details to re_debug() by @alfredh in https://github.com/baresip/re/pull/689
* merge rem into re by @alfredh in https://github.com/baresip/re/pull/683
* tmr,main: thread safe tmr handling by @sreimers in https://github.com/baresip/re/pull/690
* tmr,main: add tmrl_count by @sreimers in https://github.com/baresip/re/pull/694
* main: add re_thread_async_main_id and re_thread_async_main_cancel by @sreimers in https://github.com/baresip/re/pull/697
* merge retest into re by @alfredh in https://github.com/baresip/re/pull/695
* tls: add doxygen comment to dtls_recv_packet() by @alfredh in https://github.com/baresip/re/pull/699
* test: use TEST_ERR by @sreimers in https://github.com/baresip/re/pull/700
* test: use TEST_ERR by @sreimers in https://github.com/baresip/re/pull/701
* hmac: remove unused SHA_BLOCKSIZE by @alfredh in https://github.com/baresip/re/pull/703
* async: fix cancel memory leaks by @sreimers in https://github.com/baresip/re/pull/705
* ci: windows Debug/Release by @alfredh in https://github.com/baresip/re/pull/704
* cmake: add extra source files for aes and hmac by @alfredh in https://github.com/baresip/re/pull/708
* test: remove libpthread from LINKLIBS by @alfredh in https://github.com/baresip/re/pull/710
* hmac: add stateless HMAC-SHA256 wrapper by @alfredh in https://github.com/baresip/re/pull/706
* thread: add thread name handling by @sreimers in https://github.com/baresip/re/pull/709
* ci: add support for Android by @alfredh in https://github.com/baresip/re/pull/707
* test: fix convert C99 by @sreimers in https://github.com/baresip/re/pull/717
* dbg: remove pre-C99 fallbacks by @sreimers in https://github.com/baresip/re/pull/718
* test: remove CMAKE_C_STANDARD by @alfredh in https://github.com/baresip/re/pull/714
* sdp/media: fix ccheck list_unlink warning by @sreimers in https://github.com/baresip/re/pull/715
* jbuf: allocate mutex and lock also jbuf_debug() by @cspiel1 in https://github.com/baresip/re/pull/693
* sys/fs: fix fs_fopen read only mode (should not create file) by @sreimers in https://github.com/baresip/re/pull/719
* ci/ssl: update OpenSSL/LibreSSL by @sreimers in https://github.com/baresip/re/pull/720
* http: fix read_file on win32 (wrong filesize) and use mbuf by @fAuernigg in https://github.com/baresip/re/pull/711
* sys: add sys_getenv() by @sreimers in https://github.com/baresip/re/pull/721
* rtp: Don't check RTCP socket if rtcp-mux is enabled by @Lastique in https://github.com/baresip/re/pull/723
* tls: remove return statement that is not needed by @alfredh in https://github.com/baresip/re/pull/724
* sha: add sha256_printf() by @alfredh in https://github.com/baresip/re/pull/725
* cmake: add rem headers to install by @sreimers in https://github.com/baresip/re/pull/727
* cmake: merge REM_HEADERS by @sreimers in https://github.com/baresip/re/pull/728
* tls: set mbuf pos and end at the same time by @alfredh in https://github.com/baresip/re/pull/729
* misc: add Makefile helpers and exclude retest from all target by @sreimers in https://github.com/baresip/re/pull/726
* sa: add sa_struct_get_size() to check size by @alfredh in https://github.com/baresip/re/pull/730
* rtcp: make rtcp_calc_rtt() public by @alfredh in https://github.com/baresip/re/pull/731
* test: add HAVE_UNIXSOCK=0 support by @sreimers in https://github.com/baresip/re/pull/734
* aubuf: set sample format when frame is read by @cspiel1 in https://github.com/baresip/re/pull/737


**Full Changelog**: https://github.com/baresip/re/compare/v2.12.0...v3.0.0

---

## [v2.12.0] - 2023-02-15

## What's Changed
* tls: remove ifdef DTLS_CTRL_HANDLE_TIMEOUT by @alfredh in https://github.com/baresip/re/pull/634
* cmake: increment required version by @cspiel1 in https://github.com/baresip/re/pull/642
* dtls: add logging of DTLS packet content-type by @alfredh in https://github.com/baresip/re/pull/641
* dtls: add single connection mode by @alfredh in https://github.com/baresip/re/pull/643
* ice: reduce conncheck start timer by @alfredh in https://github.com/baresip/re/pull/640
* async,main: make re_thread_async itself thread safe by @sreimers in https://github.com/baresip/re/pull/644
* av1: remove old packetizer by @alfredh in https://github.com/baresip/re/pull/645
* av1: fix chrome interop by @alfredh in https://github.com/baresip/re/pull/646
* av1: minor cleanups by @alfredh in https://github.com/baresip/re/pull/649
* trace: fix new json start by @sreimers in https://github.com/baresip/re/pull/648
* make rtcp interval configureable by @sreimers in https://github.com/baresip/re/pull/650
* sa: proposal to always enable struct sockaddr_in6 by @alfredh in https://github.com/baresip/re/pull/651
* ci: rename ccheck to lint by @alfredh in https://github.com/baresip/re/pull/653
* ci: extend coverage test with retest+select by @alfredh in https://github.com/baresip/re/pull/652
* main: remove poll support by @sreimers in https://github.com/baresip/re/pull/654
* ci: use Ninja as CMake generator by @alfredh in https://github.com/baresip/re/pull/656
* ci/abi: fix abidiff paths by @sreimers in https://github.com/baresip/re/pull/657
* PRACK refactoring by @maximilianfridrich in https://github.com/baresip/re/pull/630
* types: add RE_ prefix to ARRAY_SIZE() by @alfredh in https://github.com/baresip/re/pull/658
* cmake: add USE_TRACE option (default OFF) by @sreimers in https://github.com/baresip/re/pull/660
* add re prefix by @alfredh in https://github.com/baresip/re/pull/659
* tcp: add RE_TCP_BACKLOG by @sreimers in https://github.com/baresip/re/pull/661
* Fix doxygen warnings by @alfredh in https://github.com/baresip/re/pull/662
* mbuf: docs and setters/getters by @alfredh in https://github.com/baresip/re/pull/663
* tcp,cmake: use accept4 if supported by @sreimers in https://github.com/baresip/re/pull/665
* tcp: remove SO_LINGER socket option by @sreimers in https://github.com/baresip/re/pull/664
* rtcp: update documentation by @alfredh in https://github.com/baresip/re/pull/666
* tcp: check SO_ERROR only for active connections by @sreimers in https://github.com/baresip/re/pull/667
* cmake: add HAVE_RESOLV by @sreimers in https://github.com/baresip/re/pull/668
* hash: add hash_debug by @sreimers in https://github.com/baresip/re/pull/670
* list: improve list_apply performance by @sreimers in https://github.com/baresip/re/pull/669
* rtp: add doxygen comments by @alfredh in https://github.com/baresip/re/pull/671
* rtp: extra dox for rtcp_encode by @alfredh in https://github.com/baresip/re/pull/672
* ci: add thread and address sanitizer by @sreimers in https://github.com/baresip/re/pull/673
* Do not change glibc feature selection macros in unsupported ways by @fweimer-rh in https://github.com/baresip/re/pull/674
* auth: replace ETIME with ETIMEDOUT by @sreimers in https://github.com/baresip/re/pull/675
* cmake: add min. OpenSSL 1.1.0 version requirement by @sreimers in https://github.com/baresip/re/pull/680
* ci: fix flaky azure mirrors by @sreimers in https://github.com/baresip/re/pull/682
* tls: remove obsolete openssl version check and fix libressl build by @cspiel1 in https://github.com/baresip/re/pull/679
* ci/ssl: fix openssl root dir by @sreimers in https://github.com/baresip/re/pull/677
* main: add re_thread_async_main for re_global only by @sreimers in https://github.com/baresip/re/pull/685
* atomic: fix win32 atomic load const warnings by @sreimers in https://github.com/baresip/re/pull/688
* atomic: fix __iso_volatile_load64 deref by @sreimers in https://github.com/baresip/re/pull/691
* bump version numbers to 2.12.0 by @alfredh in https://github.com/baresip/re/pull/692

## New Contributors
* @fweimer-rh made their first contribution in https://github.com/baresip/re/pull/674

**Full Changelog**: https://github.com/baresip/re/compare/v2.11.0...v2.12.0

---

## [v2.11.0] - 2023-01-11

## What's Changed
* net/types: move socket helpers and rename RE_ERRNO_SOCK and RE_BAD_SOCK by @sreimers in https://github.com/baresip/re/pull/608
* sys: fix fileno warning by @alfredh in https://github.com/baresip/re/pull/612
* tls: clear session callbacks in destructor by @cspiel1 in https://github.com/baresip/re/pull/611
* tls: use long SSL state strings for logging by @cspiel1 in https://github.com/baresip/re/pull/613
* tls: Set session only once before Client Hello by @cspiel1 in https://github.com/baresip/re/pull/607
* udp: add optional send/recv handler by @alfredh in https://github.com/baresip/re/pull/602
* tls: remove deprecated tls_set_selfsigned() by @alfredh in https://github.com/baresip/re/pull/614
* main: allow for init twice by @alfredh in https://github.com/baresip/re/pull/615
* cmake: add check_c_compiler_flag for atomic-implicit-seq-cst warning by @sreimers in https://github.com/baresip/re/pull/617
* http,tcp: add http_listen_fd and tcp_sock_alloc_fd by @sreimers in https://github.com/baresip/re/pull/618
* tcp_sock_alloc_fd: fix fdc initializing by @sreimers in https://github.com/baresip/re/pull/619
* sa,unixsock: add unix domain socket support by @sreimers in https://github.com/baresip/re/pull/600
* mk: remove makefiles by @sreimers in https://github.com/baresip/re/pull/620
* RTP Resend by @sreimers in https://github.com/baresip/re/pull/626
* TLS server support SNI based certificate selection by @cspiel1 in https://github.com/baresip/re/pull/596
* sipsess/request.c: return error code in sipsess_request_alloc by @maximilianfridrich in https://github.com/baresip/re/pull/631
* ice: add ANSI output with Green and Red colors by @alfredh in https://github.com/baresip/re/pull/632
* docs: update reference to TLS 1.2 by @alfredh in https://github.com/baresip/re/pull/633
* cmake, sa: enable unix sockets, if HAVE_UNIXSOCK is undefined by @fAuernigg in https://github.com/baresip/re/pull/636
* trice: refresh doxygen comments by @alfredh in https://github.com/baresip/re/pull/635
* tls: add error handling for BIO_reset by @cspiel1 in https://github.com/baresip/re/pull/638
* dns/client: fix rrlv reference cache handling by @sreimers in https://github.com/baresip/re/pull/637


**Full Changelog**: https://github.com/baresip/re/compare/v2.10.0...v2.11.0

---

## [v2.10.0] - 2022-12-06

## What's Changed
* h264: add STAP-A by @alfredh in https://github.com/baresip/re/pull/584
* tls: SSL_get_peer_certificate is deprecated by @sreimers in https://github.com/baresip/re/pull/585
* sipreg fix contact handler `expires` evaluation by @cspiel1 in https://github.com/baresip/re/pull/581
* ice: local candidate policy config by @sreimers in https://github.com/baresip/re/pull/589
* h265: add missing NAL types by @alfredh in https://github.com/baresip/re/pull/590
* rtpext: move from baresip to re by @alfredh in https://github.com/baresip/re/pull/591
* mk: add rtpext to Makefile build by @cspiel1 in https://github.com/baresip/re/pull/594
* mk: add makefile deprecation warning by @sreimers in https://github.com/baresip/re/pull/595
* fs: use dup/dup2 for stdio hide and restore by @sreimers in https://github.com/baresip/re/pull/597
* dns: fix dnsc_conf_set memory leak by @alfredh in https://github.com/baresip/re/pull/598
* cmake: add TRACE_SSL compile definition by @cspiel1 in https://github.com/baresip/re/pull/599
* cmake: add ZLIB_INCLUDE_DIRS by @sreimers in https://github.com/baresip/re/pull/601
* cmake/pkgconfig: fix prefix variable by @cspiel1 in https://github.com/baresip/re/pull/603
* ci/valgrind: use ubuntu-20.04 by @sreimers in https://github.com/baresip/re/pull/606

**Full Changelog**: https://github.com/baresip/re/compare/v2.9.0...v2.10.0

---

## [v2.9.0] - 2022-11-01

## What's Changed
* cmake,make: bump version and set dev identifier by @cspiel1 in https://github.com/baresip/re/pull/553
* udp: remove udp_send_anon() by @alfredh in https://github.com/baresip/re/pull/550
* cmake: enable export symbols for backtrace by @sreimers in https://github.com/baresip/re/pull/554
* README.md: Update build instructions for cmake by @robert-scheck in https://github.com/baresip/re/pull/556
* cmake: improve kqueue and epoll detection by @sreimers in https://github.com/baresip/re/pull/558
* fs: add fs_stdio_hide() and fs_stdio_restore() helpers by @sreimers in https://github.com/baresip/re/pull/559
* json: remove unknown type warning by @alfredh in https://github.com/baresip/re/pull/560
* http: fix warning arguments by @alfredh in https://github.com/baresip/re/pull/561
* net_if_getlinklocal: use AF from input parameter by @alfredh in https://github.com/baresip/re/pull/565
* fmt: add str_itoa by @sreimers in https://github.com/baresip/re/pull/569
* SDP support for <proto> udp by @vanrein in https://github.com/baresip/re/pull/538
* tls: remove some warnings by @alfredh in https://github.com/baresip/re/pull/567
* fmt: add pl_trim functions by @cspiel1 in https://github.com/baresip/re/pull/557
* aes/openssl: remove obsolete version check by @alfredh in https://github.com/baresip/re/pull/572
* http: use str_dup() instead of unsafe strcpy() by @alfredh in https://github.com/baresip/re/pull/574
* doxygen: update comments by @alfredh in https://github.com/baresip/re/pull/577
* reg: remove obsolete void cast by @cspiel1 in https://github.com/baresip/re/pull/576
* Tls connect debug by @alfredh in https://github.com/baresip/re/pull/573
* mk: update doxygen file by @alfredh in https://github.com/baresip/re/pull/578
* ci: use actions/checkout@v3 by @sreimers in https://github.com/baresip/re/pull/579
* tls: remove ifdef from public API by @alfredh in https://github.com/baresip/re/pull/580
* sip: sip_conncfg_set pass by reference by @alfredh in https://github.com/baresip/re/pull/582
* dnsc get conf and skip hash alloc without hash size changes by @fAuernigg in https://github.com/baresip/re/pull/575
* sdp/media: fix reorder codecs (restore old behavior) by @juha-h in https://github.com/baresip/re/pull/583
* list: fix list_flush head and tail by @sreimers in https://github.com/baresip/re/pull/586
* prepare 2.9.0 by @alfredh in https://github.com/baresip/re/pull/587

## New Contributors
* @vanrein made their first contribution in https://github.com/baresip/re/pull/538

**Full Changelog**: https://github.com/baresip/re/compare/v2.8.0...v2.9.0

---

## [v2.8.0] - 2022-10-01

* Update README.md by @alfredh in https://github.com/baresip/re/pull/503
* thread: fix win32 thrd\_create return values by @sreimers in https://github.com/baresip/re/pull/506
* cmake: bump min. version 3.10 by @sreimers in https://github.com/baresip/re/pull/504
* cmake: add USE\_JBUF option by @alfredh in https://github.com/baresip/re/pull/507
* http/https requests with large body by @fAuernigg in https://github.com/baresip/re/pull/485
* http/client: fix possible null pointer dereference by @sreimers in https://github.com/baresip/re/pull/509
* ci: test choco install no-progress by @alfredh in https://github.com/baresip/re/pull/510
* bitv: remove deprecated module by @alfredh in https://github.com/baresip/re/pull/513
* types,fmt: use re\_restrict by @sreimers in https://github.com/baresip/re/pull/514
* refer out of dialog by @cspiel1 in https://github.com/baresip/re/pull/508
* UPDATE bugfix by @maximilianfridrich in https://github.com/baresip/re/pull/516
* sip/auth: fix mem\_zalloc return check by @sreimers in https://github.com/baresip/re/pull/518
* Update media fixes by @cspiel1 in https://github.com/baresip/re/pull/515
* dns, http: add dnsc\_getaddrinfo\_enabled. prevent reset of getaddrinfo enabled by @fAuernigg in https://github.com/baresip/re/pull/519
* rtp: Improve media synchronization by @Lastique in https://github.com/baresip/re/pull/418
* conf: check if returned size is larger than buffer by @alfredh in https://github.com/baresip/re/pull/523
* udp: remove very old iOS hack by @alfredh in https://github.com/baresip/re/pull/524
* tcp: remove very old iOS hack by @alfredh in https://github.com/baresip/re/pull/525
* Use CMake for debian packages by @sreimers in https://github.com/baresip/re/pull/522
* crc32: add re wrapper by @alfredh in https://github.com/baresip/re/pull/526
* ci: convert valgrind to cmake by @alfredh in https://github.com/baresip/re/pull/529
* ci: convert ssl build to cmake by @alfredh in https://github.com/baresip/re/pull/530
* ci: convert fedora to cmake by @alfredh in https://github.com/baresip/re/pull/531
* ci: convert coverage to cmake by @alfredh in https://github.com/baresip/re/pull/532
* ci: migrate to cmake by @alfredh in https://github.com/baresip/re/pull/533
* cmake: add LINKLIBS and make backtrace and zlib optional by @sreimers in https://github.com/baresip/re/pull/534
* C99 compatibility by @sreimers in https://github.com/baresip/re/pull/536
* pcp: fix cppcheck warning by @alfredh in https://github.com/baresip/re/pull/540
* fmt/print: fix cppcheck overflow warning by @sreimers in https://github.com/baresip/re/pull/542
* tls: remove SHA1 fingerprint (deprecated) by @alfredh in https://github.com/baresip/re/pull/527
* send DTMF via hidden call by @cspiel1 in https://github.com/baresip/re/pull/537
* sipreg: avoid sending un-REGISTER periodically by @cspiel1 in https://github.com/baresip/re/pull/543
* cmake,mk: bump the tentative next release with pre-release identifier by @sreimers in https://github.com/baresip/re/pull/546
* sipsess/update: Add Contact header to UPDATE by @maximilianfridrich in https://github.com/baresip/re/pull/545
* cmake: fix shared API soversion (aligned with make) by @sreimers in https://github.com/baresip/re/pull/549

---

## [v2.7.0] - 2022-09-01

* async: add re_thread_async by @sreimers in https://github.com/baresip/re/pull/462
* atomic: Add support for gcc __sync intrinsics by @Lastique in https://github.com/baresip/re/pull/467
* btrace: fix gcc 4.3.5 warnings by @cspiel1 in https://github.com/baresip/re/pull/468
* h264: fix gcc 4.3.5 warnings by @cspiel1 in https://github.com/baresip/re/pull/469
* async: add guard by @sreimers in https://github.com/baresip/re/pull/474
* dns/client: add async getaddrinfo usage by @sreimers in https://github.com/baresip/re/pull/470
* async: make work handler and callback optional by @sreimers in https://github.com/baresip/re/pull/481
* BareSip. Add a state update action to the main loop to unblock pollin… by @viordash in https://github.com/baresip/re/pull/480
* dns,net: fix build of asyn_getaddrinfo on gcc 4.3.5 (#482) by @cspiel1 in https://github.com/baresip/re/pull/483
* dns/client: fix getaddrinfo duplicates by @sreimers in https://github.com/baresip/re/pull/486
* http/client: fix dnsc_conf initialization by @sreimers in https://github.com/baresip/re/pull/487
* tmr: tmr_start_dbg use const char for file arg by @sreimers in https://github.com/baresip/re/pull/488
* base64: Encoding/Decoding with URL and Filename Safe Alphabet by @sreimers in https://github.com/baresip/re/pull/471
* misc: fix c11 err handling by @sreimers in https://github.com/baresip/re/pull/476
* cmake: move definitions to re-config.cmake by @sreimers in https://github.com/baresip/re/pull/491
* ci/mingw: fix make retest by @sreimers in https://github.com/baresip/re/pull/492
* cmake: add pkgconfig by @sreimers in https://github.com/baresip/re/pull/493
* Fix error: ‘NI_MAXSERV’ undeclared by @widgetii in https://github.com/baresip/re/pull/495
* Fix error: storage size of ‘ifrr’ isn’t known by @widgetii in https://github.com/baresip/re/pull/496
* ci/musl: add alpine/musl build by @sreimers in https://github.com/baresip/re/pull/499
* Correctly update local media format ids to match those in the offer by @juha-h in https://github.com/baresip/re/pull/498
* debian: fix prefix by @juha-h in https://github.com/baresip/re/pull/501

---

## [v2.6.0] - 2022-08-01

* ice: change one warning to notice by @alfredh in https://github.com/baresip/re/pull/421
* Fix compilation error on musl: __GNUC_PREREQ macro defined only for libc library by @widgetii in https://github.com/baresip/re/pull/422
* sip: add RFC 3262 support by @maximilianfridrich in https://github.com/baresip/re/pull/419
* bfcp: Add support for TCP transport for BFCP by @Lastique in https://github.com/baresip/re/pull/411
* strans/accept: fix cancel/rejection by @maximilianfridrich in https://github.com/baresip/re/pull/423
* hash: add hash_list_idx() by @sreimers in https://github.com/baresip/re/pull/427
* tls: Add a method to set OpenSSL certificate by @Lastique in https://github.com/baresip/re/pull/426
* sipsess: fix PRACK offer/answer behavior by @maximilianfridrich in https://github.com/baresip/re/pull/430
* thread: thrd_error fixes by @sreimers in https://github.com/baresip/re/pull/431
* sipsess: fix coverity warnings by @maximilianfridrich in https://github.com/baresip/re/pull/433
* main: add re_nfds() and poll_method_get() getters by @sreimers in https://github.com/baresip/re/pull/435
* fmt/print: fix local_itoa casting by @sreimers in https://github.com/baresip/re/pull/437
* leb128: switch to uint64_t by @alfredh in https://github.com/baresip/re/pull/436
* types,mk: remove HAVE_STDBOOL_H by @sreimers in https://github.com/baresip/re/pull/439
* fmt/print: snprintf restrict declarations by @sreimers in https://github.com/baresip/re/pull/438
* net: minor cleanup in linux route code by @alfredh in https://github.com/baresip/re/pull/440
* sip: add RFC 3311 support by @maximilianfridrich in https://github.com/baresip/re/pull/425
* rtmp: check upper bound for amf array by @alfredh in https://github.com/baresip/re/pull/441
* rtcp: check TWCC count range (Coverity fix) by @alfredh in https://github.com/baresip/re/pull/442
* mem: Align data to natural alignment by @Lastique in https://github.com/baresip/re/pull/416
* ci/misc: bump pr-dependency-action@v0.5 by @sreimers in https://github.com/baresip/re/pull/444
* net: linux/rt: init gw to correct af by @alfredh in https://github.com/baresip/re/pull/447
* rtp: Add `rtcp_send` declaration to the public header by @Lastique in https://github.com/baresip/re/pull/448
* Main method best by @alfredh in https://github.com/baresip/re/pull/449
* cmake: add explicit /volatile:ms (required for arm) by @sreimers in https://github.com/baresip/re/pull/451
* mem: Make nrefs atomic by @Lastique in https://github.com/baresip/re/pull/446
* atomic: add some short atomic alias helpers by @sreimers in https://github.com/baresip/re/pull/452
* ci/build: replace deprecated macos-10.15 by @sreimers in https://github.com/baresip/re/pull/454
* Improve RFC 3262 by @maximilianfridrich in https://github.com/baresip/re/pull/450
* atomic: rename helpers by @sreimers in https://github.com/baresip/re/pull/455
* cmake,make: add clang atomic-implicit-seq-cst warning by @sreimers in https://github.com/baresip/re/pull/453
* cmake: add missing includes to install by @paresy in https://github.com/baresip/re/pull/456
* Fix prack handling by @maximilianfridrich in https://github.com/baresip/re/pull/457
* mem: Correct memory clobbering size by @Lastique in https://github.com/baresip/re/pull/458
* mem: Correct calculation of total mem size in mem_status by @Lastique in https://github.com/baresip/re/pull/459
* tls: Securely clear memory from private key material by @Lastique in https://github.com/baresip/re/pull/460
* fmt/str_error: always print error number by @sreimers in https://github.com/baresip/re/pull/461
* thread: add cnd_broadcast posix/win32 fallbacks by @sreimers in https://github.com/baresip/re/pull/463
* list: add list_move() helper by @sreimers in https://github.com/baresip/re/pull/464
* thread: fix thread_create_name ENOMEM by @sreimers in https://github.com/baresip/re/pull/465

---

## [v2.5.0] - 2022-07-01

* av1: add doxygen comments by @alfredh in https://github.com/baresip/re/pull/384
* rtp: add function to calc sequence number diff by @alfredh in https://github.com/baresip/re/pull/385
* CI fixes by @sreimers in https://github.com/baresip/re/pull/387
* trace: C11 mutex by @alfredh in https://github.com/baresip/re/pull/390
* trace: init refactor by @sreimers in https://github.com/baresip/re/pull/391
* jbuf: use C11 mutex by @alfredh in https://github.com/baresip/re/pull/392
* av1: define and make AV1_AGGR_HDR_SIZE public by @alfredh in https://github.com/baresip/re/pull/393
* main: add re_thread_check() for NON-RE thread calls by @sreimers in https://github.com/baresip/re/pull/389
* cmake: add HAVE_SIGNAL on UNIX by @sreimers in https://github.com/baresip/re/pull/394
* av1: add av1_obu_count() by @alfredh in https://github.com/baresip/re/pull/395
* thread: add mtx_alloc by @sreimers in https://github.com/baresip/re/pull/396
* rtp: C11 mutex by @alfredh in https://github.com/baresip/re/pull/397
* lock: remove deprecated module by @alfredh in https://github.com/baresip/re/pull/398
* Added sippreg_unregister API function by @juha-h in https://github.com/baresip/re/pull/400
* av1 work by @alfredh in https://github.com/baresip/re/pull/402
* rtp: add rtp_is_rtcp_packet() by @alfredh in https://github.com/baresip/re/pull/405
* Fix mutex alloc destroy by @sreimers in https://github.com/baresip/re/pull/406
* av1: minor fixes and doxygen comments by @alfredh in https://github.com/baresip/re/pull/407
* rtp: Add support for RFC5104 PSFB FIR by @Lastique in https://github.com/baresip/re/pull/408
* jbuf: Add drain method by @Lastique in https://github.com/baresip/re/pull/409
* uag: add timestamps to SIP trace by @cspiel1 in https://github.com/baresip/re/pull/412
* fmt/fmt_timestamp: some cleanup by @sreimers in https://github.com/baresip/re/pull/413
* main: refactor libre_init and re_global handling by @sreimers in https://github.com/baresip/re/pull/404
* main: Add support for external threads attaching/detaching re context by @Lastique in https://github.com/baresip/re/pull/414
* mem: Fix formatting for nrefs and size. by @Lastique in https://github.com/baresip/re/pull/415

---

## [v2.4.0] - 2022-06-01

## What's Changed
* ci: test centos -> fedora by @alfredh in https://github.com/baresip/re/pull/340
* Tls bio opaque by @alfredh in https://github.com/baresip/re/pull/341
* main: remove usage of crypto_set_id_callback() by @alfredh in https://github.com/baresip/re/pull/342
* jbuf: in adaptive mode do not manipulate min buffer size by @cspiel1 in https://github.com/baresip/re/pull/343
* av1 obu by @alfredh in https://github.com/baresip/re/pull/345
* jbuf: improve adaptive mode by @cspiel1 in https://github.com/baresip/re/pull/344
* av1 packetizer by @alfredh in https://github.com/baresip/re/pull/346
* av1: depacketizer by @alfredh in https://github.com/baresip/re/pull/347
* h265: move from rem to re by @alfredh in https://github.com/baresip/re/pull/348
* jbuf: avoid reducing of wish size too early by @cspiel1 in https://github.com/baresip/re/pull/349
* ci/build: add ubuntu 22.04 (beta) by @sreimers in https://github.com/baresip/re/pull/351
* h264: move from rem to re by @alfredh in https://github.com/baresip/re/pull/350
* add C11 thread, mutex and condition API by @sreimers in https://github.com/baresip/re/pull/249
* thread: use pthread as default fallback by @sreimers in https://github.com/baresip/re/pull/354
* mem: use new C11 mutex locking by @sreimers in https://github.com/baresip/re/pull/352
* dbg: use C11 thread mutex by @sreimers in https://github.com/baresip/re/pull/356
* thread: add thread-local storage functions by @sreimers in https://github.com/baresip/re/pull/355
* main/openssl: cleanup by @sreimers in https://github.com/baresip/re/pull/358
* cmake: sort warning flags by @alfredh in https://github.com/baresip/re/pull/359
* doxygen: update comments by @alfredh in https://github.com/baresip/re/pull/360
* main: use C11 thread mutex by @sreimers in https://github.com/baresip/re/pull/357
* make: disable warning flag -Wdeclaration-after-statement by @alfredh in https://github.com/baresip/re/pull/363
* cleanup pthread by @sreimers in https://github.com/baresip/re/pull/362
* update doxygen comments by @alfredh in https://github.com/baresip/re/pull/366
* ci/coverage: downgrade gcovr by @sreimers in https://github.com/baresip/re/pull/365
* tls: print openssl error queue if accept failed by @alfredh in https://github.com/baresip/re/pull/367
* main: fd_setsize -1 for RLIMIT_NOFILE value by @sreimers in https://github.com/baresip/re/pull/368
* jbuf: flush on RTP timeout by @cspiel1 in https://github.com/baresip/re/pull/370
* thread: add mtx_destroy by @sreimers in https://github.com/baresip/re/pull/371
* dns: add query cache by @sreimers in https://github.com/baresip/re/pull/369
* mem,btrace: fix struct alignment by @sreimers in https://github.com/baresip/re/pull/372
* av1: change start flag to continuation flag (inverse) by @alfredh in https://github.com/baresip/re/pull/375
* tmr: add tmr_start_dbg by @sreimers in https://github.com/baresip/re/pull/373
* ice: rename to local pref by @alfredh in https://github.com/baresip/re/pull/376
* tls: Switch from EVP_sha1() to EVP_sha256() when using it for X509_sign() by @robert-scheck in https://github.com/baresip/re/pull/377

---

## [v2.3.0] - 2022-05-01

* cmake: use static build as default target (improves subdirectory usage) by @sreimers in https://github.com/baresip/re/pull/311
* jbuf: fix RELEASE build with DEBUG_LEVEL 6 by @cspiel1 in https://github.com/baresip/re/pull/313
* fmt/pl: use unsigned type before negation by @sreimers in https://github.com/baresip/re/pull/312
* fmt/pl: rewrite negative handling (avoid undefined behavior) by @sreimers in https://github.com/baresip/re/pull/314
* http/request: fix possbile null pointer dereference by @sreimers in https://github.com/baresip/re/pull/316
* sdp: check sdp_bandwidth lower bound by @sreimers in https://github.com/baresip/re/pull/317
* main: use re_sock_t by @sreimers in https://github.com/baresip/re/pull/315
* ccheck: check all CMakeLists.txt files by @sreimers in https://github.com/baresip/re/pull/320
* list: O(1) sorted insert if we expect append in most cases by @cspiel1 in https://github.com/baresip/re/pull/318
* add pcp protocol by @alfredh in https://github.com/baresip/re/pull/321
* cmake: define RELEASE for release builds by @alfredh in https://github.com/baresip/re/pull/323
* Mem lock win32 by @alfredh in https://github.com/baresip/re/pull/324
* pcp: fix win32 warning by @alfredh in https://github.com/baresip/re/pull/325
* ci/msvc: treat all compiler warnings as errors by @sreimers in https://github.com/baresip/re/pull/326
* cmake: add MSVC /W3 compile option by @sreimers in https://github.com/baresip/re/pull/327
* cmake: add FreeBSD and OpenBSD by @sreimers in https://github.com/baresip/re/pull/329
* md5: remove fallback implementation by @sreimers in https://github.com/baresip/re/pull/328
* cmake: add runtime and development install components by @sreimers in https://github.com/baresip/re/pull/330
* mem: remove low/high block size stats by @alfredh in https://github.com/baresip/re/pull/331
* mem: add error about missing locking by @alfredh in https://github.com/baresip/re/pull/332
* set TCP source port in Via and Contact header by @cspiel1 in https://github.com/baresip/re/pull/334
* remove sys_rel_get and epoll_check by @alfredh in https://github.com/baresip/re/pull/335
* support tls session reuse   by @fAuernigg in https://github.com/baresip/re/pull/333
* rand: init only needed for libc rand by @alfredh in https://github.com/baresip/re/pull/336
* tls: fix crash in debug warn msg by @fAuernigg in https://github.com/baresip/re/pull/337
* mem: init g_memLock directly by @alfredh in https://github.com/baresip/re/pull/339
* prepare for version 2.3.0 by @alfredh in https://github.com/baresip/re/pull/338

---

## [v2.2.2] - 2022-04-09

* sha256: add wrapper by @alfredh in https://github.com/baresip/re/pull/306
* workflow: upgrade to openssl 3.0.2 by @alfredh in https://github.com/baresip/re/pull/305
* aubuf adaptive jitter buffer by @cspiel1 in https://github.com/baresip/re/pull/303
* Improve WIN32 UDP socket handling by @sreimers in https://github.com/baresip/re/pull/296
* tcp: remove tcp_conn_fd by @alfredh in https://github.com/baresip/re/pull/308
* tcp: improve win32 socket and error handling by @sreimers in https://github.com/baresip/re/pull/309

---

## [v2.2.1] - 2022-04-01

* cmake: add packaging by @sreimers in https://github.com/baresip/re/pull/299
* sha: add sha 256 and 512 digest length OpenSSL compats by @sreimers in https://github.com/baresip/re/pull/300
* main: use Winsock2.h by @sreimers in https://github.com/baresip/re/pull/302
* cmake: for Android platform dont enable ifaddrs/getifaddrs by @alfredh in https://github.com/baresip/re/pull/304
* sa/sa_is_loopback: check full IPv4 loopback range (127.0.0.0/8) by @sreimers in https://github.com/baresip/re/pull/301

---

## [v2.2.0] - 2022-03-28

* tls: fix coverity defect by @alfredh in https://github.com/baresip/re/pull/270
* http/client: read_file check ftell return value by @sreimers in https://github.com/baresip/re/pull/272
* udp: fix coverity defect by @alfredh in https://github.com/baresip/re/pull/271
* cmake: add detection of HAVE_ARC4RANDOM by @alfredh in https://github.com/baresip/re/pull/269
* Fix coverity issues by @sreimers in https://github.com/baresip/re/pull/273
* Support adding CRLs by @fAuernigg in https://github.com/baresip/re/pull/274
* json/decode: fix possible out of bound access, if code changes by @sreimers in https://github.com/baresip/re/pull/275
* tls/tls_add_crlpem: use const by @sreimers in https://github.com/baresip/re/pull/276
* udp: fix coverity defect by @alfredh in https://github.com/baresip/re/pull/279
* dns: fix Coverity Defect by @alfredh in https://github.com/baresip/re/pull/278
* tls: use const pointer for tls_add_capem() by @cspiel1 in https://github.com/baresip/re/pull/277
* srtp/srtcp: add sanity check for rtcp->tag_len by @sreimers in https://github.com/baresip/re/pull/280
* shim: new module from rew by @alfredh in https://github.com/baresip/re/pull/282
* Trice module by @alfredh in https://github.com/baresip/re/pull/283
* retest trice by @alfredh in https://github.com/baresip/re/pull/284
* Add try_into conversion helper and drop gcc 4.8 support by @sreimers in https://github.com/baresip/re/pull/286
* rtp: fix signed/unsigned warning on WIN32 by @alfredh in https://github.com/baresip/re/pull/287
* fix build error on openbsd arm64 (raspberry pi) by @jimying in https://github.com/baresip/re/pull/290
* cmake: disable C extensions (like make) by @sreimers in https://github.com/baresip/re/pull/292
* fmt: add bool decode from struct pl by @cspiel1 in https://github.com/baresip/re/pull/293
* sdp: a utility function for decoding SDP direction by @cspiel1 in https://github.com/baresip/re/pull/294
* sa/sa_ntop: check inet_ntop() return value by @sreimers in https://github.com/baresip/re/pull/295
* sa_pton: use sa_addrinfo for interface suffix by @alfredh in https://github.com/baresip/re/pull/297

### New Contributors
* @jimying made their first contribution in https://github.com/baresip/re/pull/290

---

## [v2.1.1] - 2022-03-12

### Fixes

* mk: fix ABI versioning [#268](https://github.com/baresip/re/issues/268)

---

## [v2.1.0] - 2022-03-11

### What's Changed
* Tls sipcert per acc by @cHuberCoffee in https://github.com/baresip/re/pull/96
* ToS for video and sip by @cspiel1 in https://github.com/baresip/re/pull/98
* sdp: in media_decode() reset rdir if port is zero by @cspiel1 in https://github.com/baresip/re/pull/99
* mk/re: add variable length array (-Wvla) compiler warning by @sreimers in https://github.com/baresip/re/pull/100
* Macos openssl by @sreimers in https://github.com/baresip/re/pull/105
* pkg-config version check by @sreimers in https://github.com/baresip/re/pull/107
* sa: add setter and getter for scope id by @cspiel1 in https://github.com/baresip/re/pull/108
* net: in net_dst_source_addr_get() make parameter dst const by @cspiel1 in https://github.com/baresip/re/pull/109
* Avoid 'ISO C90 forbids mixed declarations and code' warnings by @juha-h in https://github.com/baresip/re/pull/112
* SIP redirect callbackfunction by @cHuberCoffee in https://github.com/baresip/re/pull/111
* add secure websocket tls context by @sreimers in https://github.com/baresip/re/pull/113
* fmt: add string to bool function by @cspiel1 in https://github.com/baresip/re/pull/115
* fix clang analyze warnings by @sreimers in https://github.com/baresip/re/pull/114
* fmt: support different separators for parameter parsing by @cspiel1 in https://github.com/baresip/re/pull/117
* Refactor inet_ntop and inet_pton by @sreimers in https://github.com/baresip/re/pull/118
* add essential fields check by @I-mpossible in https://github.com/baresip/re/pull/119
* sa: add support for interface suffix for IPv6ll by @cspiel1 in https://github.com/baresip/re/pull/116
* net: fix net_if_getname IPv6 support by @sreimers in https://github.com/baresip/re/pull/120
* udp: add udp_recv_helper by @alfredh in https://github.com/baresip/re/pull/122
* sa: fix build for old systems by @cspiel1 in https://github.com/baresip/re/pull/121
* sa/addrinfo: fix openbsd (drop AI_V4MAPPED flag) by @sreimers in https://github.com/baresip/re/pull/125
* ci/codeql: add scan-build by @sreimers in https://github.com/baresip/re/pull/128
* Fixed debian changelog version by @juha-h in https://github.com/baresip/re/pull/129
* IPv6 link local support by @cspiel1 in https://github.com/baresip/re/pull/106
* sip: add fallback transport for transp_find() by @cspiel1 in https://github.com/baresip/re/pull/132
* SIP default protocol by @cspiel1 in https://github.com/baresip/re/pull/131
* remove orphaned files by @viordash in https://github.com/baresip/re/pull/136
* outgoing calls early callid by @cspiel1 in https://github.com/baresip/re/pull/135
* sip: fix possible "???" dns srv queries by skipping lines without srvid by @cHuberCoffee in https://github.com/baresip/re/pull/133
* odict: hide struct odict_entry by @sreimers in https://github.com/baresip/re/pull/130
* tls: add keylogger callback function by @cHuberCoffee in https://github.com/baresip/re/pull/140
* http/client: support other auth token types besides bearer by @fAuernigg in https://github.com/baresip/re/pull/142
* tls: fix client certificate replacement by @cHuberCoffee in https://github.com/baresip/re/pull/145
* http/client: support dns ipv6 by @fAuernigg in https://github.com/baresip/re/pull/141
* rtp: add payload-type helper by @alfredh in https://github.com/baresip/re/pull/148
* sip: check consistency between CSeq method and that of request line by @I-mpossible in https://github.com/baresip/re/pull/146
* Fix win32 by @viordash in https://github.com/baresip/re/pull/149
* fix warnings from PVS-Studio C++ static analyzer by @viordash in https://github.com/baresip/re/pull/150
* RTP inbound telephone events should not lead to packet loss by @cspiel1 in https://github.com/baresip/re/pull/151
* support inet6 by default in Win32 project by @viordash in https://github.com/baresip/re/pull/154
* sdp: differentiate between media line disabled or rejected by @cHuberCoffee in https://github.com/baresip/re/pull/134
* move network check to module by @cspiel1 in https://github.com/baresip/re/pull/152
* odict: move odict_compare from retest to re by @fAuernigg in https://github.com/baresip/re/pull/153
* sip: reuse transport protocol of first request in dialog (#143) by @cspiel1 in https://github.com/baresip/re/pull/144
* json: fix parsing json containing only single value by @fAuernigg in https://github.com/baresip/re/pull/155
* ice: fix checklist by @alfredh in https://github.com/baresip/re/pull/156
* mk: add compile_commands.json (clang only) by @sreimers in https://github.com/baresip/re/pull/157
* sdp: debug print session and media direction by @cspiel1 in https://github.com/baresip/re/pull/158
* add btrace module (linux/unix only) by @sreimers in https://github.com/baresip/re/pull/160
* mk: add CC_TEST header check by @sreimers in https://github.com/baresip/re/pull/162
* init dst address by @cspiel1 in https://github.com/baresip/re/pull/164
* ice: check if candpair exist before adding by @alfredh in https://github.com/baresip/re/pull/165
* mk: add CC_TEST cache by @sreimers in https://github.com/baresip/re/pull/163
* btrace: use HAVE_EXECINFO by @sreimers in https://github.com/baresip/re/pull/166
* Coverity by @sreimers in https://github.com/baresip/re/pull/170
* icem: remove dead code (found by coverity 240639) by @sreimers in https://github.com/baresip/re/pull/171
* hash: switch to simpler "fast algorithm" by @ydroneaud in https://github.com/baresip/re/pull/173
* dns: fix dnsc_alloc with IPv6 disabled by @sreimers in https://github.com/baresip/re/pull/174
* mk: deprecate HAVE_INET6 by @sreimers in https://github.com/baresip/re/pull/175
* Fix for btrace print for memory leaks by @cspiel1 in https://github.com/baresip/re/pull/177
* set sdp laddr to SIP src address by @cspiel1 in https://github.com/baresip/re/pull/172
* sdp: include all media formats in SDP offer by @cHuberCoffee in https://github.com/baresip/re/pull/176
* ci: add centos 7 build test by @sreimers in https://github.com/baresip/re/pull/179
* sip: move sip_auth_encode to public api for easier testing by @sreimers in https://github.com/baresip/re/pull/181
* sipsess: do not call desc handler on shutdown by @cspiel1 in https://github.com/baresip/re/pull/182
* stream flush rtp socket by @cspiel1 in https://github.com/baresip/re/pull/185
* ci: fix macos openssl build by @sreimers in https://github.com/baresip/re/pull/188
* http: HTTP Host header conform to RFC for IPv6 addresses by @cspiel1 in https://github.com/baresip/re/pull/189
* Increased debian compatibility level from 9 to 10 by @juha-h in https://github.com/baresip/re/pull/192
* mk: move darwin dns LFLAGS to re.mk (fixes static builds) by @sreimers in https://github.com/baresip/re/pull/193
* build infrastructure: silent and verbose modes by @abrodkin in https://github.com/baresip/re/pull/194
* mk: use posix regex for sed CC major version detection by @sreimers in https://github.com/baresip/re/pull/195
* dns: fix parse_resolv_conf for OpenBSD by @sreimers in https://github.com/baresip/re/pull/196
* sip: add optional TCP source port by @cspiel1 in https://github.com/baresip/re/pull/198
* ci: add mingw build and test by @sreimers in https://github.com/baresip/re/pull/199
* net: remove net_hostaddr by @sreimers in https://github.com/baresip/re/pull/200
* ci/centos7: add openssl by @sreimers in https://github.com/baresip/re/pull/203
* hmac: use HMAC() api (fixes OpenSSL 3.0 deprecations) by @sreimers in https://github.com/baresip/re/pull/202
* md5: use EVP_Digest for newer openssl versions by @sreimers in https://github.com/baresip/re/pull/204
* sha: add new sha1() api by @sreimers in https://github.com/baresip/re/pull/205
* OpenSSL 3.0 by @sreimers in https://github.com/baresip/re/pull/206
* udp: add win32 qos support by @sreimers in https://github.com/baresip/re/pull/186
* ci/mingw: fix dependency checkout by @sreimers in https://github.com/baresip/re/pull/207
* ice: remove ice_mode by @alfredh in https://github.com/baresip/re/pull/147
* Codeql security by @sreimers in https://github.com/baresip/re/pull/208
* aubuf insert auframes sorted by @cspiel1 in https://github.com/baresip/re/pull/209
* ci: add valgrind by @sreimers in https://github.com/baresip/re/pull/214
* tls: remove code for openssl 0.9.5 by @alfredh in https://github.com/baresip/re/pull/215
* ice: remove unused file by @alfredh in https://github.com/baresip/re/pull/217
* main: remove obsolete OPENWRT epoll check by @alfredh in https://github.com/baresip/re/pull/218
* dns,http,sa: fix HAVE_INET6 off warnings by @sreimers in https://github.com/baresip/re/pull/219
* preliminary support for cmake by @alfredh in https://github.com/baresip/re/pull/220
* make,cmake: set SOVERSION to major version by @sreimers in https://github.com/baresip/re/pull/221
* mk: remove MSVC project files, use cmake instead by @alfredh in https://github.com/baresip/re/pull/223
* natbd: remove module (deprecated) by @alfredh in https://github.com/baresip/re/pull/225
* sha: remove backup implementation by @alfredh in https://github.com/baresip/re/pull/224
* sha,hmac: use Apple CommonCrypto if defined by @alfredh in https://github.com/baresip/re/pull/226
* stun: add stun_generate_tid by @alfredh in https://github.com/baresip/re/pull/227
* add cmakelint by @sreimers in https://github.com/baresip/re/pull/228
* Cmake version by @alfredh in https://github.com/baresip/re/pull/229
* cmake: add option to enable/disable rtmp module by @alfredh in https://github.com/baresip/re/pull/230
* lock: use rwlock by default by @sreimers in https://github.com/baresip/re/pull/232
* cmake: fixes for MSVC 16 by @alfredh in https://github.com/baresip/re/pull/233
* json: fix win32 warnings by @alfredh in https://github.com/baresip/re/pull/234
* ci: add cmake build by @sreimers in https://github.com/baresip/re/pull/222
* mqueue: fix win32 warnings by @alfredh in https://github.com/baresip/re/pull/235
* tcp: fix win32 warnings by @alfredh in https://github.com/baresip/re/pull/236
* cmake: fix target_link_libraries for win32 by @alfredh in https://github.com/baresip/re/pull/238
* stun: fix win32 warnings by @alfredh in https://github.com/baresip/re/pull/237
* udp: fix win32 warnings by @alfredh in https://github.com/baresip/re/pull/239
* tls: fix win32 warnings by @alfredh in https://github.com/baresip/re/pull/241
* remove HAVE_INTTYPES_H by @alfredh in https://github.com/baresip/re/pull/231
* udp: fix win32 warnings by @alfredh in https://github.com/baresip/re/pull/242
* cmake: minor fixes by @alfredh in https://github.com/baresip/re/pull/244
* cmake: fix MSVC ninja by @sreimers in https://github.com/baresip/re/pull/243
* tcp: fix win32 warnings by @alfredh in https://github.com/baresip/re/pull/245
* udp: fix win32 msvc warnings by @sreimers in https://github.com/baresip/re/pull/246
* rtmp: fix win32 warning by @sreimers in https://github.com/baresip/re/pull/247
* bfcp: fix win32 warning by @sreimers in https://github.com/baresip/re/pull/248
* tls: fix libressl 3.5 by @sreimers in https://github.com/baresip/re/pull/250
* fix coverity scan warnings by @sreimers in https://github.com/baresip/re/pull/251
* Allow hanging up call that has not been ACKed yet by @juha-h in https://github.com/baresip/re/pull/252
* mk,cmake: add backtrace support and fix linking on OpenBSD by @sreimers in https://github.com/baresip/re/pull/254
* github: add CMake and Windows workflow by @alfredh in https://github.com/baresip/re/pull/255
* Windows (VS 2022/Ninja) by @sreimers in https://github.com/baresip/re/pull/257
* cmake: fixes for Android by @alfredh in https://github.com/baresip/re/pull/258
* tmr: reuse tmr_jiffies_usec by @alfredh in https://github.com/baresip/re/pull/259
* trace: use gettid as thread_id on linux by @sreimers in https://github.com/baresip/re/pull/213
* tmr: use CLOCK_MONOTONIC_RAW if defined by @alfredh in https://github.com/baresip/re/pull/260
* add atomic support by @sreimers in https://github.com/baresip/re/pull/261
* Sonarcloud by @sreimers in https://github.com/baresip/re/pull/262
* sip: fix gcc 6.3.0 warning for logical expression (#256) by @cspiel1 in https://github.com/baresip/re/pull/263
* add transport-cc rtcp feedback support by @fippo in https://github.com/baresip/re/pull/264

### New Contributors
* @I-mpossible made their first contribution in https://github.com/baresip/re/pull/119
* @viordash made their first contribution in https://github.com/baresip/re/pull/136
* @ydroneaud made their first contribution in https://github.com/baresip/re/pull/173
* @abrodkin made their first contribution in https://github.com/baresip/re/pull/194

---

## [v2.0.1] - 2021-04-22

### Fixed

- tmr: fix FreeBSD and OpenBSD [#97]
- mk: fix clang analyze CFLAGS

### Changed

- tls: different return values for tls_get_ca_chain_field() [#94]

---

## [v2.0.0] - 2021-04-10

### Added

- .gitignore: add ctags and vim swp files to gitignore [#31]
- tls: add tls_add_capem() for adding CA cert as PEM string [#33]
- httpauth: Add digest support for http clients [#33]
- httpauth: Add basic authentication for HTTP clients [#33]
- dns: add set function for DNS config [#33]
- http/client: support IPv6 [#33]
- http/client: use const parameter for set laddr(6) functions [#33]
- http/client: add set function for timeout [#33]
- http/client: add http_client_add_capem() [#33]
- http/client: add set functions for client certificate and private key [#33]
- http: add HTTP request connection with authorization [#33]
- http: setting of timeouts for http client [#35]
- http: set default path for http requests [#35]
- tls: set selfsigned Elliptic Curve (EC) function [#17]
- tls: extend server verification by host name check (SNI) [#45]
- jbuf: adapative jitter buffer [#41]
- tmr: add tmr_jiffies_usec() - get accurate microseconds [#52]
- fmt: add pl_i32() that converts pl to int32_t [#60]
- fmt: add pl_i64() that converts pl to int64_t [#60]
- mk/re: add C11 and Atomic detection [#61]
- ci: add abi check [#39]
- trace: add re_trace api [#48]
- Add function that resets the timeout timer for a connection of the HTTP server. [#88]
- add error trace helpers [#87]
- sip/auth: add algorithm=MD5 [#86]
- sys: filesystem isdir function
- tls: use ENOENT in tls_add_cafile_path as error code
- tls: more generic function to set cafile and capath
- mk: add .so name versioning, resolves #32
- mk/re: add clang shorten-64-to-32 warning
- mk/re: document new library/header prioritised order with custom SYSROOT
- mk/re: info double colon rule (#64) [#64]
- udp: Add function udp_open for socket without bind
- rtp: Add rtp_open which creates an RTP object only for sending. [#77]
- sip: add decode function for SIP transport
- sip: SIP/TLS Server Name Indication (#67) [#67]
- transp: add flag to disable SIP TLS server verification [#76]

### Removed

- openssl: remove obsolete function tls_set_hostname() [#33]
- mk/re: remove gcc 2.x/3.x support [#58]
- ci: drop ubuntu 16.04 support - end of life

### Changed

- http/client: cleanup doxygen [#33]
- http/client: use host of http_req for the host name validation [#37]
- main: disable MAIN_DEBUG, TMR_DEBUG and increase MAX_BLOCKING to 500ms [#43]
- sipreg: dont't force digest challenge for register [#49]
- mk/re: do not override LIBRE_INC, LIBRE_SO and LIBRE_PATH [#62]
- readme: update supported systems and add tiers [#81]
- tls: use ENOTDIR in tls_add_cafile_path if capath is not a dir [#84]
- tls: check capath is directory
- net: get default source addr from udp local test socket [#66]
- Update chklist.c [#70]
- Update icesdp.c [#69]
- mk: cross build changes (#63) [#63]
- sip: use sip_transp_decode() [#71]
- tls: tls_get_issuer/subject return the info of the first loaded ca [#80]

### Fixed

- dns/client: fix HAVE_INET6 and win32/vcxproj: updates [#28]
- http: fix segfault in response.c [#35]
- http/request: parameter NULL check for http_reqconn_send() [#37]
- http/client: fix conn_idle [#46]
- http/httpreq: mem leak fix [#47]
- sip/request: fix msg->scode null pointer dereference
- rtmp/conn: initialize err
- mk/re: fix LIBRE_SO static detection
- dns/res: Properly process IPV4 and IPV6 addresses (DARWIN) [#56]
- sip/keepalive: fix codeql cpp/integer-multiplication-cast-to-long
- fmt/time: fix codeql gmtime warning
- mk/re: fix gcc 4.x and newer compiler warnings
- sys: add _BSD_SOURCE 1 for compatibility reasons [#92]
- fix weak self-signed certificates [#68]
- net/tls: fixing shorten-64-to-32 warnings [#65]
- http: add missing newline to warning [#78]
- http: fix file read for client certificates
- mk/re: do not override LIBRE_INC, LIBRE_SO and LIBRE_PATH [#62]
- tls: safety NULL pointer check in tls_add_ca() [#79]

### Contributors (many thanks)

- [sreimers](https://github.com/sreimers)
- [cHuberCoffee](https://github.com/cHuberCoffee)
- [RobertMi21](https://github.com/RobertMi21)
- [cspiel1](https://github.com/cspiel1)
- [alfredh](https://github.com/alfredh)
- [fippo](https://github.com/fippo)
- [jurjen-van-dijk](https://github.com/jurjen-van-dijk)
- [rolizo](https://github.com/rolizo)


## [v1.1.0] - 2020-10-04

### Added

- tls: functions to get the certificate issuer and subject [#18]
- uri: Added path field to struct uri and its decode to uri_decode [#22]
- tcp: add tcp_connect_bind [#24]
- http: support bind to laddr in http_request [#24]
- sipreg: support Cisco REGISTER keep-alives [#19]
- sip: websocket support [#26]

### Fixed

- tls/openssl: fix X509_NAME win32/wincrypt.h conflict
- dns: listen on IPv4 and IPv6 socket [#27]
- main: fix/optimize windows file descriptors [#25]

### Contributors (many thanks)

- Alfred E. Heggestad
- Christian Spielberger
- Christoph Huber
- Franz Auernigg
- Juha Heinanen
- johnjuuljensen
- Sebastian Reimers


## [v1.0.0] - 2020-09-08

### Added

- sip: add trace
- sdp: sdp_media_disabled API function [#2]
- tls: add tls_set_selfsigned_rsa [#6]
- tls: add functions to verify server cert, purpose and hostname [#10]
- http: client should set SNI [#10]
- http: client should use tls functions to verify server certs, purpose
  and hostname [#10]
- sipreg: add proxy expires field and get function [#13]
- sipreg: make re-register interval configurable [#13]

### Changed

- debian: Automatic cleanup after building debian package

### Fixed

- Set SDK path (SYSROOT) using xcrun (fix building on macOS 10.14)
- tcp: close socket on windows if connection is aborted or reset [#1]
- rtmp: Fix URL path parsing (creytiv#245)
- ice: various fixes [baresip/baresip#925]
- openssl/tls: replace deprecated openssl 1.1.0 functions [#5]

### Contributors (many thanks)

- Alfred E. Heggestad
- Christian Spielberger
- Christoph Huber
- Franz Auernigg
- juha-h
- Juha Heinanen
- Richard Aas
- Sebastian Reimers

[#97]: https://github.com/baresip/re/pull/97
[#94]: https://github.com/baresip/re/pull/94
[#81]: https://github.com/baresip/re/pull/81
[#48]: https://github.com/baresip/re/pull/48
[#92]: https://github.com/baresip/re/pull/92
[#88]: https://github.com/baresip/re/pull/88
[#87]: https://github.com/baresip/re/pull/87
[#86]: https://github.com/baresip/re/pull/86
[#84]: https://github.com/baresip/re/pull/84
[#83]: https://github.com/baresip/re/pull/83
[#82]: https://github.com/baresip/re/pull/82
[#80]: https://github.com/baresip/re/pull/80
[#79]: https://github.com/baresip/re/pull/79
[#78]: https://github.com/baresip/re/pull/78
[#77]: https://github.com/baresip/re/pull/77
[#76]: https://github.com/baresip/re/pull/76
[#39]: https://github.com/baresip/re/pull/39
[#66]: https://github.com/baresip/re/pull/66
[#74]: https://github.com/baresip/re/pull/74
[#67]: https://github.com/baresip/re/pull/67
[#71]: https://github.com/baresip/re/pull/71
[#70]: https://github.com/baresip/re/pull/70
[#69]: https://github.com/baresip/re/pull/69
[#68]: https://github.com/baresip/re/pull/68
[#65]: https://github.com/baresip/re/pull/65
[#63]: https://github.com/baresip/re/pull/63
[#64]: https://github.com/baresip/re/pull/64
[#62]: https://github.com/baresip/re/pull/62
[#61]: https://github.com/baresip/re/pull/61
[#60]: https://github.com/baresip/re/pull/60
[#58]: https://github.com/baresip/re/pull/58
[#56]: https://github.com/baresip/re/pull/56
[#52]: https://github.com/baresip/re/pull/52
[#49]: https://github.com/baresip/re/pull/49
[#47]: https://github.com/baresip/re/pull/47
[#46]: https://github.com/baresip/re/pull/46
[#45]: https://github.com/baresip/re/pull/45
[#43]: https://github.com/baresip/re/pull/43
[#41]: https://github.com/baresip/re/pull/41
[#37]: https://github.com/baresip/re/pull/37
[#35]: https://github.com/baresip/re/pull/35
[#33]: https://github.com/baresip/re/pull/33
[#31]: https://github.com/baresip/re/pull/31
[#28]: https://github.com/baresip/re/pull/28
[#27]: https://github.com/baresip/re/pull/27
[#26]: https://github.com/baresip/re/pull/26
[#25]: https://github.com/baresip/re/pull/25
[#19]: https://github.com/baresip/re/pull/19
[#24]: https://github.com/baresip/re/pull/24
[#22]: https://github.com/baresip/re/pull/22
[#18]: https://github.com/baresip/re/pull/18
[#17]: https://github.com/baresip/re/pull/17
[#13]: https://github.com/baresip/re/pull/13
[#10]: https://github.com/baresip/re/pull/10
[#6]: https://github.com/baresip/re/pull/6
[#5]: https://github.com/baresip/re/pull/5
[#2]: https://github.com/baresip/re/pull/2
[#1]: https://github.com/baresip/re/pull/1

[Unreleased]: https://github.com/baresip/re/compare/v2.7.0...HEAD
[v2.7.0]: https://github.com/baresip/re/compare/v2.6.0...v2.7.0
[v2.6.0]: https://github.com/baresip/re/compare/v2.5.0...v2.6.0
[v2.5.0]: https://github.com/baresip/re/compare/v2.4.0...v2.5.0
[v2.4.0]: https://github.com/baresip/re/compare/v2.3.0...v2.4.0
[v2.3.0]: https://github.com/baresip/re/compare/v2.2.2...v2.3.0
[v2.2.2]: https://github.com/baresip/re/compare/v2.2.1...v2.2.2
[v2.2.1]: https://github.com/baresip/re/compare/v2.2.0...v2.2.1
[v2.2.0]: https://github.com/baresip/re/compare/v2.1.1...v2.2.0
[v2.1.1]: https://github.com/baresip/re/compare/v2.1.0...v2.1.1
[v2.1.0]: https://github.com/baresip/re/compare/v2.0.1...v2.1.0
[v2.0.1]: https://github.com/baresip/re/compare/v2.0.0...v2.0.1
[v2.0.0]: https://github.com/baresip/re/compare/v1.1.0...v2.0.0
[v1.1.0]: https://github.com/baresip/re/compare/v1.0.0...v1.1.0
[v1.0.0]: https://github.com/baresip/re/compare/v0.6.1...v1.0.0


================================================
FILE: CMakeLists.txt
================================================
#
# CMakeLists.txt
#
# Copyright (C) 2010 - 2025 Alfred E. Heggestad
# Copyright (C) 2022 - 2025 Sebastian Reimers
# Copyright (C) 2023 - 2025 Christian Spielberger
#

##############################################################################
#
# Versioning
#

cmake_minimum_required(VERSION 3.18...4.0)

project(re
  VERSION 4.8.0
  LANGUAGES C
  HOMEPAGE_URL https://github.com/baresip/re
  DESCRIPTION "Generic library for real-time communications"
)

set(PROJECT_SOVERSION 42) # bump if ABI breaks

# Pre-release identifier, comment out on a release
# Increment for breaking changes (dev2, dev3...)
#set(PROJECT_VERSION_PRE dev)

if(PROJECT_VERSION_PRE)
  set(PROJECT_VERSION_FULL ${PROJECT_VERSION}-${PROJECT_VERSION_PRE})
else()
  set(PROJECT_VERSION_FULL ${PROJECT_VERSION})
endif()

if(WIN32 AND NOT MINGW)
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std:c11")
endif()

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)

##############################################################################
#
# Module/Package Includes
#
include(GNUInstallDirs)
include(CheckCCompilerFlag)

##############################################################################
#
# Options
#

option(USE_REM "Enable Librem" ON)
option(USE_BFCP "Enable BFCP" ON)
option(USE_PCP "Enable PCP" ON)
option(USE_RTMP "Enable RTMP" ON)
option(USE_SIP "Enable SIP" ON)
option(LIBRE_BUILD_SHARED "Build shared library" ON)
option(LIBRE_BUILD_STATIC "Build static library" ON)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

if(MSVC)
  add_compile_options("/W3")
else()

  set(c_flags
    -pedantic
    -Wall
    -Wbad-function-cast
    -Wcast-align
    -Wextra
    -Wmissing-declarations
    -Wmissing-prototypes
    -Wnested-externs
    -Wno-strict-aliasing
    -Wold-style-definition
    -Wshadow
    -Wstrict-prototypes
    -Wuninitialized
    -Wvla
  )

  add_compile_options(
    "$<$<COMPILE_LANGUAGE:C>:${c_flags}>"
  )
endif()

if(CMAKE_C_COMPILER_ID MATCHES "Clang")
    add_compile_options(
      -Wno-gnu-zero-variadic-macro-arguments
      -Wno-c2x-extensions
    )
    add_compile_options("$<$<COMPILE_LANGUAGE:C>:-Wshorten-64-to-32>")
endif()

check_c_compiler_flag("-Watomic-implicit-seq-cst" COMPILER_SUPPORTS_WATOMIC)
if(COMPILER_SUPPORTS_WATOMIC)
  add_compile_options("$<$<COMPILE_LANGUAGE:C>:-Watomic-implicit-seq-cst>")
endif()

if(CMAKE_C_COMPILER_ID MATCHES "Clang")
  # Ensure struct mem is aligned (used as fat pointer)
  set_source_files_properties(src/mem/mem.c PROPERTIES COMPILE_FLAGS -Wpadded)
endif()

set(re_DIR ${CMAKE_CURRENT_LIST_DIR}/cmake)
include("${CMAKE_CURRENT_LIST_DIR}/cmake/re-config.cmake")

list(APPEND RE_DEFINITIONS
  -DRE_VERSION="${PROJECT_VERSION_FULL}"
  -DVER_MAJOR=${PROJECT_VERSION_MAJOR}
  -DVER_MINOR=${PROJECT_VERSION_MINOR}
  -DVER_PATCH=${PROJECT_VERSION_PATCH}
  -D_GNU_SOURCE
)

if(DEFINED TRACE_SSL)
  list(APPEND RE_DEFINITIONS
    -DTRACE_SSL="${TRACE_SSL}")
endif()

##############################################################################
#
# Source/Header section
#

set(HEADERS
  include/re.h
  include/re_aes.h
  include/re_async.h
  include/re_atomic.h
  include/re_av1.h
  include/re_base64.h
  include/re_bfcp.h
  include/re_btrace.h
  include/re_conf.h
  include/re_convert.h
  include/re_crc32.h
  include/re_dbg.h
  include/re_dd.h
  include/re_dns.h
  include/re_fmt.h
  include/re_h264.h
  include/re_h265.h
  include/re_hash.h
  include/re_hmac.h
  include/re_http.h
  include/re_httpauth.h
  include/re_ice.h
  include/re_json.h
  include/re_list.h
  include/re_main.h
  include/re_mbuf.h
  include/re_md5.h
  include/re_mem.h
  include/re_mod.h
  include/re_mqueue.h
  include/re_msg.h
  include/re_net.h
  include/re_odict.h
  include/re_pcp.h
  include/re_rtmp.h
  include/re_rtp.h
  include/re_rtpext.h
  include/re_sa.h
  include/re_sdp.h
  include/re_sha.h
  include/re_shim.h
  include/re_sip.h
  include/re_sipevent.h
  include/re_sipreg.h
  include/re_sipsess.h
  include/re_srtp.h
  include/re_stun.h
  include/re_sys.h
  include/re_tcp.h
  include/re_telev.h
  include/re_thread.h
  include/re_tls.h
  include/re_tmr.h
  include/re_trace.h
  include/re_trice.h
  include/re_turn.h
  include/re_types.h
  include/re_udp.h
  include/re_unixsock.h
  include/re_uri.h
  include/re_websock.h
  include/rem_aac.h
  include/rem_aubuf.h
  include/rem_auconv.h
  include/rem_audio.h
  include/rem_aufile.h
  include/rem_auframe.h
  include/rem_au.h
  include/rem_aulevel.h
  include/rem_aumix.h
  include/rem_auresamp.h
  include/rem_autone.h
  include/rem_avc.h
  include/rem_dsp.h
  include/rem_dtmf.h
  include/rem_fir.h
  include/rem_flv.h
  include/rem_g711.h
  include/rem_goertzel.h
  include/rem.h
  include/rem_vidconv.h
  include/rem_video.h
  include/rem_vid.h
  include/rem_vidmix.h
)


set(SRCS

  src/av1/depack.c
  src/av1/obu.c
  src/av1/pkt.c

  src/async/async.c

  src/base64/b64.c

  src/btrace/btrace.c

  src/conf/conf.c

  src/dbg/dbg.c

  src/dd/dd.c
  src/dd/dd_enc.c
  src/dd/putbit.c

  src/dns/client.c
  src/dns/cstr.c
  src/dns/dname.c
  src/dns/hdr.c
  src/dns/ns.c
  src/dns/rr.c
  src/dns/rrlist.c

  src/fmt/ch.c
  src/fmt/hexdump.c
  src/fmt/pl.c
  src/fmt/print.c
  src/fmt/prm.c
  src/fmt/regex.c
  src/fmt/str.c
  src/fmt/str_error.c
  src/fmt/text2pcap.c
  src/fmt/time.c
  src/fmt/unicode.c

  src/h264/getbit.c
  src/h264/nal.c
  src/h264/sps.c

  src/h265/nal.c

  src/hash/func.c
  src/hash/hash.c

  src/hmac/hmac_sha1.c

  src/http/auth.c
  src/http/chunk.c
  src/http/client.c
  src/http/msg.c
  src/http/request.c
  src/http/server.c

  src/httpauth/basic.c
  src/httpauth/digest.c

  src/ice/cand.c
  src/ice/candpair.c
  src/ice/chklist.c
  src/ice/comp.c
  src/ice/connchk.c
  src/ice/icem.c
  src/ice/icesdp.c
  src/ice/icestr.c
  src/ice/stunsrv.c
  src/ice/util.c

  src/json/decode.c
  src/json/decode_odict.c
  src/json/encode.c

  src/list/list.c

  src/main/init.c
  src/main/main.c
  src/main/method.c

  src/mbuf/mbuf.c

  src/md5/wrap.c

  src/mem/mem.c
  src/mem/mem_pool.c
  src/mem/secure.c

  src/mod/mod.c

  src/mqueue/mqueue.c

  src/msg/ctype.c
  src/msg/param.c

  src/net/if.c
  src/net/net.c
  src/net/netstr.c
  src/net/rt.c
  src/net/sock.c
  src/net/sockopt.c

  src/odict/entry.c
  src/odict/get.c
  src/odict/odict.c
  src/odict/type.c

  src/rtp/fb.c
  src/rtp/member.c
  src/rtp/ntp.c
  src/rtp/pkt.c
  src/rtp/rr.c
  src/rtp/rtcp.c
  src/rtp/rtp.c
  src/rtp/sdes.c
  src/rtp/sess.c
  src/rtp/source.c

  src/rtpext/rtpext.c

  src/sa/printaddr.c
  src/sa/sa.c

  src/sdp/attr.c
  src/sdp/format.c
  src/sdp/media.c
  src/sdp/msg.c
  src/sdp/session.c
  src/sdp/str.c
  src/sdp/util.c

  src/sha/wrap.c

  src/shim/shim.c

  src/srtp/misc.c
  src/srtp/replay.c
  src/srtp/srtcp.c
  src/srtp/srtp.c
  src/srtp/stream.c

  src/stun/addr.c
  src/stun/attr.c
  src/stun/ctrans.c
  src/stun/dnsdisc.c
  src/stun/hdr.c
  src/stun/ind.c
  src/stun/keepalive.c
  src/stun/msg.c
  src/stun/rep.c
  src/stun/req.c
  src/stun/stun.c
  src/stun/stunstr.c

  src/sys/daemon.c
  src/sys/endian.c
  src/sys/fs.c
  src/sys/rand.c
  src/sys/sleep.c
  src/sys/sys.c

  src/tcp/tcp.c
  src/tcp/tcp_high.c

  src/telev/telev.c

  src/thread/thread.c

  src/tmr/tmr.c

  src/trace/trace.c

  src/trice/cand.c
  src/trice/candpair.c
  src/trice/chklist.c
  src/trice/connchk.c
  src/trice/lcand.c
  src/trice/rcand.c
  src/trice/stunsrv.c
  src/trice/tcpconn.c
  src/trice/trice.c

  src/turn/chan.c
  src/turn/perm.c
  src/turn/turnc.c

  src/udp/mcast.c
  src/udp/udp.c
  src/unixsock/unixsock.c

  src/uri/uri.c
  src/uri/uric.c

  src/websock/websock.c
)

set(REM_SRCS
  rem/aac/aac.c
  rem/au/fmt.c
  rem/au/util.c
  rem/aubuf/aubuf.c
  rem/aubuf/ajb.c
  rem/auconv/auconv.c
  rem/aufile/aufile.c
  rem/aufile/wave.c
  rem/auframe/auframe.c
  rem/aulevel/aulevel.c
  rem/aumix/aumix.c
  rem/auresamp/resamp.c
  rem/autone/tone.c
  rem/avc/config.c
  rem/dtmf/dec.c
  rem/fir/fir.c
  rem/g711/g711.c
  rem/goertzel/goertzel.c
  rem/vid/draw.c
  rem/vid/fmt.c
  rem/vid/frame.c
  rem/vidconv/vconv.c
  rem/vidmix/vidmix.c
)


if(USE_BFCP)
  list(APPEND SRCS
    src/bfcp/attr.c
    src/bfcp/conn.c
    src/bfcp/msg.c
    src/bfcp/reply.c
    src/bfcp/request.c
  )
endif()


if(USE_PCP)
  list(APPEND SRCS
    src/pcp/msg.c
    src/pcp/option.c
    src/pcp/payload.c
    src/pcp/pcp.c
    src/pcp/reply.c
    src/pcp/request.c
  )
endif()


if(USE_RTMP)
  list(APPEND SRCS
    src/rtmp/amf.c
    src/rtmp/amf_dec.c
    src/rtmp/amf_enc.c
    src/rtmp/chunk.c
    src/rtmp/conn.c
    src/rtmp/control.c
    src/rtmp/ctrans.c
    src/rtmp/dechunk.c
    src/rtmp/hdr.c
    src/rtmp/stream.c
  )
endif()


if(USE_SIP)
  list(APPEND SRCS
    src/sip/addr.c
    src/sip/auth.c
    src/sip/contact.c
    src/sip/cseq.c
    src/sip/ctrans.c
    src/sip/dialog.c
    src/sip/keepalive.c
    src/sip/keepalive_udp.c
    src/sip/msg.c
    src/sip/rack.c
    src/sip/reply.c
    src/sip/request.c
    src/sip/sip.c
    src/sip/strans.c
    src/sip/transp.c
    src/sip/via.c

    src/sipevent/listen.c
    src/sipevent/msg.c
    src/sipevent/notify.c
    src/sipevent/subscribe.c

    src/sipreg/reg.c

    src/sipsess/accept.c
    src/sipsess/ack.c
    src/sipsess/close.c
    src/sipsess/connect.c
    src/sipsess/info.c
    src/sipsess/listen.c
    src/sipsess/modify.c
    src/sipsess/prack.c
    src/sipsess/reply.c
    src/sipsess/request.c
    src/sipsess/sess.c
    src/sipsess/update.c
  )
endif()


if(USE_OPENSSL)
  list(APPEND SRCS
    src/main/openssl.c
    src/aes/openssl/aes.c
    src/tls/openssl/tls_tcp.c
    src/tls/openssl/tls_udp.c
    src/tls/openssl/tls.c
    src/tls/openssl/sni.c
    src/hmac/openssl/hmac.c
  )
elseif(APPLE)
  list(APPEND SRCS
    src/aes/apple/aes.c
    src/hmac/apple/hmac.c
  )
else()
  list(APPEND SRCS
    src/aes/stub.c
    src/hmac/hmac.c
    src/tls/stub.c
  )
endif()


if(WIN32)
  list(APPEND SRCS
    src/dns/win32/srv.c
    src/mod/win32/dll.c
    src/mqueue/win32/pipe.c
    src/net/win32/wif.c
  )
elseif(UNIX)
  list(APPEND SRCS
    src/mod/dl.c
    src/net/posix/pif.c
  )
  if(HAVE_GETIFADDRS)
    list(APPEND SRCS
      src/net/ifaddrs.c
    )
  endif()
endif()

list(APPEND SRCS
  src/crc32/crc32.c
)

if(HAVE_THREADS)
  #Do nothing
elseif(CMAKE_USE_WIN32_THREADS_INIT)
  list(APPEND SRCS
    src/thread/win32.c
  )
else()
  list(APPEND SRCS
    src/thread/posix.c
  )
endif()

if(HAVE_RESOLV)
  list(APPEND SRCS
    src/dns/res.c
  )
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  list(APPEND SRCS
    src/dns/darwin/srv.c
    src/net/bsd/brt.c
  )
elseif(${CMAKE_SYSTEM_NAME} MATCHES "iOS")
  list(APPEND SRCS
    src/dns/darwin/srv.c
  )
elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
  list(APPEND SRCS
    src/net/bsd/brt.c
  )
elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
  list(APPEND SRCS
    src/net/bsd/brt.c
  )
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  list(APPEND SRCS
    src/net/linux/rt.c
    src/net/linux/addrs.c
  )
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android")
  list(APPEND SRCS
    src/net/linux/rt.c
  )
endif()

if(USE_REM)
  list(APPEND SRCS ${REM_SRCS})
endif()


##############################################################################
#
# Main target object
#

add_library(re-objs OBJECT ${SRCS} ${HEADERS})

set_target_properties(re-objs PROPERTIES POSITION_INDEPENDENT_CODE ON)

target_compile_definitions(re-objs PRIVATE ${RE_DEFINITIONS})

target_include_directories(re-objs PRIVATE include)
target_include_directories(re-objs PRIVATE
  ${OPENSSL_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS})


##############################################################################
#
# Shared target libre.[so|dll|dylib]
#

if(LIBRE_BUILD_SHARED)
  list(APPEND RE_INSTALL_TARGETS re-shared)
  add_library(re-shared SHARED $<TARGET_OBJECTS:re-objs>)
  target_link_libraries(re-shared PRIVATE ${RE_LIBS})
  set_target_properties(re-shared PROPERTIES VERSION
    ${PROJECT_SOVERSION}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
  set_target_properties(re-shared PROPERTIES SOVERSION ${PROJECT_SOVERSION})
  set_target_properties(re-shared PROPERTIES OUTPUT_NAME "re")
  add_library(libre::re-shared ALIAS re-shared)
endif()


##############################################################################
#
# Static target libre.a
#

if(LIBRE_BUILD_STATIC)
  list(APPEND RE_INSTALL_TARGETS re)
  add_library(re STATIC $<TARGET_OBJECTS:re-objs>)
  target_link_libraries(re PRIVATE ${RE_LIBS})
  target_include_directories(re PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  )
  add_library(libre::re ALIAS re)

  if(MSVC)
    set_target_properties(re PROPERTIES OUTPUT_NAME "re-static")
    if(NOT LIBRE_BUILD_SHARED)
      set(PC_LIBNAME "re-static")
    endif()
  endif()
endif()


##############################################################################
#
# PKGCONF section
#

if(NOT PC_LIBNAME)
  set(PC_LIBNAME "re")
endif()
set(PC_REQUIRES "")
set(PC_LINKLIBS "")
foreach(item IN LISTS RE_LIBS)
  if(item STREQUAL "Threads::Threads")
    list(APPEND PC_LINKLIBS ${CMAKE_THREADS_LIBS_INIT})
  elseif(item STREQUAL "OpenSSL::Crypto")
    list(APPEND PC_REQUIRES "libcrypto")
  elseif(item STREQUAL "OpenSSL::SSL")
    list(APPEND PC_REQUIRES "libssl")
  elseif(item STREQUAL "ZLIB::ZLIB")
    list(APPEND PC_REQUIRES "zlib")
  elseif(item MATCHES "^-|/")
    list(APPEND PC_LINKLIBS "${item}")
  else()
    list(APPEND PC_LINKLIBS "-l${item}")
  endif()
endforeach()
list(JOIN PC_LINKLIBS " " PC_LINKLIBS)
list(JOIN PC_REQUIRES " " PC_REQUIRES)
configure_file(packaging/libre.pc.in libre.pc @ONLY)


##############################################################################
#
# Install section
#

install(TARGETS ${RE_INSTALL_TARGETS}
  EXPORT libre
  RUNTIME
    DESTINATION ${CMAKE_INSTALL_BINDIR}
    COMPONENT Libraries
  LIBRARY
    DESTINATION ${CMAKE_INSTALL_LIBDIR}
    COMPONENT Libraries
    NAMELINK_SKIP
  ARCHIVE
    DESTINATION ${CMAKE_INSTALL_LIBDIR}
    COMPONENT Development
  INCLUDES
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/re
)

install(FILES ${HEADERS}
  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/re
  COMPONENT Development
)

install(EXPORT libre
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libre
  FILE libre-targets.cmake
  NAMESPACE libre::
  COMPONENT Development
)

if(LIBRE_BUILD_SHARED)
  install(TARGETS re-shared
    LIBRARY
      DESTINATION ${CMAKE_INSTALL_LIBDIR}
      NAMELINK_ONLY
      COMPONENT Development
  )
endif()

install(FILES cmake/re-config.cmake
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re
  COMPONENT Development
)

configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/libre-config.cmake"
  "${CMAKE_CURRENT_BINARY_DIR}/cmake/libre-config.cmake" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/libre-config.cmake"
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libre
  COMPONENT Development
)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libre.pc
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
  COMPONENT Development
)


##############################################################################
#
# Packaging section
#

if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
  add_subdirectory(packaging)
endif()


##############################################################################
# Test
#

add_subdirectory(test EXCLUDE_FROM_ALL)


================================================
FILE: LICENSE
================================================
Copyright (C) 2020 - 2026, Baresip Foundation (https://github.com/baresip)
Copyright (c) 2010 - 2024, Alfred E. Heggestad
Copyright (c) 2010 - 2020, Richard Aas
Copyright (c) 2010 - 2020, Creytiv.com
All rights reserved.


Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: Makefile
================================================
.PHONY: build
build:
	[ -d build ] || cmake -B build
	cmake --build build --parallel

.PHONY: ninja
ninja:
	[ -d build ] || cmake -B build -G Ninja
	make build

.PHONY: release
release:
	[ -d build ] || cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
	cmake --build build --parallel

.PHONY: dist
dist: build
	cmake --install build --prefix dist

.PHONY: deb
deb: release
	cd build && cpack -G DEB

.PHONY: test
test: build
	cmake --build build --parallel -t retest
	build/test/retest -rv

.PHONY: clean
clean:
	@rm -Rf build dist CMakeCache.txt CMakeFiles


###############################################################################
#
# Documentation section
#
DOX_DIR=../re-dox

$(DOX_DIR):
	@mkdir $@

$(DOX_DIR)/Doxyfile: mk/Doxyfile Makefile
	@cp $< $@
	@perl -pi -e 's/PROJECT_NUMBER\s*=.*/PROJECT_NUMBER = $(VERSION)/' \
	$(DOX_DIR)/Doxyfile

.PHONY:
dox:	$(DOX_DIR) $(DOX_DIR)/Doxyfile
	@doxygen $(DOX_DIR)/Doxyfile 2>&1 | grep -v DEBUG_ ; true
	echo "Doxygen docs in $(DOX_DIR)"


================================================
FILE: README.md
================================================
libre README
============


libre is a Generic library for real-time communications with async IO support.

- Copyright (C) 2010 - 2020 Creytiv.com
- Copyright (C) 2020 - 2026 Baresip Foundation (https://github.com/baresip)

![Build](https://github.com/baresip/re/workflows/Build/badge.svg)
![ccheck](https://github.com/baresip/re/workflows/ccheck/badge.svg)
![OpenSSL no-deprecated and LibreSSL](https://github.com/baresip/re/workflows/OpenSSL%20no-deprecated%20and%20LibreSSL/badge.svg)


## Features

* SIP Stack ([RFC 3261](https://tools.ietf.org/html/rfc3261))
* SDP
* RTP and RTCP
* SRTP and SRTCP (Secure RTP)
* DNS-Client
* STUN/TURN/ICE stack
* BFCP
* HTTP-stack with client/server
* Websockets
* Async I/O (select, epoll, kqueue)
* UDP/TCP/TLS/DTLS transport
* JSON parser
* Real Time Messaging Protocol (RTMP)


## Building

libre is using CMake. CMake and OpenSSL development headers must be
installed before building.


### Build with debug enabled

```
$ cmake -B build
$ cmake --build build -j
$ sudo cmake --install build
$ sudo ldconfig
```

### Build/run tests

```
cmake -B build && cmake --build build -t retest -j
build/test/retest -rv
```

On some distributions, /usr/local/lib may not be included in ld.so.conf. 
You can check with `grep "/usr/local/lib" /etc/ld.so.conf.d/*.conf` 
and add if necessary:

```
$ echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/libc.conf
$ sudo ldconfig
```


### Build with release

```
$ cmake -B build -DCMAKE_BUILD_TYPE=Release 
$ cmake --build build -j
$ sudo cmake --install build
$ sudo ldconfig
```

### Build with clang compiler

```
$ cmake -B build -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
$ cmake --build build -j
$ sudo cmake --install build
$ sudo ldconfig
```


### Examples

Coding examples are available from the
[redemo](https://github.com/creytiv/redemo "creytiv/redemo: Demo example applications using libre") project.


## License

The libre project is using the BSD license.


## Contributing

Patches can sent via Github
[Pull-Requests](https://github.com/baresip/re/pulls)


## Design goals

* Portable POSIX source code (ISO C99 and C11 standard)
* Robust, fast, low memory footprint
* RFC compliance
* IPv4 and IPv6 support


## Modules

| Name     | Status   | Description                                    |
|----------|----------|------------------------------------------------|
| aes      | stable   | AES (Advanced Encryption Standard)             |
| async    | testing  | Async module                                   |
| av1      | testing  | AV1 Packetizer                                 |
| base64   | stable   | Base-64 encoding/decoding functions            |
| bfcp     | stable   | The Binary Floor Control Protocol (BFCP)       |
| btrace   | testing  | Backtrace module                               |
| conf     | stable   | Configuration file parser                      |
| crc32    | stable   | 32-bit CRC defined in ITU V.42                 |
| dbg      | stable   | Debug printing                                 |
| dd       | testing  | Dependency Descriptor                          |
| dns      | stable   | DNS resolving (NAPTR, SRV, A)                  |
| fmt      | stable   | Formatted printing and regular expression      |
| h264     | testing  | H.264 packetizer                               |
| h265     | testing  | H.265 packetizer                               |
| hash     | stable   | Hashmap table                                  |
| hmac     | stable   | HMAC: Keyed-Hashing for Message Authentication |
| http     | stable   | HTTP parser (RFC 2616)                         |
| httpauth | stable   | HTTP-based Authentication (RFC 2617)           |
| ice      | stable   | Interactive Connectivity Establishment (ICE)   |
| json     | stable   | JavaScript Object Notation (JSON)              |
| list     | stable   | Sortable doubly-linked list handling           |
| main     | stable   | Main poll loop                                 |
| mbuf     | stable   | Linear memory buffers                          |
| md5      | stable   | The MD5 Message-Digest Algorithm (RFC 1321)    |
| mem      | stable   | Memory referencing                             |
| mod      | stable   | Run-time module loading                        |
| mqueue   | stable   | Thread-safe message queue                      |
| msg      | stable   | Generic message component library              |
| net      | stable   | Networking routines                            |
| odict    | stable   | Ordered Dictionary                             |
| pcp      | testing  | Port Control Protocol                          |
| rtmp     | stable   | Real Time Messaging Protocol                   |
| rtp      | stable   | Real-time Transport Protocol                   |
| rtpext   | testing  | RTP extensions                                 |
| sa       | stable   | Socket Address functions                       |
| sdp      | stable   | Session Description Protocol                   |
| sha      | stable   | Secure Hash Standard, NIST, FIPS PUB 180-1     |
| sip      | stable   | Core SIP library                               |
| sipevent | stable   | SIP Event framework                            |
| sipreg   | stable   | SIP register client                            |
| sipsess  | stable   | SIP Sessions                                   |
| srtp     | stable   | Secure Real-time Transport Protocol (SRTP)     |
| stun     | stable   | Session Traversal Utilities for NAT (STUN)     |
| sys      | stable   | System information                             |
| tcp      | stable   | TCP transport                                  |
| telev    | stable   | Telephony Events (RFC 4733)                    |
| thread   | testing  | C11 threads (with pthread and win32 emulation) |
| tls      | stable   | Transport Layer Security                       |
| tmr      | stable   | Timer handling                                 |
| turn     | stable   | Obtaining Relay Addresses from STUN (TURN)     |
| trace    | testing  | Trace Helpers JSON traces (chrome://tracing)   |
| trice    | testing  | Trickle ICE                                    |
| udp      | stable   | UDP transport                                  |
| unixsock | testing  | Unix domain sockets                            |
| uri      | stable   | Generic URI library                            |
| websock  | stable   | WebSocket Client and Server                    |

legend:
* *stable* - code complete; stable code and stable API
* *testing* - code complete, but API might change
* *unstable* - code complete but not completely tested
* *development* - code is under development


## Features

* [RFC 1321](https://tools.ietf.org/html/rfc1321) - The MD5 Message-Digest Algorithm
* [RFC 1886](https://tools.ietf.org/html/rfc1886) - DNS Extensions to support IP version 6
* [RFC 2616](https://tools.ietf.org/html/rfc2616) - Hypertext Transfer Protocol -- HTTP/1.1
* [RFC 2617](https://tools.ietf.org/html/rfc2617) - HTTP Authentication: Basic and Digest Access Authentication
* [RFC 2782](https://tools.ietf.org/html/rfc2782) - A DNS RR for Specifying the Location of Services (DNS SRV)
* [RFC 2915](https://tools.ietf.org/html/rfc2915) - The Naming Authority Pointer (NAPTR) DNS Resource Record
* [RFC 3261](https://tools.ietf.org/html/rfc3261) - SIP: Session Initiation Protocol
* [RFC 3262](https://tools.ietf.org/html/rfc3262) - SIP Reliability of Provisional Responses
* [RFC 3263](https://tools.ietf.org/html/rfc3263) - Locating SIP Servers
* [RFC 3264](https://tools.ietf.org/html/rfc3264) - An Offer/Answer Model with SDP
* [RFC 3265](https://tools.ietf.org/html/rfc3265) - SIP-Specific Event Notification
* [RFC 3311](https://tools.ietf.org/html/rfc3311) - The SIP UPDATE Method
* [RFC 3327](https://tools.ietf.org/html/rfc3327) - SIP Extension Header Field for Registering Non-Adjacent Contacts
* [RFC 3428](https://tools.ietf.org/html/rfc3428) - SIP Extension for Instant Messaging
* [RFC 3489](https://tools.ietf.org/html/rfc3489) - STUN - Simple Traversal of UDP Through NATs
* [RFC 3515](https://tools.ietf.org/html/rfc3515) - The SIP Refer Method
* [RFC 3550](https://tools.ietf.org/html/rfc3550) - RTP: A Transport Protocol for Real-Time Applications
* [RFC 3551](https://tools.ietf.org/html/rfc3551) - RTP Profile for Audio and Video Conferences with Minimal Control
* [RFC 3555](https://tools.ietf.org/html/rfc3555) - MIME Type Registration of RTP Payload Formats
* [RFC 3556](https://tools.ietf.org/html/rfc3556) - SDP Bandwidth Modifiers for RTCP Bandwidth
* [RFC 3581](https://tools.ietf.org/html/rfc3581) - An Extension to SIP for Symmetric Response Routing
* [RFC 3605](https://tools.ietf.org/html/rfc3605) - RTCP attribute in SDP
* [RFC 3611](https://tools.ietf.org/html/rfc3611) - RTCP Extended Reports
* [RFC 3711](https://tools.ietf.org/html/rfc3711) - The Secure Real-time Transport Protocol (SRTP)
* [RFC 3969](https://tools.ietf.org/html/rfc3969) - The IANA URI Parameter Registry for SIP
* [RFC 3994](https://tools.ietf.org/html/rfc3994) - Indication of Message Composition for Instant Messaging
* [RFC 4566](https://tools.ietf.org/html/rfc4566) - SDP: Session Description Protocol
* [RFC 4582](https://tools.ietf.org/html/rfc4582) - The Binary Floor Control Protocol (BFCP)
* [RFC 4582bis](https://tools.ietf.org/html/draft-ietf-bfcpbis-rfc4582bis-08) - The Binary Floor Control Protocol (BFCP)
* [RFC 4585](https://tools.ietf.org/html/rfc4585) - Extended RTP Profile for RTCP-Based Feedback
* [RFC 4733](https://tools.ietf.org/html/rfc4733) - RTP Payload for DTMF Digits, Telephony Tones, and Teleph. Signals
* [RFC 4961](https://tools.ietf.org/html/rfc4961) - Symmetric RTP / RTP Control Protocol (RTCP)
* [RFC 5104](https://tools.ietf.org/html/rfc5104) - Codec Control Messages in AVPF
* [RFC 5118](https://tools.ietf.org/html/rfc5118) - SIP Torture Test Messages for IPv6
* [RFC 5245](https://tools.ietf.org/html/rfc5245) - Interactive Connectivity Establishment (ICE)
* [RFC 5246](https://tools.ietf.org/html/rfc5246) - The TLS Protocol Version 1.2
* [RFC 5389](https://tools.ietf.org/html/rfc5389) - Session Traversal Utilities for NAT (STUN)
* [RFC 5626](https://tools.ietf.org/html/rfc5626) - Managing Client-Initiated Connections in SIP
* [RFC 5761](https://tools.ietf.org/html/rfc5761) - Multiplexing RTP Data and Control Packets on a Single Port
* [RFC 5766](https://tools.ietf.org/html/rfc5766) - Traversal Using Relays around NAT (TURN)
* [RFC 5768](https://tools.ietf.org/html/rfc5768) - Indicating Support for ICE in SIP
* [RFC 5769](https://tools.ietf.org/html/rfc5769) - Test vectors for STUN
* [RFC 6026](https://tools.ietf.org/html/rfc6026) - Correct Transaction Handling for 2xx Resp. to SIP INVITE Requests
* [RFC 6156](https://tools.ietf.org/html/rfc6156) - TURN Extension for IPv6
* [RFC 6188](https://tools.ietf.org/html/rfc6188) - The Use of AES-192 and AES-256 in Secure RTP
* [RFC 6455](https://tools.ietf.org/html/rfc6455) - The WebSocket Protocol
* [RFC 7159](https://tools.ietf.org/html/rfc7159) - JavaScript Object Notation (JSON)
* [RFC 7350](https://tools.ietf.org/html/rfc7350) - DTLS as Transport for STUN
* [RFC 7616](https://tools.ietf.org/html/rfc7616) - HTTP Digest Access Authentication
* [RFC 7714](https://tools.ietf.org/html/rfc7714) - AES-GCM Authenticated Encryption in SRTP
* [AV1-RTP](https://aomediacodec.github.io/av1-rtp-spec/) - RTP Payload Format For AV1


## Supported platforms

|  System | Support type | Supported versions | Notes |
|---|---|---|---|
| Linux | Tier 1 | glibc >= 2.31 | |
| Linux | Tier 1 | musl >= 1.2 | |
| macOS | Tier 1 | macOS >= 10.10 | |
| Windows | Tier 1 | >= Windows 10 | MinGW-w64, >= VS 2022 |
| Android | Tier 2 | Android 8 (API Level 26)| |
| iOS | Tier 2 | | |
| FreeBSD | Tier 2 | >= 12 | |
| OpenBSD | Tier 2 | >= 7.4 | |
| Linux | Tier 2 | uClibc | |


### Known bugs

macOS clang-1600.0.26.3 (Xcode 16.0) and clang-1600.0.26.4 (Xcode 16.1) have a optimization bug:

- https://github.com/baresip/re/pull/1399
- https://github.com/baresip/baresip/issues/3240


### Support types

* **Tier 1**: Officially supported and tested with CI. Any contributed patch
  MUST NOT break such systems.

* **Tier 2**: Officially supported, but not necessarily tested with CI. These
  systems are maintained to the best of collaborators ability, without being
  a top priority.

* **Tier 3**: Community maintained. These systems may inadvertently break and the
  community and interested parties are expected to help with the maintenance.


### Supported versions of C Standard library

* Android bionic
* BSD libc
* GNU C Library (glibc)
* Windows C Run-Time Libraries (CRT)
* uClibc
* musl


### Supported compilers:

* gcc 9 or later
* MSVC 2022
* clang 9.x or later


### Supported versions of OpenSSL

* OpenSSL version 3.x.x and 4.x.x
* LibreSSL version 4.x


## Coding guidelines

* Use enum for constants where appropriate
* Use const as much as possible (where appropriate)
* Use C99 data types (intN_t, uintN_t, bool)
* Hide data-types in .c files where possible (use struct foo)
* Avoid malloc/free, use mem_alloc/mem_deref instead
* CVS/svn/git tags are NOT allowed in the code!
* Avoid bit-fields in structs which are not portable
* Use dummy handlers for timing-critical callbacks
* return err, return alloced objects as pointer-pointers
* in allocating functions, first arg is always double pointer
* Use POSIX error-codes; EINVAL for invalid args, EBADMSG for
  parse errors and EPROTO for protocol errors


## Transport protocols


|         | TCP | UDP | TLS | DTLS|
|:--------|:---:|:---:|:---:|:---:|
| BFCP    | -   | yes | -   | -   |
| DNS     | yes | yes | -   | -   |
| HTTP    | yes | n/a | yes | n/a |
| ICE     | -   | yes | -   | -   |
| RTP     | -   | yes | -   | -   |
| RTCP    | -   | yes | -   | -   |
| RTMP    | yes | -   | yes | -   |
| SIP     | yes | yes | yes | -   |
| STUN    | yes | yes | yes | yes |
| TURN    | yes | yes | yes | yes |
| WEBSOCK | yes | n/a | yes | n/a |


## Related projects

* [librem](https://github.com/baresip/rem)
* [retest](https://github.com/baresip/retest)
* [baresip](https://github.com/baresip/baresip)


## References

https://github.com/creytiv/re


================================================
FILE: cmake/FindMBEDTLS.cmake
================================================
find_path(MBEDTLS_INCLUDE_DIR
    NAMES mbedtls/ssl.h mbedtls/md.h mbedtls/md5.h mbedtls/error.h
          mbedtls/sha1.h mbedtls/sha256.h
    HINTS
      "${MBEDTLS_INCLUDE_DIRS}"
      "${MBEDTLS_HINTS}/include"
    PATHS /usr/local/include /usr/include
)

find_library(MBEDTLS_LIBRARY
  NAMES mbedtls mbedx509 mbedcrypto
  HINTS
    "${MBEDTLS_LIBRARY_DIRS}"
    "${MBEDTLS_HINTS}/lib"
  PATHS /usr/local/lib /usr/lib
)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MBEDTLS DEFAULT_MSG
    MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY)

if(MBEDTLS_FOUND)
  set( MBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR} )
  set( MBEDTLS_LIBRARIES ${MBEDTLS_LIBRARY} )
else()
  set( MBEDTLS_INCLUDE_DIRS )
  set( MBEDTLS_LIBRARIES )
endif()

mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARIES)


================================================
FILE: cmake/libre-config.cmake
================================================
if("@LIBRE_BUILD_STATIC@")
    include(CMakeFindDependencyMacro)
    find_dependency(Threads)
    if("@USE_OPENSSL@")
        find_dependency(OpenSSL)
    endif()
    if("@ZLIB_FOUND@")
        find_dependency(ZLIB)
    endif()
endif()

include("${CMAKE_CURRENT_LIST_DIR}/libre-targets.cmake")

# convenience target libre::libre for uniform usage
if(NOT TARGET libre::libre)
    if(TARGET libre::re_shared AND (BUILD_SHARED_LIBS OR NOT TARGET libre::re))
        add_library(libre::libre INTERFACE IMPORTED)
        set_target_properties(libre::libre PROPERTIES INTERFACE_LINK_LIBRARIES libre::re_shared)
    elseif(TARGET libre::re AND (NOT BUILD_SHARED_LIBS OR NOT TARGET libre::re_shared))
        add_library(libre::libre INTERFACE IMPORTED)
        set_target_properties(libre::libre PROPERTIES INTERFACE_LINK_LIBRARIES libre::re)
    endif()
endif()


================================================
FILE: cmake/re-config.cmake
================================================
#
# re-config.cmake
#
include(CheckIncludeFile)
include(CheckFunctionExists)
include(CheckSymbolExists)
include(CheckTypeSize)
include(CheckCXXSourceCompiles)

option(USE_MBEDTLS "Enable MbedTLS" OFF)
option(USE_TLS1_3_PHA "Enable TLS 1.3 Post-Handshake Auth" ON)

find_package(Backtrace)
find_package(Threads REQUIRED)
find_package(ZLIB)

if(USE_MBEDTLS)
  find_package(MBEDTLS)
else()
  find_package(OpenSSL "1.1.1")
endif()

option(USE_OPENSSL "Enable OpenSSL" ${OPENSSL_FOUND})
option(USE_UNIXSOCK "Enable Unix Domain Sockets" ON)
option(USE_TRACE "Enable Tracing helpers" OFF)

if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
    message(STATUS "Setting build type to 'Debug' as none was specified.")
    set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build."
        FORCE)
endif()

check_symbol_exists(LIBRESSL_VERSION_NUMBER "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" HAVE_LIBRESSL)
if(USE_TLS1_3_PHA AND NOT HAVE_LIBRESSL AND NOT USE_MBEDTLS AND OPENSSL_FOUND)
  list(APPEND RE_DEFINITIONS HAVE_TLS1_3_POST_HANDSHAKE_AUTH)
endif()

check_symbol_exists("arc4random" "stdlib.h" HAVE_ARC4RANDOM)
if(HAVE_ARC4RANDOM)
  list(APPEND RE_DEFINITIONS HAVE_ARC4RANDOM)
endif()

if(ZLIB_FOUND)
  list(APPEND RE_DEFINITIONS USE_ZLIB)
endif()

check_include_file(syslog.h HAVE_SYSLOG_H)
if(HAVE_SYSLOG_H)
  list(APPEND RE_DEFINITIONS HAVE_SYSLOG)
endif()

check_include_file(getopt.h HAVE_GETOPT_H)
if(HAVE_GETOPT_H)
  list(APPEND RE_DEFINITIONS HAVE_GETOPT)
endif()

check_include_file(unistd.h HAVE_UNISTD_H)
if(HAVE_UNISTD_H)
  list(APPEND RE_DEFINITIONS HAVE_UNISTD_H)
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
  check_symbol_exists(res_init resolv.h HAVE_RESOLV)
else()
  check_symbol_exists(res_ninit resolv.h HAVE_RESOLV)
endif()
if(HAVE_RESOLV AND ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
  list(APPEND RE_DEFINITIONS HAVE_RESOLV)
  set(RESOLV_LIBRARY) # Provided by libc
elseif(HAVE_RESOLV)
  set(RESOLV_LIBRARY resolv)
  list(APPEND RE_DEFINITIONS HAVE_RESOLV)
else()
  set(RESOLV_LIBRARY)
endif()

if(Backtrace_FOUND)
  list(APPEND RE_DEFINITIONS HAVE_EXECINFO)
else()
  set(Backtrace_LIBRARIES)
endif()

check_function_exists(thrd_create HAVE_THREADS_FUN)
check_include_file(threads.h HAVE_THREADS_H)
if(HAVE_THREADS_FUN AND HAVE_THREADS_H)
  set(HAVE_THREADS ON CACHE BOOL "HAVE C11 Threads")
endif()
if(HAVE_THREADS)
  list(APPEND RE_DEFINITIONS HAVE_THREADS)
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  check_function_exists(accept4 HAVE_ACCEPT4)
  if(HAVE_ACCEPT4)
    list(APPEND RE_DEFINITIONS HAVE_ACCEPT4)
  endif()
endif()

if(CMAKE_USE_PTHREADS_INIT)
  list(APPEND RE_DEFINITIONS HAVE_PTHREAD)
  set(HAVE_PTHREAD ON)
endif()

if(UNIX)
  check_symbol_exists(epoll_create "sys/epoll.h" HAVE_EPOLL)
  if(HAVE_EPOLL)
    list(APPEND RE_DEFINITIONS HAVE_EPOLL)
  endif()
  check_symbol_exists(kqueue "sys/types.h;sys/event.h" HAVE_KQUEUE)
  if(HAVE_KQUEUE)
    list(APPEND RE_DEFINITIONS HAVE_KQUEUE)
  endif()
endif()

check_include_file(sys/prctl.h HAVE_PRCTL)
if(HAVE_PRCTL)
  list(APPEND RE_DEFINITIONS HAVE_PRCTL)
endif()


list(APPEND RE_DEFINITIONS
  HAVE_ATOMIC
  HAVE_SELECT
  )

if(UNIX)
  if(ANDROID)
    string(REPLACE "android-" "" ANDROID_API_LEVEL ${ANDROID_PLATFORM})
    if(ANDROID_API_LEVEL GREATER_EQUAL 24)
      set(HAVE_GETIFADDRS ON CACHE BOOL "" FORCE)
    endif()
  else()
    check_include_file(ifaddrs.h HAVE_GETIFADDRS)
  endif()
  if(HAVE_GETIFADDRS)
    list(APPEND RE_DEFINITIONS HAVE_GETIFADDRS)
  endif()
endif()

if(UNIX)
  list(APPEND RE_DEFINITIONS
    HAVE_PWD_H
    HAVE_SETRLIMIT
    HAVE_STRERROR_R
    HAVE_STRINGS_H
    HAVE_SYS_TIME_H
    HAVE_UNAME
    HAVE_SELECT_H
    HAVE_SIGNAL
    HAVE_FORK
    )
  if(NOT IOS)
    list(APPEND RE_DEFINITIONS HAVE_ROUTE_LIST)
  endif()
endif()


if(MSVC)
  list(APPEND RE_DEFINITIONS
    HAVE_IO_H
    _CRT_SECURE_NO_WARNINGS
  )
endif()

if(WIN32)
  list(APPEND RE_DEFINITIONS
    WIN32
    _WIN32_WINNT=0x0A00
  )

  unset(CMAKE_EXTRA_INCLUDE_FILES)
  set(CMAKE_EXTRA_INCLUDE_FILES "winsock2.h;qos2.h")
  check_type_size("QOS_FLOWID" HAVE_QOS_FLOWID BUILTIN_TYPES_ONLY)
  check_type_size("PQOS_FLOWID" HAVE_PQOS_FLOWID BUILTIN_TYPES_ONLY)
  unset(CMAKE_EXTRA_INCLUDE_FILES)

  if(HAVE_QOS_FLOWID)
    list(APPEND RE_DEFINITIONS HAVE_QOS_FLOWID)
  endif()

  if(HAVE_PQOS_FLOWID)
    list(APPEND RE_DEFINITIONS HAVE_PQOS_FLOWID)
  endif()
endif()

if(USE_OPENSSL)
  list(APPEND RE_DEFINITIONS
    USE_DTLS
    USE_OPENSSL
    USE_OPENSSL_AES
    USE_OPENSSL_HMAC
    USE_TLS
  )
endif()

if(USE_MBEDTLS)
  list(APPEND RE_DEFINITIONS
    USE_MBEDTLS
  )
endif()

if(USE_UNIXSOCK)
  list(APPEND RE_DEFINITIONS
    HAVE_UNIXSOCK=1
  )
else()
  list(APPEND RE_DEFINITIONS
    HAVE_UNIXSOCK=0
  )
endif()

if(USE_TRACE)
  list(APPEND RE_DEFINITIONS
    RE_TRACE_ENABLED
  )
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  list(APPEND RE_DEFINITIONS DARWIN)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "iOS")
  list(APPEND RE_DEFINITIONS DARWIN)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
  list(APPEND RE_DEFINITIONS FREEBSD)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
  list(APPEND RE_DEFINITIONS OPENBSD)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  list(APPEND RE_DEFINITIONS LINUX)
endif()


list(APPEND RE_DEFINITIONS
  ARCH="${CMAKE_SYSTEM_PROCESSOR}"
  OS="${CMAKE_SYSTEM_NAME}"
  $<$<NOT:$<CONFIG:DEBUG>>:RELEASE>
)

if(NOT ${CMAKE_BUILD_TYPE} MATCHES "[Rr]el")
  if(Backtrace_FOUND)
    set(CMAKE_ENABLE_EXPORTS ON)
  endif()
endif()


##############################################################################
#
# Linking LIBS
#

set(RE_LIBS Threads::Threads ${RESOLV_LIBRARY})

if(BACKTRACE_FOUND)
  list(APPEND RE_LIBS ${Backtrace_LIBRARIES})
endif()

if(ZLIB_FOUND)
  list(APPEND RE_LIBS ZLIB::ZLIB)
endif()

if(USE_OPENSSL)
  list(APPEND RE_LIBS OpenSSL::SSL OpenSSL::Crypto)
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  list(APPEND RE_LIBS
    "-framework SystemConfiguration" "-framework CoreFoundation"
  )
endif()

if(WIN32)
  list(APPEND RE_LIBS
    qwave
    iphlpapi
    wsock32
    ws2_32
    dbghelp
  )
else()
  list(APPEND RE_LIBS m)
endif()

if(UNIX)
  list(APPEND RE_LIBS
    ${CMAKE_DL_LIBS}
  )
endif()


##############################################################################
#
# Testing Atomic
#

enable_language(CXX)

set(ATOMIC_TEST_CODE "
    #include <atomic>
    #include <cstdint>
    std::atomic<uint8_t> n8 (0); // riscv64
    std::atomic<uint64_t> n64 (0); // armel, mipsel, powerpc
    int main() {
      ++n8;
      ++n64;
      return 0;
  }")

check_cxx_source_compiles("${ATOMIC_TEST_CODE}" atomic_test)

if(NOT atomic_test)
  set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} atomic)
  check_cxx_source_compiles("${ATOMIC_TEST_CODE}" atomic_test_lib)
  if(NOT atomic_test_lib)
    message(FATAL_ERROR "No builtin or libatomic support")
  else()
    list(APPEND RE_LIBS atomic)
  endif()
endif()


================================================
FILE: cmake/sanitizer.cmake
================================================
if(USE_SANITIZER STREQUAL "address")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
elseif(USE_SANITIZER STREQUAL "thread")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread")
elseif(USE_SANITIZER STREQUAL "undefined")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
elseif(USE_SANITIZER STREQUAL "memory")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=memory")
endif()


================================================
FILE: docs/ChangeLog
================================================
2019-09-07 Alfred E. Heggestad <alfred.heggestad@gmail.com>

	* Version 0.6.1

Aleksei (1):
      Update MSVS project (Remove uri_cmp) (#209)

Alfred E. Heggestad (10):
      rtmp: update timestamp after complete packet (#172)
      rtmp: add rtmp_meta() to send metadata on stream (#173)
      remove gai_strerror stub (#174)
      rtmp: add function to set handlers (#180)
      rtmp: proper handling of extended timestamps (#184)
      docs: update copyright year (#186)
      debian: fix some warnings and add version to SONAME (#192)
      uri: remove uri_cmp() (#199)
      rtmp: add rtmps (tls) support (#195)
      Update README.md (#205)

Andrey Semashev (1):
      Fix libdir in pkgconfig (#185)

Lennart Grahl (1):
      Raise FD_EXCEPT on EPOLLHUP (fixes closed pipes) (#159)

Richard Aas (9):
      debian release 0.6.0-1
      debian release 0.6.0-2
      debian release 0.6.0-3
      dns: fix dname decode buffer checks (#197)
      regex: fix character buffer check (#198)
      Debian release 0.6.0-4
      tls: don't close connection on SSL_ERROR_ZERO_RETURN error (#217)
      DNS TXT resource record support (#219)
      debian release 0.6.0-6

Steffen Vogel (1):
      rpm: add missing file to %install section (#178)


2018-11-24 Alfred E. Heggestad <alfred.heggestad@gmail.com>

	* Version 0.6.0

	* Project URL: https://github.com/creytiv/re

	* build: add major,minor,patch versions to CFLAGS

	* odict: add high-level odict helper functions

	* rtmp: new module for Real Time Messaging Protocol (RTMP)

	* uri: add uri_decode_hostport


2018-09-01 Alfred E. Heggestad <alfred.heggestad@gmail.com>

	* Version 0.5.9

	* Project URL: https://github.com/creytiv/re

	* build: Added support for 64-bit MINGW (#131)
		 (thanks Alexander Ushakov)

		 fixed inline issue when compiling VS as C++ (#143)
		 (thanks TheSil)

	* jbuf: zero out jbuf_stat on jbuf flush (#147)
		(thanks Christian Spielberger)

	* net: remove net_conn api (old and unused) (#145)
	       fix bug in net_if_getname (#144)

	* sip: get local TCP address in establish handler (#146)

	* tls: add AES-GCM to DTLS-SRTP (#141)


2018-04-20 Alfred E. Heggestad <alfred.heggestad@gmail.com>

	* Version 0.5.8

	* Project URL: https://github.com/creytiv/re

	* build: update win32 files (thanks Encamy)

	* aes: add support for AES-GCM (Galois Counter Mode)

	* fmt: json/utf8: fix unescaping of unicode code points (#127)
	       add utf8_byteseq

	* mqueue: set non-blocking mode for read/write file descriptors (#122)

	* srtp: add support for AES-GCM cipher suite (RFC 7714)


2018-01-12 Alfred E. Heggestad <alfred.heggestad@gmail.com>

	* Version 0.5.7

	* Project URL:
Download .txt
gitextract_s5tkatt2/

├── .clangd
├── .github/
│   └── workflows/
│       ├── abi.yml
│       ├── android.yml
│       ├── build.yml
│       ├── clang-analyze.yml
│       ├── cmake_win.yml
│       ├── codeql.yml
│       ├── coverage.yml
│       ├── coverity.yml
│       ├── fedora.yml
│       ├── freebsd.yml
│       ├── ios.yml
│       ├── lint.yml
│       ├── mingw.yml
│       ├── musl.yml
│       ├── run-on-arch.yml
│       ├── sanitizers.yml
│       ├── sonar.yml
│       ├── ssl.yml
│       ├── strict-c.yml
│       └── valgrind.yml
├── .gitignore
├── CHANGELOG.md
├── CMakeLists.txt
├── LICENSE
├── Makefile
├── README.md
├── cmake/
│   ├── FindMBEDTLS.cmake
│   ├── libre-config.cmake
│   ├── re-config.cmake
│   └── sanitizer.cmake
├── docs/
│   ├── ChangeLog
│   ├── TODO
│   └── main.dox
├── include/
│   ├── re.h
│   ├── re_aes.h
│   ├── re_async.h
│   ├── re_atomic.h
│   ├── re_av1.h
│   ├── re_base64.h
│   ├── re_bfcp.h
│   ├── re_btrace.h
│   ├── re_conf.h
│   ├── re_convert.h
│   ├── re_crc32.h
│   ├── re_dbg.h
│   ├── re_dd.h
│   ├── re_dns.h
│   ├── re_fmt.h
│   ├── re_h264.h
│   ├── re_h265.h
│   ├── re_hash.h
│   ├── re_hmac.h
│   ├── re_http.h
│   ├── re_httpauth.h
│   ├── re_ice.h
│   ├── re_json.h
│   ├── re_list.h
│   ├── re_main.h
│   ├── re_mbuf.h
│   ├── re_md5.h
│   ├── re_mem.h
│   ├── re_mod.h
│   ├── re_mqueue.h
│   ├── re_msg.h
│   ├── re_net.h
│   ├── re_odict.h
│   ├── re_pcp.h
│   ├── re_rtmp.h
│   ├── re_rtp.h
│   ├── re_rtpext.h
│   ├── re_sa.h
│   ├── re_sdp.h
│   ├── re_sha.h
│   ├── re_shim.h
│   ├── re_sip.h
│   ├── re_sipevent.h
│   ├── re_sipreg.h
│   ├── re_sipsess.h
│   ├── re_srtp.h
│   ├── re_stun.h
│   ├── re_sys.h
│   ├── re_tcp.h
│   ├── re_telev.h
│   ├── re_thread.h
│   ├── re_tls.h
│   ├── re_tmr.h
│   ├── re_trace.h
│   ├── re_trice.h
│   ├── re_turn.h
│   ├── re_types.h
│   ├── re_udp.h
│   ├── re_unixsock.h
│   ├── re_uri.h
│   ├── re_websock.h
│   ├── rem.h
│   ├── rem_aac.h
│   ├── rem_au.h
│   ├── rem_aubuf.h
│   ├── rem_auconv.h
│   ├── rem_audio.h
│   ├── rem_aufile.h
│   ├── rem_auframe.h
│   ├── rem_aulevel.h
│   ├── rem_aumix.h
│   ├── rem_auresamp.h
│   ├── rem_autone.h
│   ├── rem_avc.h
│   ├── rem_dsp.h
│   ├── rem_dtmf.h
│   ├── rem_fir.h
│   ├── rem_flv.h
│   ├── rem_g711.h
│   ├── rem_goertzel.h
│   ├── rem_vid.h
│   ├── rem_vidconv.h
│   ├── rem_video.h
│   └── rem_vidmix.h
├── mk/
│   └── Doxyfile
├── packaging/
│   ├── CMakeLists.txt
│   └── libre.pc.in
├── rem/
│   ├── aac/
│   │   └── aac.c
│   ├── au/
│   │   ├── fmt.c
│   │   └── util.c
│   ├── aubuf/
│   │   ├── ajb.c
│   │   ├── ajb.h
│   │   └── aubuf.c
│   ├── auconv/
│   │   └── auconv.c
│   ├── aufile/
│   │   ├── aufile.c
│   │   ├── aufile.h
│   │   └── wave.c
│   ├── auframe/
│   │   └── auframe.c
│   ├── aulevel/
│   │   └── aulevel.c
│   ├── aumix/
│   │   └── aumix.c
│   ├── auresamp/
│   │   └── resamp.c
│   ├── autone/
│   │   └── tone.c
│   ├── avc/
│   │   └── config.c
│   ├── dtmf/
│   │   └── dec.c
│   ├── fir/
│   │   └── fir.c
│   ├── g711/
│   │   └── g711.c
│   ├── goertzel/
│   │   └── goertzel.c
│   ├── vid/
│   │   ├── draw.c
│   │   ├── fmt.c
│   │   └── frame.c
│   ├── vidconv/
│   │   └── vconv.c
│   └── vidmix/
│       └── vidmix.c
├── sonar-project.properties
├── src/
│   ├── aes/
│   │   ├── apple/
│   │   │   └── aes.c
│   │   ├── openssl/
│   │   │   └── aes.c
│   │   └── stub.c
│   ├── async/
│   │   └── async.c
│   ├── av1/
│   │   ├── depack.c
│   │   ├── obu.c
│   │   └── pkt.c
│   ├── base64/
│   │   └── b64.c
│   ├── bfcp/
│   │   ├── attr.c
│   │   ├── bfcp.h
│   │   ├── conn.c
│   │   ├── msg.c
│   │   ├── reply.c
│   │   └── request.c
│   ├── btrace/
│   │   └── btrace.c
│   ├── conf/
│   │   └── conf.c
│   ├── crc32/
│   │   └── crc32.c
│   ├── dbg/
│   │   └── dbg.c
│   ├── dd/
│   │   ├── dd.c
│   │   ├── dd_enc.c
│   │   └── putbit.c
│   ├── dns/
│   │   ├── client.c
│   │   ├── cstr.c
│   │   ├── darwin/
│   │   │   └── srv.c
│   │   ├── dname.c
│   │   ├── dns.h
│   │   ├── hdr.c
│   │   ├── ns.c
│   │   ├── res.c
│   │   ├── rr.c
│   │   ├── rrlist.c
│   │   └── win32/
│   │       └── srv.c
│   ├── fmt/
│   │   ├── ch.c
│   │   ├── hexdump.c
│   │   ├── pl.c
│   │   ├── print.c
│   │   ├── prm.c
│   │   ├── regex.c
│   │   ├── str.c
│   │   ├── str_error.c
│   │   ├── text2pcap.c
│   │   ├── time.c
│   │   └── unicode.c
│   ├── h264/
│   │   ├── getbit.c
│   │   ├── h264.h
│   │   ├── nal.c
│   │   └── sps.c
│   ├── h265/
│   │   └── nal.c
│   ├── hash/
│   │   ├── func.c
│   │   └── hash.c
│   ├── hmac/
│   │   ├── apple/
│   │   │   └── hmac.c
│   │   ├── hmac.c
│   │   ├── hmac_sha1.c
│   │   └── openssl/
│   │       └── hmac.c
│   ├── http/
│   │   ├── auth.c
│   │   ├── chunk.c
│   │   ├── client.c
│   │   ├── http.h
│   │   ├── msg.c
│   │   ├── request.c
│   │   └── server.c
│   ├── httpauth/
│   │   ├── basic.c
│   │   └── digest.c
│   ├── ice/
│   │   ├── cand.c
│   │   ├── candpair.c
│   │   ├── chklist.c
│   │   ├── comp.c
│   │   ├── connchk.c
│   │   ├── ice.h
│   │   ├── icem.c
│   │   ├── icesdp.c
│   │   ├── icestr.c
│   │   ├── stunsrv.c
│   │   └── util.c
│   ├── json/
│   │   ├── decode.c
│   │   ├── decode_odict.c
│   │   └── encode.c
│   ├── list/
│   │   └── list.c
│   ├── main/
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── method.c
│   │   └── openssl.c
│   ├── mbuf/
│   │   └── mbuf.c
│   ├── md5/
│   │   └── wrap.c
│   ├── mem/
│   │   ├── mem.c
│   │   ├── mem_pool.c
│   │   └── secure.c
│   ├── mod/
│   │   ├── dl.c
│   │   ├── mod.c
│   │   ├── mod_internal.h
│   │   └── win32/
│   │       └── dll.c
│   ├── mqueue/
│   │   ├── mqueue.c
│   │   ├── mqueue.h
│   │   └── win32/
│   │       └── pipe.c
│   ├── msg/
│   │   ├── ctype.c
│   │   └── param.c
│   ├── net/
│   │   ├── bsd/
│   │   │   └── brt.c
│   │   ├── if.c
│   │   ├── ifaddrs.c
│   │   ├── linux/
│   │   │   ├── addrs.c
│   │   │   ├── macros.h
│   │   │   └── rt.c
│   │   ├── net.c
│   │   ├── netstr.c
│   │   ├── posix/
│   │   │   └── pif.c
│   │   ├── rt.c
│   │   ├── sock.c
│   │   ├── sockopt.c
│   │   └── win32/
│   │       └── wif.c
│   ├── odict/
│   │   ├── entry.c
│   │   ├── get.c
│   │   ├── odict.c
│   │   ├── odict.h
│   │   └── type.c
│   ├── pcp/
│   │   ├── README
│   │   ├── msg.c
│   │   ├── option.c
│   │   ├── payload.c
│   │   ├── pcp.c
│   │   ├── pcp.h
│   │   ├── reply.c
│   │   └── request.c
│   ├── rtmp/
│   │   ├── README.md
│   │   ├── amf.c
│   │   ├── amf_dec.c
│   │   ├── amf_enc.c
│   │   ├── chunk.c
│   │   ├── conn.c
│   │   ├── control.c
│   │   ├── ctrans.c
│   │   ├── dechunk.c
│   │   ├── hdr.c
│   │   ├── rtmp.h
│   │   └── stream.c
│   ├── rtp/
│   │   ├── fb.c
│   │   ├── member.c
│   │   ├── ntp.c
│   │   ├── pkt.c
│   │   ├── rr.c
│   │   ├── rtcp.c
│   │   ├── rtcp.h
│   │   ├── rtp.c
│   │   ├── sdes.c
│   │   ├── sess.c
│   │   └── source.c
│   ├── rtpext/
│   │   └── rtpext.c
│   ├── sa/
│   │   ├── printaddr.c
│   │   └── sa.c
│   ├── sdp/
│   │   ├── attr.c
│   │   ├── format.c
│   │   ├── media.c
│   │   ├── msg.c
│   │   ├── sdp.h
│   │   ├── session.c
│   │   ├── str.c
│   │   └── util.c
│   ├── sha/
│   │   └── wrap.c
│   ├── shim/
│   │   └── shim.c
│   ├── sip/
│   │   ├── addr.c
│   │   ├── auth.c
│   │   ├── contact.c
│   │   ├── cseq.c
│   │   ├── ctrans.c
│   │   ├── dialog.c
│   │   ├── keepalive.c
│   │   ├── keepalive_udp.c
│   │   ├── msg.c
│   │   ├── rack.c
│   │   ├── reply.c
│   │   ├── request.c
│   │   ├── sip.c
│   │   ├── sip.h
│   │   ├── strans.c
│   │   ├── transp.c
│   │   └── via.c
│   ├── sipevent/
│   │   ├── listen.c
│   │   ├── msg.c
│   │   ├── notify.c
│   │   ├── sipevent.h
│   │   └── subscribe.c
│   ├── sipreg/
│   │   └── reg.c
│   ├── sipsess/
│   │   ├── accept.c
│   │   ├── ack.c
│   │   ├── close.c
│   │   ├── connect.c
│   │   ├── info.c
│   │   ├── listen.c
│   │   ├── modify.c
│   │   ├── prack.c
│   │   ├── reply.c
│   │   ├── request.c
│   │   ├── sess.c
│   │   ├── sipsess.h
│   │   └── update.c
│   ├── srtp/
│   │   ├── README
│   │   ├── misc.c
│   │   ├── replay.c
│   │   ├── srtcp.c
│   │   ├── srtp.c
│   │   ├── srtp.h
│   │   └── stream.c
│   ├── stun/
│   │   ├── addr.c
│   │   ├── attr.c
│   │   ├── ctrans.c
│   │   ├── dnsdisc.c
│   │   ├── hdr.c
│   │   ├── ind.c
│   │   ├── keepalive.c
│   │   ├── msg.c
│   │   ├── rep.c
│   │   ├── req.c
│   │   ├── stun.c
│   │   ├── stun.h
│   │   └── stunstr.c
│   ├── sys/
│   │   ├── daemon.c
│   │   ├── endian.c
│   │   ├── fs.c
│   │   ├── rand.c
│   │   ├── sleep.c
│   │   └── sys.c
│   ├── tcp/
│   │   ├── tcp.c
│   │   └── tcp_high.c
│   ├── telev/
│   │   └── telev.c
│   ├── thread/
│   │   ├── posix.c
│   │   ├── thread.c
│   │   └── win32.c
│   ├── tls/
│   │   ├── openssl/
│   │   │   ├── sni.c
│   │   │   ├── tls.c
│   │   │   ├── tls.h
│   │   │   ├── tls_tcp.c
│   │   │   └── tls_udp.c
│   │   └── stub.c
│   ├── tmr/
│   │   └── tmr.c
│   ├── trace/
│   │   └── trace.c
│   ├── trice/
│   │   ├── README.md
│   │   ├── cand.c
│   │   ├── candpair.c
│   │   ├── chklist.c
│   │   ├── connchk.c
│   │   ├── lcand.c
│   │   ├── rcand.c
│   │   ├── stunsrv.c
│   │   ├── tcpconn.c
│   │   ├── trice.c
│   │   └── trice.h
│   ├── turn/
│   │   ├── chan.c
│   │   ├── perm.c
│   │   ├── turnc.c
│   │   └── turnc.h
│   ├── udp/
│   │   ├── mcast.c
│   │   └── udp.c
│   ├── unixsock/
│   │   └── unixsock.c
│   ├── uri/
│   │   ├── uri.c
│   │   └── uric.c
│   └── websock/
│       └── websock.c
├── test/
│   ├── CMakeLists.txt
│   ├── aac.c
│   ├── aes.c
│   ├── async.c
│   ├── au.c
│   ├── aubuf.c
│   ├── aulength.c
│   ├── aulevel.c
│   ├── aupos.c
│   ├── auresamp.c
│   ├── av1.c
│   ├── base64.c
│   ├── bfcp.c
│   ├── btrace.c
│   ├── combo/
│   │   └── dtls_turn.c
│   ├── conf.c
│   ├── convert.c
│   ├── cplusplus.cpp
│   ├── crc32.c
│   ├── data/
│   │   ├── client.pem
│   │   ├── client_wrongkey.pem
│   │   ├── fstab.json
│   │   ├── menu.json
│   │   ├── rfc7159.json
│   │   ├── server-ecdsa.pem
│   │   ├── sni/
│   │   │   ├── client-interm.pem
│   │   │   ├── root-ca.pem
│   │   │   └── server-interm.pem
│   │   ├── utf8.json
│   │   ├── webapp.json
│   │   └── widget.json
│   ├── dbg.c
│   ├── dd.c
│   ├── dns.c
│   ├── dsp.c
│   ├── dtls.c
│   ├── dtmf.c
│   ├── fir.c
│   ├── fmt.c
│   ├── g711.c
│   ├── h264.c
│   ├── h265.c
│   ├── hash.c
│   ├── hmac.c
│   ├── http.c
│   ├── httpauth.c
│   ├── ice.c
│   ├── json.c
│   ├── list.c
│   ├── main.c
│   ├── mbuf.c
│   ├── md5.c
│   ├── mem.c
│   ├── mem_pool.c
│   ├── mock/
│   │   ├── cert.c
│   │   ├── dnssrv.c
│   │   ├── nat.c
│   │   ├── sipsrv.c
│   │   ├── stunsrv.c
│   │   └── turnsrv.c
│   ├── mqueue.c
│   ├── net.c
│   ├── odict.c
│   ├── pcp.c
│   ├── remain.c
│   ├── rtcp.c
│   ├── rtmp.c
│   ├── rtp.c
│   ├── rtpext.c
│   ├── sa.c
│   ├── sdp.c
│   ├── sha.c
│   ├── sip.c
│   ├── sipauth.c
│   ├── sipevent.c
│   ├── sipreg.c
│   ├── sipsess.c
│   ├── srtp.c
│   ├── stun.c
│   ├── sys.c
│   ├── tcp.c
│   ├── telev.c
│   ├── test.c
│   ├── test.h
│   ├── thread.c
│   ├── tls.c
│   ├── tmr.c
│   ├── trace.c
│   ├── trice.c
│   ├── turn.c
│   ├── types.c
│   ├── udp.c
│   ├── unixsock.c
│   ├── uri.c
│   ├── vid.c
│   ├── vidconv.c
│   └── websock.c
└── tools/
    └── genfir.py
Download .txt
Showing preview only (442K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6524 symbols across 429 files)

FILE: include/re_aes.h
  type aes_mode (line 13) | enum aes_mode {
  type aes (line 18) | struct aes
  type aes (line 20) | struct aes
  type aes_mode (line 20) | enum aes_mode
  type aes (line 23) | struct aes
  type aes (line 24) | struct aes
  type aes (line 25) | struct aes
  type aes (line 26) | struct aes
  type aes (line 27) | struct aes

FILE: include/re_async.h
  type re_async (line 9) | struct re_async
  type re_async (line 14) | struct re_async
  type re_async (line 15) | struct re_async
  type re_async (line 17) | struct re_async

FILE: include/re_atomic.h
  function _re_atomic_store (line 484) | static __forceinline void _re_atomic_store(
  function _re_atomic_load (line 528) | static __forceinline unsigned __int64 _re_atomic_load(
  function _re_atomic_store (line 559) | static __forceinline void _re_atomic_store(
  function _re_atomic_load (line 593) | static __forceinline unsigned __int64 _re_atomic_load(
  function _re_atomic_store (line 627) | static __forceinline void _re_atomic_store(
  function _re_atomic_load (line 697) | static __forceinline unsigned __int64 _re_atomic_load(
  function _re_atomic_exchange (line 728) | static __forceinline unsigned __int64 _re_atomic_exchange(
  function _re_atomic_compare_exchange_strong (line 772) | static __forceinline bool _re_atomic_compare_exchange_strong(
  function _re_atomic_fetch_add (line 841) | static __forceinline unsigned __int64 _re_atomic_fetch_add(
  function _re_atomic_fetch_or (line 889) | static __forceinline unsigned __int64 _re_atomic_fetch_or(
  function _re_atomic_fetch_xor (line 934) | static __forceinline unsigned __int64 _re_atomic_fetch_xor(
  function _re_atomic_fetch_and (line 979) | static __forceinline unsigned __int64 _re_atomic_fetch_and(

FILE: include/re_av1.h
  type obu_type (line 12) | enum obu_type {
  type av1_obu_hdr (line 32) | struct av1_obu_hdr {
  type mbuf (line 39) | struct mbuf
  type mbuf (line 40) | struct mbuf
  type mbuf (line 41) | struct mbuf
  type av1_obu_hdr (line 43) | struct av1_obu_hdr
  type mbuf (line 43) | struct mbuf
  type re_printf (line 44) | struct re_printf
  type av1_obu_hdr (line 44) | struct av1_obu_hdr
  type obu_type (line 47) | enum obu_type
  type obu_type (line 48) | enum obu_type
  type av1_aggr_hdr (line 70) | struct av1_aggr_hdr {
  type av1_aggr_hdr (line 77) | struct av1_aggr_hdr
  type mbuf (line 77) | struct mbuf

FILE: include/re_base64.h
  type re_printf (line 10) | struct re_printf

FILE: include/re_bfcp.h
  type bfcp_prim (line 15) | enum bfcp_prim {
  type bfcp_attrib (line 36) | enum bfcp_attrib {
  type bfcp_reqstat (line 64) | enum bfcp_reqstat {
  type bfcp_err (line 75) | enum bfcp_err {
  type bfcp_priority (line 93) | enum bfcp_priority {
  type bfcp_transp (line 102) | enum bfcp_transp {
  type bfcp_reqstatus (line 109) | struct bfcp_reqstatus {
  type bfcp_errcode (line 115) | struct bfcp_errcode {
  type bfcp_supattr (line 122) | struct bfcp_supattr {
  type bfcp_supprim (line 128) | struct bfcp_supprim {
  type bfcp_attr (line 134) | struct bfcp_attr {
  type bfcp_unknown_attr (line 163) | struct bfcp_unknown_attr {
  type bfcp_msg (line 169) | struct bfcp_msg {
  type tls (line 183) | struct tls
  type bfcp_conn (line 184) | struct bfcp_conn
  type mbuf (line 195) | struct mbuf
  type bfcp_encode (line 198) | struct bfcp_encode {
  type bfcp_attr (line 212) | struct bfcp_attr
  type bfcp_msg (line 221) | struct bfcp_msg
  type bfcp_msg (line 231) | struct bfcp_msg
  type mbuf (line 235) | struct mbuf
  type mbuf (line 236) | struct mbuf
  type bfcp_attr (line 237) | struct bfcp_attr
  type bfcp_attr (line 237) | struct bfcp_attr
  type bfcp_attrib (line 238) | enum bfcp_attrib
  type bfcp_attr (line 239) | struct bfcp_attr
  type bfcp_attr (line 239) | struct bfcp_attr
  type re_printf (line 241) | struct re_printf
  type bfcp_attr (line 241) | struct bfcp_attr
  type bfcp_attrib (line 242) | enum bfcp_attrib
  type bfcp_reqstat (line 243) | enum bfcp_reqstat
  type bfcp_err (line 244) | enum bfcp_err
  type mbuf (line 248) | struct mbuf
  type bfcp_prim (line 248) | enum bfcp_prim
  type mbuf (line 251) | struct mbuf
  type bfcp_prim (line 251) | enum bfcp_prim
  type bfcp_msg (line 254) | struct bfcp_msg
  type mbuf (line 254) | struct mbuf
  type bfcp_attr (line 255) | struct bfcp_attr
  type bfcp_msg (line 255) | struct bfcp_msg
  type bfcp_attrib (line 256) | enum bfcp_attrib
  type bfcp_attr (line 257) | struct bfcp_attr
  type bfcp_msg (line 257) | struct bfcp_msg
  type re_printf (line 259) | struct re_printf
  type bfcp_msg (line 259) | struct bfcp_msg
  type bfcp_prim (line 260) | enum bfcp_prim
  type sa (line 271) | struct sa
  type bfcp_conn (line 288) | struct bfcp_conn
  type bfcp_transp (line 288) | enum bfcp_transp
  type sa (line 289) | struct sa
  type tls (line 289) | struct tls
  type bfcp_conn (line 292) | struct bfcp_conn
  type bfcp_transp (line 292) | enum bfcp_transp
  type sa (line 293) | struct sa
  type sa (line 293) | struct sa
  type bfcp_conn (line 295) | struct bfcp_conn
  type bfcp_conn (line 296) | struct bfcp_conn
  type bfcp_conn (line 297) | struct bfcp_conn
  type bfcp_conn (line 300) | struct bfcp_conn
  type sa (line 300) | struct sa
  type bfcp_prim (line 301) | enum bfcp_prim
  type bfcp_conn (line 306) | struct bfcp_conn
  type sa (line 306) | struct sa
  type bfcp_prim (line 307) | enum bfcp_prim
  type bfcp_conn (line 312) | struct bfcp_conn
  type bfcp_msg (line 312) | struct bfcp_msg
  type bfcp_prim (line 313) | enum bfcp_prim
  type bfcp_conn (line 314) | struct bfcp_conn
  type bfcp_msg (line 314) | struct bfcp_msg
  type bfcp_err (line 315) | enum bfcp_err
  type bfcp_conn (line 316) | struct bfcp_conn
  type bfcp_msg (line 316) | struct bfcp_msg
  type bfcp_err (line 317) | enum bfcp_err

FILE: include/re_btrace.h
  type btrace (line 7) | struct btrace {
  type re_printf (line 12) | struct re_printf
  type btrace (line 12) | struct btrace
  type re_printf (line 13) | struct re_printf
  type btrace (line 13) | struct btrace
  type re_printf (line 14) | struct re_printf
  type btrace (line 14) | struct btrace
  function btrace (line 18) | static inline int btrace(struct btrace *bt)
  function btrace (line 32) | static inline int btrace(struct btrace *bt)
  function btrace (line 42) | static inline int btrace(struct btrace *bt)

FILE: include/re_conf.h
  type conf (line 8) | struct conf
  type pl (line 10) | struct pl
  type conf (line 12) | struct conf
  type conf (line 13) | struct conf
  type conf (line 14) | struct conf
  type pl (line 14) | struct pl
  type conf (line 15) | struct conf
  type conf (line 17) | struct conf
  type conf (line 18) | struct conf
  type conf (line 19) | struct conf
  type conf (line 20) | struct conf
  type conf (line 21) | struct conf

FILE: include/re_convert.h
  function try_into_u16_from_size (line 8) | static inline int try_into_u16_from_size(uint16_t *dest, const size_t src)
  function try_into_u16_from_int (line 21) | static inline int try_into_u16_from_int(uint16_t *dest, const int src)
  function try_into_int_from_size (line 37) | static inline int try_into_int_from_size(int *dest, const size_t src)
  function try_into_err (line 50) | static inline int try_into_err(void *dest, ...)

FILE: include/re_dbg.h
  type dbg_flags (line 97) | enum dbg_flags {
  type dbg_flags (line 115) | enum dbg_flags

FILE: include/re_dd.h
  type putbit (line 12) | struct putbit {
  type putbit (line 17) | struct putbit
  type mbuf (line 17) | struct mbuf
  type putbit (line 18) | struct putbit
  type putbit (line 19) | struct putbit
  type putbit (line 20) | struct putbit
  type dd_dti (line 44) | enum dd_dti {
  type dd_next_layer_idc (line 51) | enum dd_next_layer_idc {
  type dd (line 62) | struct dd {
  type mbuf (line 106) | struct mbuf
  type dd (line 106) | struct dd
  type dd (line 107) | struct dd
  type re_printf (line 108) | struct re_printf
  type dd (line 108) | struct dd

FILE: include/re_dns.h
  type dnshdr (line 61) | struct dnshdr {
  type dnsrr (line 79) | struct dnsrr {
  type hash (line 136) | struct hash
  type dnshdr (line 148) | struct dnshdr
  type list (line 149) | struct list
  type list (line 149) | struct list
  type list (line 150) | struct list
  type dnsrr (line 160) | struct dnsrr
  type mbuf (line 162) | struct mbuf
  type dnshdr (line 162) | struct dnshdr
  type mbuf (line 163) | struct mbuf
  type dnshdr (line 163) | struct dnshdr
  type dnsrr (line 166) | struct dnsrr
  type dnsrr (line 167) | struct dnsrr
  type dnsrr (line 167) | struct dnsrr
  type mbuf (line 168) | struct mbuf
  type dnsrr (line 168) | struct dnsrr
  type hash (line 169) | struct hash
  type mbuf (line 170) | struct mbuf
  type dnsrr (line 170) | struct dnsrr
  type dnsrr (line 171) | struct dnsrr
  type dnsrr (line 171) | struct dnsrr
  type re_printf (line 174) | struct re_printf
  type dnsrr (line 174) | struct dnsrr
  type mbuf (line 175) | struct mbuf
  type hash (line 176) | struct hash
  type mbuf (line 177) | struct mbuf
  type mbuf (line 178) | struct mbuf
  type mbuf (line 179) | struct mbuf
  type list (line 180) | struct list
  type list (line 181) | struct list
  type dnsrr (line 182) | struct dnsrr
  type list (line 182) | struct list
  type dnsrr (line 185) | struct dnsrr
  type list (line 185) | struct list
  type dnsrr (line 189) | struct dnsrr
  type list (line 189) | struct list
  type sa (line 194) | struct sa
  type dnsc (line 195) | struct dnsc
  type dns_query (line 196) | struct dns_query
  type dnsc_conf (line 199) | struct dnsc_conf {
  type dnsc (line 208) | struct dnsc
  type dnsc_conf (line 208) | struct dnsc_conf
  type sa (line 209) | struct sa
  type dnsc (line 210) | struct dnsc
  type dnsc_conf (line 210) | struct dnsc_conf
  type dnsc (line 211) | struct dnsc
  type dnsc (line 212) | struct dnsc
  type sa (line 212) | struct sa
  type dns_query (line 213) | struct dns_query
  type dnsc (line 213) | struct dnsc
  type dns_query (line 216) | struct dns_query
  type dnsc (line 216) | struct dnsc
  type sa (line 218) | struct sa
  type dns_query (line 220) | struct dns_query
  type dnsc (line 220) | struct dnsc
  type dnsrr (line 221) | struct dnsrr
  type sa (line 222) | struct sa
  type dnsc (line 224) | struct dnsc
  type dnsc (line 225) | struct dnsc
  type dnsc (line 226) | struct dnsc
  type dnsc (line 227) | struct dnsc
  type dnsc (line 228) | struct dnsc
  type sa (line 232) | struct sa

FILE: include/re_fmt.h
  type mbuf (line 15) | struct mbuf
  type pl (line 19) | struct pl {
  type pl (line 30) | struct pl
  type pl (line 32) | struct pl
  type pl (line 33) | struct pl
  type pl (line 33) | struct pl
  type pl (line 34) | struct pl
  type pl (line 35) | struct pl
  type mbuf (line 35) | struct mbuf
  type pl (line 36) | struct pl
  type pl (line 37) | struct pl
  type pl (line 38) | struct pl
  type pl (line 39) | struct pl
  type pl (line 40) | struct pl
  type pl (line 41) | struct pl
  type pl (line 42) | struct pl
  type pl (line 43) | struct pl
  type pl (line 44) | struct pl
  type pl (line 45) | struct pl
  type pl (line 46) | struct pl
  type pl (line 47) | struct pl
  type pl (line 48) | struct pl
  type pl (line 48) | struct pl
  type pl (line 49) | struct pl
  type pl (line 50) | struct pl
  type pl (line 51) | struct pl
  type pl (line 52) | struct pl
  type pl (line 53) | struct pl
  type pl (line 53) | struct pl
  type pl (line 54) | struct pl
  type pl (line 54) | struct pl
  type pl (line 55) | struct pl
  type pl (line 56) | struct pl
  type pl (line 57) | struct pl
  type pl (line 58) | struct pl
  type pl (line 59) | struct pl
  type pl (line 60) | struct pl
  type pl (line 61) | struct pl
  function pl_advance (line 64) | static inline void pl_advance(struct pl *pl, ssize_t n)
  type re_printf (line 85) | struct re_printf {
  type re_printf (line 98) | struct re_printf
  type re_printf (line 134) | struct re_printf
  type re_printf (line 141) | struct re_printf
  function str_isset (line 179) | static inline bool str_isset(const char *s)
  type re_printf (line 186) | struct re_printf
  type re_printf (line 187) | struct re_printf
  type re_printf (line 188) | struct re_printf
  type re_printf (line 189) | struct re_printf
  type pl (line 196) | struct pl
  type pl (line 196) | struct pl
  type pl (line 199) | struct pl
  type pl (line 200) | struct pl
  type pl (line 201) | struct pl
  type pl (line 202) | struct pl
  type pl (line 202) | struct pl
  type pl (line 203) | struct pl
  type re_printf (line 207) | struct re_printf
  type re_printf (line 208) | struct re_printf
  type pl (line 208) | struct pl
  type re_text2pcap (line 213) | struct re_text2pcap {
  type re_printf (line 219) | struct re_printf
  type re_text2pcap (line 219) | struct re_text2pcap
  type mbuf (line 221) | struct mbuf

FILE: include/re_h264.h
  type h264_nalu (line 9) | enum h264_nalu {
  type h264_nal_header (line 37) | struct h264_nal_header {
  type mbuf (line 44) | struct mbuf
  type h264_nal_header (line 44) | struct h264_nal_header
  type h264_nal_header (line 45) | struct h264_nal_header
  type mbuf (line 45) | struct mbuf
  type h264_nal_header (line 46) | struct h264_nal_header
  type h264_nalu (line 48) | enum h264_nalu
  type h264_sps (line 54) | struct h264_sps {
  type h264_sps (line 73) | struct h264_sps
  type h264_sps (line 74) | struct h264_sps
  type h264_fu (line 85) | struct h264_fu {
  type h264_fu (line 92) | struct h264_fu
  type mbuf (line 92) | struct mbuf
  type h264_fu (line 93) | struct h264_fu
  type mbuf (line 93) | struct mbuf
  type mbuf (line 104) | struct mbuf
  type mbuf (line 106) | struct mbuf
  type mbuf (line 106) | struct mbuf
  type mbuf (line 107) | struct mbuf
  type mbuf (line 107) | struct mbuf
  type getbit (line 114) | struct getbit {
  type getbit (line 120) | struct getbit
  type getbit (line 121) | struct getbit
  type getbit (line 122) | struct getbit
  type getbit (line 123) | struct getbit
  type getbit (line 124) | struct getbit
  type getbit (line 125) | struct getbit

FILE: include/re_h265.h
  type h265_naltype (line 13) | enum h265_naltype {
  type h265_nal (line 54) | struct h265_nal {
  type mbuf (line 62) | struct mbuf
  type h265_nal (line 62) | struct h265_nal
  type h265_nal (line 63) | struct h265_nal
  type re_printf (line 64) | struct re_printf
  type h265_nal (line 64) | struct h265_nal
  type h265_naltype (line 65) | enum h265_naltype
  type h265_naltype (line 66) | enum h265_naltype

FILE: include/re_hash.h
  type hash (line 8) | struct hash
  type pl (line 9) | struct pl
  type hash (line 12) | struct hash
  type hash (line 13) | struct hash
  type le (line 13) | struct le
  type le (line 14) | struct le
  type le (line 15) | struct le
  type hash (line 15) | struct hash
  type le (line 17) | struct le
  type hash (line 17) | struct hash
  type list (line 18) | struct list
  type hash (line 18) | struct hash
  type list (line 19) | struct list
  type hash (line 19) | struct hash
  type hash (line 20) | struct hash
  type hash (line 21) | struct hash
  type hash (line 22) | struct hash
  type re_printf (line 24) | struct re_printf
  type hash (line 24) | struct hash
  type pl (line 32) | struct pl
  type pl (line 33) | struct pl

FILE: include/re_hmac.h
  type hmac_hash (line 23) | enum hmac_hash {
  type hmac (line 28) | struct hmac
  type hmac (line 30) | struct hmac
  type hmac_hash (line 30) | enum hmac_hash
  type hmac (line 32) | struct hmac

FILE: include/re_http.h
  type tls (line 8) | struct tls
  type http_hdrid (line 11) | enum http_hdrid {
  type http_hdr (line 70) | struct http_hdr {
  type http_msg (line 78) | struct http_msg {
  type http_uri (line 93) | struct http_uri {
  type http_uri (line 100) | struct http_uri
  type pl (line 100) | struct pl
  type http_conf (line 104) | struct http_conf {
  type http_hdr (line 111) | struct http_hdr
  type http_msg (line 113) | struct http_msg
  type mbuf (line 113) | struct mbuf
  type http_hdr (line 116) | struct http_hdr
  type http_msg (line 116) | struct http_msg
  type http_hdrid (line 117) | enum http_hdrid
  type http_hdr (line 118) | struct http_hdr
  type http_msg (line 118) | struct http_msg
  type http_hdrid (line 119) | enum http_hdrid
  type http_hdr (line 121) | struct http_hdr
  type http_msg (line 121) | struct http_msg
  type http_hdr (line 123) | struct http_hdr
  type http_msg (line 123) | struct http_msg
  type http_msg (line 126) | struct http_msg
  type http_hdrid (line 126) | enum http_hdrid
  type http_msg (line 127) | struct http_msg
  type http_msg (line 128) | struct http_msg
  type http_hdrid (line 128) | enum http_hdrid
  type http_msg (line 130) | struct http_msg
  type re_printf (line 132) | struct re_printf
  type http_msg (line 132) | struct http_msg
  type http_cli (line 136) | struct http_cli
  type http_req (line 137) | struct http_req
  type dnsc (line 138) | struct dnsc
  type tcp_conn (line 139) | struct tcp_conn
  type tls_conn (line 140) | struct tls_conn
  type http_msg (line 142) | struct http_msg
  type http_msg (line 144) | struct http_msg
  type tcp_conn (line 145) | struct tcp_conn
  type tls_conn (line 145) | struct tls_conn
  type mbuf (line 147) | struct mbuf
  type http_cli (line 149) | struct http_cli
  type dnsc (line 149) | struct dnsc
  type http_cli (line 150) | struct http_cli
  type http_conf (line 150) | struct http_conf
  type http_req (line 151) | struct http_req
  type http_cli (line 151) | struct http_cli
  type http_req (line 154) | struct http_req
  type http_cli (line 154) | struct http_cli
  type sa (line 155) | struct sa
  type http_req (line 158) | struct http_req
  type http_cli (line 159) | struct http_cli
  type sa (line 159) | struct sa
  type http_cli (line 160) | struct http_cli
  type sa (line 160) | struct sa
  type http_cli (line 161) | struct http_cli
  type http_cli (line 162) | struct http_cli
  type http_cli (line 165) | struct http_cli
  type tls (line 165) | struct tls
  type http_cli (line 166) | struct http_cli
  type tls (line 166) | struct tls
  type http_cli (line 167) | struct http_cli
  type http_cli (line 168) | struct http_cli
  type http_cli (line 169) | struct http_cli
  type http_cli (line 170) | struct http_cli
  type pl (line 171) | struct pl
  type http_cli (line 172) | struct http_cli
  type http_cli (line 173) | struct http_cli
  type http_cli (line 174) | struct http_cli
  type http_cli (line 175) | struct http_cli
  type http_cli (line 176) | struct http_cli
  type http_cli (line 177) | struct http_cli
  type http_cli (line 180) | struct http_cli
  type http_cli (line 181) | struct http_cli
  type http_cli (line 182) | struct http_cli
  type http_cli (line 183) | struct http_cli
  type http_sock (line 187) | struct http_sock
  type http_conn (line 188) | struct http_conn
  type re_https_verify_msg (line 190) | enum re_https_verify_msg {
  type http_conn (line 196) | struct http_conn
  type http_msg (line 196) | struct http_msg
  type re_https_verify_msg (line 198) | enum re_https_verify_msg
  type http_conn (line 198) | struct http_conn
  type http_msg (line 199) | struct http_msg
  type http_sock (line 201) | struct http_sock
  type http_sock (line 203) | struct http_sock
  type sa (line 203) | struct sa
  type http_sock (line 205) | struct http_sock
  type sa (line 205) | struct sa
  type http_sock (line 207) | struct http_sock
  type http_sock (line 209) | struct http_sock
  type tcp_sock (line 210) | struct tcp_sock
  type http_sock (line 210) | struct http_sock
  type tls (line 211) | struct tls
  type http_sock (line 211) | struct http_sock
  type sa (line 212) | struct sa
  type http_conn (line 212) | struct http_conn
  type tcp_conn (line 213) | struct tcp_conn
  type http_conn (line 213) | struct http_conn
  type tls_conn (line 214) | struct tls_conn
  type http_conn (line 214) | struct http_conn
  type http_conn (line 216) | struct http_conn
  type http_conn (line 217) | struct http_conn
  type http_conn (line 218) | struct http_conn
  type http_conn (line 220) | struct http_conn
  type http_conn (line 222) | struct http_conn
  type http_auth (line 226) | struct http_auth {
  type pl (line 231) | struct pl
  type re_printf (line 233) | struct re_printf
  type http_auth (line 234) | struct http_auth
  type pl (line 235) | struct pl
  type pl (line 235) | struct pl
  type http_auth (line 236) | struct http_auth
  type http_msg (line 237) | struct http_msg
  type http_auth (line 238) | struct http_auth
  type http_reqconn (line 242) | struct http_reqconn
  type http_reqconn (line 243) | struct http_reqconn
  type http_cli (line 244) | struct http_cli
  type http_reqconn (line 246) | struct http_reqconn
  type pl (line 246) | struct pl
  type pl (line 247) | struct pl
  type http_reqconn (line 248) | struct http_reqconn
  type pl (line 249) | struct pl
  type http_reqconn (line 250) | struct http_reqconn
  type pl (line 251) | struct pl
  type http_reqconn (line 252) | struct http_reqconn
  type pl (line 253) | struct pl
  type http_reqconn (line 254) | struct http_reqconn
  type pl (line 254) | struct pl
  type http_reqconn (line 255) | struct http_reqconn
  type mbuf (line 255) | struct mbuf
  type http_reqconn (line 256) | struct http_reqconn
  type pl (line 256) | struct pl
  type http_reqconn (line 257) | struct http_reqconn
  type pl (line 258) | struct pl
  type http_reqconn (line 259) | struct http_reqconn
  type http_reqconn (line 260) | struct http_reqconn
  type pl (line 260) | struct pl
  type http_reqconn (line 261) | struct http_reqconn
  type sa (line 262) | struct sa
  type http_reqconn (line 264) | struct http_reqconn
  type pl (line 265) | struct pl
  type http_reqconn (line 268) | struct http_reqconn

FILE: include/re_httpauth.h
  type httpauth_digest_chall_req (line 9) | struct httpauth_digest_chall_req {
  type httpauth_digest_chall (line 24) | struct httpauth_digest_chall {
  type httpauth_digest_enc_resp (line 38) | struct httpauth_digest_enc_resp {
  type httpauth_digest_resp (line 61) | struct httpauth_digest_resp {
  type httpauth_basic (line 84) | struct httpauth_basic {
  type httpauth_basic_req (line 90) | struct httpauth_basic_req {
  type httpauth_digest_chall (line 98) | struct httpauth_digest_chall
  type pl (line 99) | struct pl
  type httpauth_digest_resp (line 100) | struct httpauth_digest_resp
  type pl (line 101) | struct pl
  type httpauth_digest_resp (line 102) | struct httpauth_digest_resp
  type pl (line 103) | struct pl
  type httpauth_digest_resp (line 104) | struct httpauth_digest_resp
  type httpauth_digest_chall (line 105) | struct httpauth_digest_chall
  type mbuf (line 107) | struct mbuf
  type httpauth_digest_resp (line 108) | struct httpauth_digest_resp
  type mbuf (line 109) | struct mbuf
  type re_printf (line 112) | struct re_printf
  type httpauth_digest_enc_resp (line 113) | struct httpauth_digest_enc_resp
  type httpauth_digest_enc_resp (line 114) | struct httpauth_digest_enc_resp
  type httpauth_digest_chall (line 115) | struct httpauth_digest_chall
  type pl (line 115) | struct pl
  type httpauth_digest_enc_resp (line 118) | struct httpauth_digest_enc_resp
  type httpauth_digest_chall (line 119) | struct httpauth_digest_chall
  type pl (line 119) | struct pl
  type httpauth_digest_enc_resp (line 122) | struct httpauth_digest_enc_resp
  type httpauth_digest_chall (line 123) | struct httpauth_digest_chall
  type pl (line 123) | struct pl
  type httpauth_digest_chall_req (line 126) | struct httpauth_digest_chall_req
  type pl (line 127) | struct pl
  type pl (line 127) | struct pl
  type re_printf (line 130) | struct re_printf
  type httpauth_digest_chall_req (line 131) | struct httpauth_digest_chall_req
  type httpauth_digest_chall_req (line 132) | struct httpauth_digest_chall_req
  type httpauth_digest_chall_req (line 134) | struct httpauth_digest_chall_req
  type httpauth_basic (line 139) | struct httpauth_basic
  type httpauth_basic (line 140) | struct httpauth_basic
  type pl (line 141) | struct pl
  type httpauth_basic (line 142) | struct httpauth_basic
  type httpauth_basic (line 144) | struct httpauth_basic
  type mbuf (line 144) | struct mbuf
  type re_printf (line 147) | struct re_printf
  type httpauth_basic_req (line 148) | struct httpauth_basic_req
  type pl (line 149) | struct pl
  type httpauth_basic_req (line 151) | struct httpauth_basic_req

FILE: include/re_ice.h
  type ice_role (line 9) | enum ice_role {
  type ice_transp (line 16) | enum ice_transp {
  type ice_compid (line 22) | enum ice_compid {
  type ice_cand_type (line 28) | enum ice_cand_type {
  type ice_tcptype (line 36) | enum ice_tcptype {
  type ice_candpair_state (line 43) | enum ice_candpair_state {
  type ice_policy (line 52) | enum ice_policy {
  type ice (line 57) | struct ice
  type ice_cand (line 58) | struct ice_cand
  type icem (line 59) | struct icem
  type turnc (line 60) | struct turnc
  type ice_conf (line 63) | struct ice_conf {
  type icem (line 74) | struct icem
  type ice_role (line 74) | enum ice_role
  type ice_conf (line 77) | struct ice_conf
  type icem (line 77) | struct icem
  type ice_role (line 78) | enum ice_role
  type icem (line 78) | struct icem
  type icem (line 79) | struct icem
  type ice_conf (line 79) | struct ice_conf
  type icem (line 80) | struct icem
  type ice_role (line 80) | enum ice_role
  type icem (line 81) | struct icem
  type icem (line 82) | struct icem
  type icem (line 84) | struct icem
  type sa (line 85) | struct sa
  type icem (line 86) | struct icem
  type icem (line 87) | struct icem
  type icem (line 88) | struct icem
  type sa (line 88) | struct sa
  type icem (line 89) | struct icem
  type icem (line 90) | struct icem
  type icem (line 91) | struct icem
  type icem (line 92) | struct icem
  type re_printf (line 93) | struct re_printf
  type icem (line 93) | struct icem
  type list (line 94) | struct list
  type icem (line 94) | struct icem
  type list (line 95) | struct list
  type icem (line 95) | struct icem
  type list (line 96) | struct list
  type icem (line 96) | struct icem
  type list (line 97) | struct list
  type icem (line 97) | struct icem
  type icem (line 98) | struct icem
  type sa (line 99) | struct sa
  type icem (line 99) | struct icem
  type sa (line 100) | struct sa
  type icem (line 100) | struct icem
  type ice_cand (line 101) | struct ice_cand
  type icem (line 101) | struct icem
  type ice_cand (line 103) | struct ice_cand
  type icem (line 103) | struct icem
  type icem (line 105) | struct icem
  type icem (line 106) | struct icem
  type icem (line 107) | struct icem
  type stun (line 108) | struct stun
  type icem (line 108) | struct icem
  type icem (line 109) | struct icem
  type turnc (line 110) | struct turnc
  type icem (line 113) | struct icem
  type re_printf (line 114) | struct re_printf
  type ice_cand (line 114) | struct ice_cand
  type re_printf (line 115) | struct re_printf
  type icem (line 115) | struct icem
  type ice_cand (line 116) | struct ice_cand
  type list (line 116) | struct list
  type sa (line 117) | struct sa
  type icem (line 118) | struct icem
  type ice_cand_type (line 118) | enum ice_cand_type
  type ice_transp (line 120) | enum ice_transp
  type sa (line 120) | struct sa
  type icem (line 121) | struct icem
  type ice_cand (line 121) | struct ice_cand
  type ice_cand_type (line 122) | enum ice_cand_type
  type sa (line 123) | struct sa
  type ice_cand (line 124) | struct ice_cand
  type ice_cand (line 124) | struct ice_cand
  type sa (line 125) | struct sa
  type ice_cand (line 125) | struct ice_cand
  type ice_cand_type (line 126) | enum ice_cand_type
  type ice_cand (line 126) | struct ice_cand
  type ice_cand_type (line 137) | enum ice_cand_type
  type ice_cand_type (line 138) | enum ice_cand_type
  type ice_role (line 139) | enum ice_role
  type ice_candpair_state (line 140) | enum ice_candpair_state
  type ice_cand_type (line 143) | enum ice_cand_type
  type ice_cand_attr (line 148) | struct ice_cand_attr {
  type re_printf (line 159) | struct re_printf
  type ice_cand_attr (line 160) | struct ice_cand_attr
  type ice_cand_attr (line 161) | struct ice_cand_attr

FILE: include/re_json.h
  type json_typ (line 7) | enum json_typ {
  type json_value (line 15) | struct json_value {
  type json_handlers (line 25) | struct json_handlers
  type json_value (line 28) | struct json_value
  type json_value (line 30) | struct json_value
  type json_handlers (line 32) | struct json_handlers
  type json_handlers (line 34) | struct json_handlers
  type json_handlers (line 36) | struct json_handlers {
  type odict (line 48) | struct odict
  type re_printf (line 50) | struct re_printf
  type odict (line 50) | struct odict

FILE: include/re_list.h
  type le (line 9) | struct le {
  type list (line 21) | struct list {
  type le (line 39) | struct le
  type le (line 50) | struct le
  type le (line 50) | struct le
  type list (line 53) | struct list
  type list (line 54) | struct list
  type list (line 55) | struct list
  type list (line 56) | struct list
  type le (line 56) | struct le
  type list (line 57) | struct list
  type le (line 57) | struct le
  type list (line 58) | struct list
  type le (line 58) | struct le
  type le (line 58) | struct le
  type list (line 60) | struct list
  type le (line 60) | struct le
  type le (line 60) | struct le
  type list (line 62) | struct list
  type le (line 63) | struct le
  type le (line 64) | struct le
  type list (line 65) | struct list
  type le (line 66) | struct le
  type list (line 66) | struct list
  type le (line 68) | struct le
  type list (line 68) | struct list
  type le (line 69) | struct le
  type list (line 69) | struct list
  type list (line 70) | struct list
  type le (line 80) | struct le
  function list_contains (line 86) | static inline bool list_contains(const struct list *list, const struct l...
  function list_isempty (line 92) | static inline bool list_isempty(const struct list *list)
  function list_move (line 128) | static inline void list_move(struct le *le, struct list *list)

FILE: include/re_main.h
  type re (line 9) | struct re
  type re_fhs (line 10) | struct re_fhs
  type re_fhs (line 39) | struct re_fhs
  type re_fhs (line 41) | struct re_fhs
  type re_fhs (line 41) | struct re_fhs
  type re_printf (line 50) | struct re_printf
  type re (line 53) | struct re
  type re (line 54) | struct re
  type tmrl (line 76) | struct tmrl
  type poll_method (line 79) | enum poll_method {
  type poll_method (line 88) | enum poll_method
  type poll_method (line 89) | enum poll_method
  type poll_method (line 90) | enum poll_method
  type poll_method (line 91) | enum poll_method
  type poll_method (line 92) | enum poll_method
  type pl (line 92) | struct pl

FILE: include/re_mbuf.h
  type mbuf (line 43) | struct mbuf {
  type pl (line 51) | struct pl
  type re_printf (line 52) | struct re_printf
  type mbuf (line 54) | struct mbuf
  type mbuf (line 55) | struct mbuf
  type mbuf (line 55) | struct mbuf
  type mbuf (line 56) | struct mbuf
  type mbuf (line 56) | struct mbuf
  type mbuf (line 57) | struct mbuf
  type mbuf (line 58) | struct mbuf
  type mbuf (line 59) | struct mbuf
  type mbuf (line 60) | struct mbuf
  type mbuf (line 61) | struct mbuf
  type mbuf (line 62) | struct mbuf
  type mbuf (line 63) | struct mbuf
  type mbuf (line 64) | struct mbuf
  type mbuf (line 65) | struct mbuf
  type mbuf (line 66) | struct mbuf
  type mbuf (line 67) | struct mbuf
  type mbuf (line 68) | struct mbuf
  type mbuf (line 69) | struct mbuf
  type pl (line 69) | struct pl
  type mbuf (line 70) | struct mbuf
  type mbuf (line 71) | struct mbuf
  type mbuf (line 72) | struct mbuf
  type mbuf (line 73) | struct mbuf
  type mbuf (line 74) | struct mbuf
  type mbuf (line 75) | struct mbuf
  type mbuf (line 76) | struct mbuf
  type mbuf (line 77) | struct mbuf
  type mbuf (line 78) | struct mbuf
  type mbuf (line 87) | struct mbuf
  type mbuf (line 88) | struct mbuf
  type mbuf (line 90) | struct mbuf
  type pl (line 90) | struct pl
  type pl (line 91) | struct pl
  type mbuf (line 92) | struct mbuf
  type mbuf (line 93) | struct mbuf
  type re_printf (line 94) | struct re_printf
  type mbuf (line 94) | struct mbuf
  type mbuf (line 104) | struct mbuf
  function mbuf_get_left (line 117) | static inline size_t mbuf_get_left(const struct mbuf *mb)
  function mbuf_get_space (line 130) | static inline size_t mbuf_get_space(const struct mbuf *mb)
  function mbuf_set_pos (line 142) | static inline void mbuf_set_pos(struct mbuf *mb, size_t pos)
  function mbuf_set_end (line 158) | static inline void mbuf_set_end(struct mbuf *mb, size_t end)
  function mbuf_advance (line 174) | static inline void mbuf_advance(struct mbuf *mb, ssize_t n)
  function mbuf_rewind (line 189) | static inline void mbuf_rewind(struct mbuf *mb)
  function mbuf_skip_to_end (line 203) | static inline void mbuf_skip_to_end(struct mbuf *mb)
  function mbuf_pos (line 219) | static inline size_t mbuf_pos(const struct mbuf *mb)
  function mbuf_end (line 232) | static inline size_t mbuf_end(const struct mbuf *mb)

FILE: include/re_mem.h
  type memstat (line 17) | struct memstat {
  type re_printf (line 35) | struct re_printf
  type re_printf (line 36) | struct re_printf
  type memstat (line 37) | struct memstat
  type mem_pool (line 46) | struct mem_pool
  type mem_pool_entry (line 47) | struct mem_pool_entry
  type mem_pool (line 48) | struct mem_pool
  type mem_pool (line 50) | struct mem_pool
  type mem_pool_entry (line 51) | struct mem_pool_entry
  type mem_pool (line 51) | struct mem_pool
  type mem_pool_entry (line 52) | struct mem_pool_entry
  type mem_pool (line 52) | struct mem_pool
  type mem_pool (line 53) | struct mem_pool
  type mem_pool_entry (line 53) | struct mem_pool_entry
  type mem_pool_entry (line 54) | struct mem_pool_entry
  type mem_pool (line 55) | struct mem_pool

FILE: include/re_mod.h
  type mod (line 46) | struct mod
  type re_printf (line 47) | struct re_printf
  type mod_export (line 51) | struct mod_export {
  type mod (line 64) | struct mod
  type mod (line 65) | struct mod
  type mod_export (line 65) | struct mod_export
  type mod (line 66) | struct mod
  type mod_export (line 67) | struct mod_export
  type mod (line 67) | struct mod
  type list (line 68) | struct list
  type re_printf (line 69) | struct re_printf

FILE: include/re_mqueue.h
  type mqueue (line 7) | struct mqueue
  type mqueue (line 11) | struct mqueue
  type mqueue (line 12) | struct mqueue

FILE: include/re_msg.h
  type msg_ctype (line 9) | struct msg_ctype {
  type msg_ctype (line 16) | struct msg_ctype
  type pl (line 16) | struct pl
  type msg_ctype (line 17) | struct msg_ctype
  type pl (line 20) | struct pl
  type pl (line 20) | struct pl
  type pl (line 21) | struct pl
  type pl (line 21) | struct pl

FILE: include/re_net.h
  type sa (line 31) | struct sa
  type sa (line 35) | struct sa
  type sa (line 35) | struct sa
  type sa (line 36) | struct sa
  type sa (line 37) | struct sa
  type sa (line 62) | struct sa
  type sa (line 65) | struct sa
  type sa (line 66) | struct sa
  type re_printf (line 69) | struct re_printf
  type sa (line 70) | struct sa
  type sa (line 91) | struct sa
  type sa (line 92) | struct sa
  type re_printf (line 96) | struct re_printf

FILE: include/re_odict.h
  type odict_type (line 7) | enum odict_type {
  type odict (line 18) | struct odict {
  type odict_entry (line 23) | struct odict_entry
  type odict (line 25) | struct odict
  type odict_entry (line 26) | struct odict_entry
  type odict (line 26) | struct odict
  type odict (line 27) | struct odict
  type re_printf (line 28) | struct re_printf
  type odict (line 28) | struct odict
  type odict (line 30) | struct odict
  type odict (line 32) | struct odict
  type pl (line 33) | struct pl
  type odict (line 34) | struct odict
  type re_printf (line 35) | struct re_printf
  type odict_entry (line 35) | struct odict_entry
  type odict (line 36) | struct odict
  type odict (line 36) | struct odict
  type odict_type (line 39) | enum odict_type
  type odict_type (line 40) | enum odict_type
  type odict_type (line 41) | enum odict_type
  type odict_entry (line 46) | struct odict_entry
  type odict (line 46) | struct odict
  type odict_type (line 47) | enum odict_type
  type odict (line 48) | struct odict
  type odict (line 49) | struct odict
  type odict (line 50) | struct odict
  type odict (line 51) | struct odict
  type odict (line 51) | struct odict
  type odict (line 52) | struct odict
  type odict (line 52) | struct odict
  type odict_type (line 57) | enum odict_type
  type odict_entry (line 57) | struct odict_entry
  type odict_entry (line 58) | struct odict_entry
  type odict (line 59) | struct odict
  type odict_entry (line 59) | struct odict_entry
  type odict (line 60) | struct odict
  type odict_entry (line 60) | struct odict_entry
  type odict_entry (line 61) | struct odict_entry
  type odict_entry (line 62) | struct odict_entry
  type odict_entry (line 63) | struct odict_entry
  type odict_entry (line 64) | struct odict_entry
  type odict_entry (line 65) | struct odict_entry
  type odict_entry (line 66) | struct odict_entry

FILE: include/re_pcp.h
  type pcp_opcode (line 40) | enum pcp_opcode {
  type pcp_result (line 46) | enum pcp_result {
  type pcp_option_code (line 63) | enum pcp_option_code {
  type udp_sock (line 71) | struct udp_sock
  type pcp_option (line 74) | struct pcp_option {
  type pcp_msg (line 97) | struct pcp_msg {
  type pcp_conf (line 133) | struct pcp_conf {
  type pcp_request (line 143) | struct pcp_request
  type pcp_msg (line 145) | struct pcp_msg
  type pcp_request (line 147) | struct pcp_request
  type pcp_conf (line 147) | struct pcp_conf
  type sa (line 148) | struct sa
  type pcp_opcode (line 148) | enum pcp_opcode
  type pcp_request (line 151) | struct pcp_request
  type udp_sock (line 156) | struct udp_sock
  type sa (line 156) | struct sa
  type mbuf (line 156) | struct mbuf
  type pcp_opcode (line 157) | enum pcp_opcode
  type pcp_result (line 157) | enum pcp_result
  type pcp_option (line 163) | struct pcp_option
  type pcp_msg (line 165) | struct pcp_msg
  type mbuf (line 165) | struct mbuf
  type re_printf (line 166) | struct re_printf
  type pcp_msg (line 166) | struct pcp_msg
  type re_printf (line 167) | struct re_printf
  type pcp_msg (line 167) | struct pcp_msg
  type pcp_option (line 168) | struct pcp_option
  type pcp_msg (line 168) | struct pcp_msg
  type pcp_option_code (line 169) | enum pcp_option_code
  type pcp_option (line 170) | struct pcp_option
  type pcp_msg (line 170) | struct pcp_msg
  type pcp_msg (line 172) | struct pcp_msg
  type mbuf (line 177) | struct mbuf
  type pcp_option_code (line 177) | enum pcp_option_code
  type pcp_option (line 179) | struct pcp_option
  type mbuf (line 179) | struct mbuf
  type re_printf (line 180) | struct re_printf
  type pcp_option (line 180) | struct pcp_option
  type mbuf (line 185) | struct mbuf
  type pcp_opcode (line 185) | enum pcp_opcode
  type sa (line 186) | struct sa
  type mbuf (line 188) | struct mbuf
  type pcp_opcode (line 188) | enum pcp_opcode
  type sa (line 189) | struct sa
  type mbuf (line 195) | struct mbuf
  type sa (line 195) | struct sa
  type mbuf (line 196) | struct mbuf
  type sa (line 196) | struct sa
  type pcp_result (line 197) | enum pcp_result
  type pcp_opcode (line 198) | enum pcp_opcode

FILE: include/re_rtmp.h
  type rtmp_packet_type (line 22) | enum rtmp_packet_type {
  type rtmp_amf_type (line 35) | enum rtmp_amf_type {
  type rtmp_event_type (line 48) | enum rtmp_event_type {
  type tls (line 60) | struct tls
  type dnsc (line 61) | struct dnsc
  type odict (line 62) | struct odict
  type tcp_sock (line 63) | struct tcp_sock
  type rtmp_conn (line 72) | struct rtmp_conn
  type odict (line 75) | struct odict
  type rtmp_conn (line 78) | struct rtmp_conn
  type dnsc (line 78) | struct dnsc
  type tls (line 79) | struct tls
  type rtmp_conn (line 82) | struct rtmp_conn
  type tcp_sock (line 82) | struct tcp_sock
  type tls (line 83) | struct tls
  type rtmp_conn (line 85) | struct rtmp_conn
  type rtmp_packet_type (line 86) | enum rtmp_packet_type
  type rtmp_conn (line 87) | struct rtmp_conn
  type tcp_conn (line 89) | struct tcp_conn
  type rtmp_conn (line 89) | struct rtmp_conn
  type rtmp_conn (line 90) | struct rtmp_conn
  type re_printf (line 91) | struct re_printf
  type rtmp_conn (line 91) | struct rtmp_conn
  type odict (line 94) | struct odict
  type rtmp_conn (line 98) | struct rtmp_conn
  type rtmp_conn (line 101) | struct rtmp_conn
  type rtmp_conn (line 104) | struct rtmp_conn
  type odict (line 105) | struct odict
  type rtmp_conn (line 107) | struct rtmp_conn
  type rtmp_stream (line 112) | struct rtmp_stream
  type rtmp_event_type (line 114) | enum rtmp_event_type
  type mbuf (line 114) | struct mbuf
  type rtmp_stream (line 121) | struct rtmp_stream
  type rtmp_conn (line 121) | struct rtmp_conn
  type rtmp_stream (line 126) | struct rtmp_stream
  type rtmp_conn (line 126) | struct rtmp_conn
  type rtmp_stream (line 131) | struct rtmp_stream
  type rtmp_stream (line 132) | struct rtmp_stream
  type rtmp_stream (line 133) | struct rtmp_stream
  type rtmp_stream (line 134) | struct rtmp_stream
  type rtmp_stream (line 136) | struct rtmp_stream
  type rtmp_stream (line 138) | struct rtmp_stream
  type rtmp_conn (line 138) | struct rtmp_conn
  type rtmp_event_type (line 142) | enum rtmp_event_type

FILE: include/re_rtp.h
  type rtp_header (line 17) | struct rtp_header {
  type rtcp_type (line 36) | enum rtcp_type {
  type rtcp_sdes_type (line 51) | enum rtcp_sdes_type {
  type rtcp_rtpfb (line 64) | enum rtcp_rtpfb {
  type rtcp_psfb (line 70) | enum rtcp_psfb {
  type rtcp_xr (line 78) | enum rtcp_xr {
  type rtcp_rr (line 89) | struct rtcp_rr {
  type rtcp_sdes_item (line 100) | struct rtcp_sdes_item {
  type rtcp_msg (line 107) | struct rtcp_msg {
  type rtcp_stats (line 223) | struct rtcp_stats {
  type sa (line 237) | struct sa
  type re_printf (line 238) | struct re_printf
  type rtp_sock (line 239) | struct rtp_sock
  type sa (line 249) | struct sa
  type rtp_header (line 249) | struct rtp_header
  type mbuf (line 250) | struct mbuf
  type sa (line 260) | struct sa
  type rtcp_msg (line 260) | struct rtcp_msg
  type rtp_sock (line 264) | struct rtp_sock
  type rtp_sock (line 265) | struct rtp_sock
  type sa (line 265) | struct sa
  type rtp_sock (line 268) | struct rtp_sock
  type sa (line 268) | struct sa
  type rtp_sock (line 270) | struct rtp_sock
  type mbuf (line 271) | struct mbuf
  type rtp_header (line 271) | struct rtp_header
  type rtp_header (line 272) | struct rtp_header
  type mbuf (line 272) | struct mbuf
  type rtp_sock (line 273) | struct rtp_sock
  type mbuf (line 274) | struct mbuf
  type rtp_sock (line 275) | struct rtp_sock
  type mbuf (line 276) | struct mbuf
  type rtp_sock (line 277) | struct rtp_sock
  type mbuf (line 277) | struct mbuf
  type rtp_header (line 277) | struct rtp_header
  type rtp_sock (line 278) | struct rtp_sock
  type sa (line 278) | struct sa
  type mbuf (line 280) | struct mbuf
  type rtp_sock (line 281) | struct rtp_sock
  type sa (line 281) | struct sa
  type mbuf (line 283) | struct mbuf
  type re_printf (line 284) | struct re_printf
  type rtp_sock (line 284) | struct rtp_sock
  type rtp_sock (line 285) | struct rtp_sock
  type rtp_sock (line 286) | struct rtp_sock
  type rtp_sock (line 287) | struct rtp_sock
  type sa (line 288) | struct sa
  type rtp_sock (line 288) | struct rtp_sock
  type rtp_sock (line 289) | struct rtp_sock
  type rtp_sock (line 292) | struct rtp_sock
  type sa (line 293) | struct sa
  type rtp_sock (line 294) | struct rtp_sock
  type rtp_sock (line 295) | struct rtp_sock
  type rtp_sock (line 296) | struct rtp_sock
  type rtp_sock (line 297) | struct rtp_sock
  type rtp_sock (line 298) | struct rtp_sock
  type rtp_sock (line 299) | struct rtp_sock
  type mbuf (line 299) | struct mbuf
  type rtp_sock (line 300) | struct rtp_sock
  type rtp_sock (line 302) | struct rtp_sock
  type rtp_sock (line 303) | struct rtp_sock
  type rtp_sock (line 304) | struct rtp_sock
  type rtp_sock (line 306) | struct rtp_sock
  type twcc (line 306) | struct twcc
  type rtp_sock (line 307) | struct rtp_sock
  type rtp_sock (line 308) | struct rtp_sock
  type re_printf (line 310) | struct re_printf
  type rtp_sock (line 310) | struct rtp_sock
  type rtp_sock (line 311) | struct rtp_sock
  type rtp_sock (line 312) | struct rtp_sock
  type rtcp_stats (line 312) | struct rtcp_stats
  type rtp_sock (line 313) | struct rtp_sock
  type mbuf (line 316) | struct mbuf
  type rtcp_type (line 316) | enum rtcp_type
  type rtcp_msg (line 317) | struct rtcp_msg
  type mbuf (line 317) | struct mbuf
  type re_printf (line 318) | struct re_printf
  type rtcp_msg (line 318) | struct rtcp_msg
  type mbuf (line 319) | struct mbuf
  type rtcp_type (line 320) | enum rtcp_type
  type rtcp_sdes_type (line 321) | enum rtcp_sdes_type
  type mbuf (line 322) | struct mbuf
  function rtp_pt_is_rtcp (line 333) | static inline bool rtp_pt_is_rtcp(uint8_t pt)
  function rtp_seq_diff (line 347) | static inline int16_t rtp_seq_diff(uint16_t x, uint16_t y)
  function rtp_seq_less (line 361) | static inline bool rtp_seq_less(uint16_t x, uint16_t y)
  type rtp_ntp_time (line 368) | struct rtp_ntp_time {
  type rtp_source (line 374) | struct rtp_source {
  type rtp_source (line 396) | struct rtp_source
  type rtp_source (line 397) | struct rtp_source
  type rtp_source (line 398) | struct rtp_source
  type rtp_source (line 400) | struct rtp_source
  type rtp_source (line 401) | struct rtp_source
  type twcc_packet_state (line 405) | enum twcc_packet_state {
  type rtcp_twcc_packet (line 411) | struct rtcp_twcc_packet {

FILE: include/re_rtpext.h
  type rtpext (line 29) | struct rtpext {
  type mbuf (line 36) | struct mbuf
  type mbuf (line 37) | struct mbuf
  type mbuf (line 38) | struct mbuf
  type mbuf (line 40) | struct mbuf
  type rtpext (line 42) | struct rtpext
  type mbuf (line 42) | struct mbuf
  type rtpext (line 43) | struct rtpext
  type mbuf (line 43) | struct mbuf
  type rtpext (line 44) | struct rtpext
  type rtpext (line 44) | struct rtpext

FILE: include/re_sa.h
  type SOCKADDR_UN (line 11) | typedef struct sockaddr_un {
  type pl (line 24) | struct pl
  type sa_flag (line 27) | enum sa_flag {
  type sa (line 34) | struct sa {
  type sa (line 46) | struct sa
  type sa (line 47) | struct sa
  type pl (line 47) | struct pl
  type sa (line 48) | struct sa
  type sa (line 49) | struct sa
  type sa (line 50) | struct sa
  type sa (line 51) | struct sa
  type sockaddr (line 51) | struct sockaddr
  type sa (line 52) | struct sa
  type sa (line 53) | struct sa
  type sa (line 55) | struct sa
  type sa (line 56) | struct sa
  type sa (line 57) | struct sa
  type sa (line 58) | struct sa
  type sa (line 60) | struct sa
  type sa (line 61) | struct sa
  type sa (line 62) | struct sa
  type sa (line 63) | struct sa
  type sa (line 64) | struct sa
  type sa (line 66) | struct sa
  type sa (line 66) | struct sa
  type sa (line 67) | struct sa
  type sa (line 67) | struct sa
  type sa (line 69) | struct sa
  type sa (line 70) | struct sa
  type sa (line 71) | struct sa
  type sa (line 72) | struct sa
  type sa (line 74) | struct sa
  type sa (line 75) | struct sa
  type re_printf (line 78) | struct re_printf
  type re_printf (line 79) | struct re_printf
  type sa (line 79) | struct sa

FILE: include/re_sdp.h
  type sdp_dir (line 13) | enum sdp_dir {
  type sdp_bandwidth (line 21) | enum sdp_bandwidth {
  type sdp_format (line 33) | struct sdp_format
  type mbuf (line 35) | struct mbuf
  type mbuf (line 36) | struct mbuf
  type sdp_format (line 36) | struct sdp_format
  type sdp_format (line 40) | struct sdp_format
  type sdp_format (line 44) | struct sdp_format {
  type sdp_session (line 62) | struct sdp_session
  type sdp_session (line 64) | struct sdp_session
  type sa (line 64) | struct sa
  type sdp_session (line 65) | struct sdp_session
  type sa (line 65) | struct sa
  type sa (line 66) | struct sa
  type sdp_session (line 66) | struct sdp_session
  type sdp_session (line 67) | struct sdp_session
  type sdp_bandwidth (line 68) | enum sdp_bandwidth
  type sdp_session (line 69) | struct sdp_session
  type sdp_session (line 71) | struct sdp_session
  type sdp_session (line 72) | struct sdp_session
  type sdp_bandwidth (line 73) | enum sdp_bandwidth
  type sdp_session (line 74) | struct sdp_session
  type sdp_bandwidth (line 75) | enum sdp_bandwidth
  type sdp_session (line 76) | struct sdp_session
  type sdp_session (line 78) | struct sdp_session
  type list (line 81) | struct list
  type sdp_session (line 81) | struct sdp_session
  type re_printf (line 83) | struct re_printf
  type sdp_session (line 83) | struct sdp_session
  type sdp_media (line 87) | struct sdp_media
  type sdp_media (line 89) | struct sdp_media
  type sdp_session (line 89) | struct sdp_session
  type sdp_media (line 91) | struct sdp_media
  type sdp_media (line 92) | struct sdp_media
  type sdp_media (line 94) | struct sdp_media
  type sdp_media (line 95) | struct sdp_media
  type sdp_media (line 96) | struct sdp_media
  type sdp_media (line 97) | struct sdp_media
  type sdp_media (line 98) | struct sdp_media
  type sa (line 98) | struct sa
  type sdp_media (line 99) | struct sdp_media
  type sdp_bandwidth (line 99) | enum sdp_bandwidth
  type sdp_media (line 101) | struct sdp_media
  type sdp_media (line 102) | struct sdp_media
  type sa (line 102) | struct sa
  type sdp_media (line 103) | struct sdp_media
  type sdp_dir (line 103) | enum sdp_dir
  type sdp_media (line 104) | struct sdp_media
  type sdp_media (line 106) | struct sdp_media
  type sdp_media (line 107) | struct sdp_media
  type sdp_media (line 108) | struct sdp_media
  type sa (line 109) | struct sa
  type sdp_media (line 109) | struct sdp_media
  type sa (line 110) | struct sa
  type sdp_media (line 110) | struct sdp_media
  type sdp_media (line 111) | struct sdp_media
  type sa (line 111) | struct sa
  type sdp_media (line 112) | struct sdp_media
  type sdp_bandwidth (line 113) | enum sdp_bandwidth
  type sdp_dir (line 114) | enum sdp_dir
  type sdp_media (line 114) | struct sdp_media
  type sdp_dir (line 115) | enum sdp_dir
  type sdp_media (line 115) | struct sdp_media
  type sdp_dir (line 116) | enum sdp_dir
  type sdp_media (line 116) | struct sdp_media
  type sdp_format (line 117) | struct sdp_format
  type sdp_media (line 117) | struct sdp_media
  type sdp_format (line 118) | struct sdp_format
  type sdp_media (line 118) | struct sdp_media
  type sdp_format (line 120) | struct sdp_format
  type sdp_media (line 120) | struct sdp_media
  type sdp_format (line 124) | struct sdp_format
  type sdp_media (line 124) | struct sdp_media
  type list (line 129) | struct list
  type sdp_media (line 129) | struct sdp_media
  type sdp_media (line 130) | struct sdp_media
  type sdp_media (line 131) | struct sdp_media
  type sdp_session (line 132) | struct sdp_session
  type sdp_media (line 134) | struct sdp_media
  type sdp_media (line 136) | struct sdp_media
  type sdp_media (line 138) | struct sdp_media
  type re_printf (line 139) | struct re_printf
  type sdp_media (line 139) | struct sdp_media
  type sdp_format (line 143) | struct sdp_format
  type sdp_media (line 143) | struct sdp_media
  type sdp_format (line 148) | struct sdp_format
  type sdp_format (line 149) | struct sdp_format
  type sdp_format (line 150) | struct sdp_format
  type re_printf (line 151) | struct re_printf
  type sdp_format (line 151) | struct sdp_format
  type mbuf (line 155) | struct mbuf
  type sdp_session (line 155) | struct sdp_session
  type sdp_session (line 156) | struct sdp_session
  type mbuf (line 156) | struct mbuf
  type sdp_dir (line 160) | enum sdp_dir
  type sdp_bandwidth (line 161) | enum sdp_bandwidth
  type sdp_dir (line 180) | enum sdp_dir
  type pl (line 180) | struct pl
  type sdp_extmap (line 183) | struct sdp_extmap {
  type sdp_extmap (line 191) | struct sdp_extmap

FILE: include/re_shim.h
  type shim (line 13) | struct shim
  type mbuf (line 15) | struct mbuf
  type shim (line 18) | struct shim
  type tcp_conn (line 18) | struct tcp_conn
  type re_printf (line 20) | struct re_printf
  type shim (line 20) | struct shim

FILE: include/re_sip.h
  type tls (line 8) | struct tls
  type sip_transp (line 16) | enum sip_transp {
  type sip_hdrid (line 29) | enum sip_hdrid {
  type rel100_mode (line 138) | enum rel100_mode {
  type sip_via (line 154) | struct sip_via {
  type sip_addr (line 164) | struct sip_addr {
  type sip_taddr (line 172) | struct sip_taddr {
  type sip_cseq (line 182) | struct sip_cseq {
  type sip_rack (line 188) | struct sip_rack {
  type sip_hdr (line 195) | struct sip_hdr {
  type sip_msg (line 204) | struct sip_msg {
  type sip_loopstate (line 234) | struct sip_loopstate {
  type sip_contact (line 240) | struct sip_contact {
  type sip_conncfg (line 247) | struct sip_conncfg {
  type sip_uas_auth (line 255) | struct sip_uas_auth {
  type sip (line 261) | struct sip
  type sip_lsnr (line 262) | struct sip_lsnr
  type sip_request (line 263) | struct sip_request
  type sip_strans (line 264) | struct sip_strans
  type sip_auth (line 265) | struct sip_auth
  type sip_dialog (line 266) | struct sip_dialog
  type sip_keepalive (line 267) | struct sip_keepalive
  type sip_uas_auth (line 268) | struct sip_uas_auth
  type dnsc (line 269) | struct dnsc
  type sip_msg (line 271) | struct sip_msg
  type sip_transp (line 272) | enum sip_transp
  type sa (line 272) | struct sa
  type sa (line 273) | struct sa
  type mbuf (line 273) | struct mbuf
  type mbuf (line 274) | struct mbuf
  type sa (line 275) | struct sa
  type sa (line 275) | struct sa
  type mbuf (line 275) | struct mbuf
  type sip_msg (line 277) | struct sip_msg
  type sip_hdr (line 282) | struct sip_hdr
  type sip_msg (line 282) | struct sip_msg
  type sip_transp (line 288) | enum sip_transp
  type sa (line 289) | struct sa
  type sa (line 289) | struct sa
  type pl (line 291) | struct pl
  type sip (line 296) | struct sip
  type dnsc (line 296) | struct dnsc
  type sip (line 299) | struct sip
  type sip_lsnr (line 300) | struct sip_lsnr
  type sip (line 300) | struct sip
  type re_printf (line 302) | struct re_printf
  type sip (line 302) | struct sip
  type sip (line 303) | struct sip
  type sip_transp (line 303) | enum sip_transp
  type sa (line 304) | struct sa
  type mbuf (line 304) | struct mbuf
  type sip (line 305) | struct sip
  type sip_transp (line 305) | enum sip_transp
  type sa (line 306) | struct sa
  type mbuf (line 306) | struct mbuf
  type sip (line 308) | struct sip
  type sip (line 312) | struct sip
  type sip_transp (line 312) | enum sip_transp
  type sa (line 313) | struct sa
  type sip (line 314) | struct sip
  type sip_transp (line 314) | enum sip_transp
  type sa (line 315) | struct sa
  type sip (line 316) | struct sip
  type sip_transp (line 316) | enum sip_transp
  type sa (line 317) | struct sa
  type tls (line 318) | struct tls
  type sip (line 319) | struct sip
  type uri (line 319) | struct uri
  type sip (line 321) | struct sip
  type sip (line 322) | struct sip
  type sip_transp (line 322) | enum sip_transp
  type sa (line 323) | struct sa
  type sip_transp (line 324) | enum sip_transp
  type sip_transp (line 325) | enum sip_transp
  type sip_transp (line 326) | enum sip_transp
  type pl (line 326) | struct pl
  type sip_transp (line 327) | enum sip_transp
  type sip (line 328) | struct sip
  type sa (line 328) | struct sa
  type sip_transp (line 328) | enum sip_transp
  type sa (line 329) | struct sa
  type sip (line 330) | struct sip
  type sip_transp (line 330) | enum sip_transp
  type sip (line 331) | struct sip
  type sa (line 331) | struct sa
  type sip (line 332) | struct sip
  type sip_request (line 336) | struct sip_request
  type sip (line 336) | struct sip
  type uri (line 338) | struct uri
  type mbuf (line 338) | struct mbuf
  type sip_request (line 340) | struct sip_request
  type sip (line 340) | struct sip
  type uri (line 341) | struct uri
  type sip_auth (line 342) | struct sip_auth
  type sip_request (line 344) | struct sip_request
  type sip (line 344) | struct sip
  type sip_dialog (line 345) | struct sip_dialog
  type sip_auth (line 346) | struct sip_auth
  type sip_request (line 348) | struct sip_request
  type sip_loopstate (line 349) | struct sip_loopstate
  type sip_loopstate (line 350) | struct sip_loopstate
  type sip_request (line 351) | struct sip_request
  type sip_strans (line 355) | struct sip_strans
  type sip (line 355) | struct sip
  type sip_msg (line 356) | struct sip_msg
  type sip_strans (line 358) | struct sip_strans
  type sip (line 358) | struct sip
  type sip_msg (line 359) | struct sip_msg
  type sa (line 359) | struct sa
  type mbuf (line 360) | struct mbuf
  type sip_strans (line 361) | struct sip_strans
  type mbuf (line 361) | struct mbuf
  type sip (line 361) | struct sip
  type sip_msg (line 362) | struct sip_msg
  type sip_strans (line 364) | struct sip_strans
  type sip (line 364) | struct sip
  type sip_msg (line 365) | struct sip_msg
  type sip (line 366) | struct sip
  type sip_msg (line 366) | struct sip_msg
  type sip (line 368) | struct sip
  type sip_msg (line 368) | struct sip_msg
  type sa (line 370) | struct sa
  type sip_msg (line 370) | struct sip_msg
  type sip_msg (line 371) | struct sip_msg
  type sip_strans (line 371) | struct sip_strans
  type sip_auth (line 374) | struct sip_auth
  type sip_msg (line 374) | struct sip_msg
  type sip_auth (line 375) | struct sip_auth
  type sip_auth (line 378) | struct sip_auth
  type mbuf (line 379) | struct mbuf
  type sip_auth (line 379) | struct sip_auth
  type sip_contact (line 384) | struct sip_contact
  type sa (line 385) | struct sa
  type sip_transp (line 385) | enum sip_transp
  type re_printf (line 386) | struct re_printf
  type sip_contact (line 387) | struct sip_contact
  type sip_dialog (line 391) | struct sip_dialog
  type sip_dialog (line 395) | struct sip_dialog
  type sip_msg (line 395) | struct sip_msg
  type sip_dialog (line 396) | struct sip_dialog
  type sip_msg (line 396) | struct sip_msg
  type sip_dialog (line 397) | struct sip_dialog
  type sip_dialog (line 397) | struct sip_dialog
  type sip_msg (line 398) | struct sip_msg
  type sip_dialog (line 399) | struct sip_dialog
  type sip_msg (line 399) | struct sip_msg
  type sip_dialog (line 400) | struct sip_dialog
  type sip_msg (line 400) | struct sip_msg
  type sip_dialog (line 401) | struct sip_dialog
  type sip_dialog (line 402) | struct sip_dialog
  type sip_dialog (line 403) | struct sip_dialog
  type sip_dialog (line 404) | struct sip_dialog
  type sip_dialog (line 405) | struct sip_dialog
  type sip_dialog (line 406) | struct sip_dialog
  type sip_dialog (line 407) | struct sip_dialog
  type sip_dialog (line 408) | struct sip_dialog
  type sip_dialog (line 409) | struct sip_dialog
  type sip_transp (line 410) | enum sip_transp
  type sip_dialog (line 410) | struct sip_dialog
  type sip_dialog (line 411) | struct sip_dialog
  type sip_dialog (line 412) | struct sip_dialog
  type sip_msg (line 412) | struct sip_msg
  type sip_dialog (line 413) | struct sip_dialog
  type sip_msg (line 414) | struct sip_msg
  type sip_msg (line 418) | struct sip_msg
  type mbuf (line 418) | struct mbuf
  type sip_hdr (line 419) | struct sip_hdr
  type sip_msg (line 419) | struct sip_msg
  type sip_hdrid (line 420) | enum sip_hdrid
  type sip_hdr (line 421) | struct sip_hdr
  type sip_msg (line 421) | struct sip_msg
  type sip_hdrid (line 422) | enum sip_hdrid
  type sip_hdr (line 424) | struct sip_hdr
  type sip_msg (line 424) | struct sip_msg
  type sip_hdr (line 426) | struct sip_hdr
  type sip_msg (line 426) | struct sip_msg
  type sip_msg (line 429) | struct sip_msg
  type sip_hdrid (line 429) | enum sip_hdrid
  type sip_msg (line 430) | struct sip_msg
  type sip_msg (line 431) | struct sip_msg
  type sip_hdrid (line 431) | enum sip_hdrid
  type sip_msg (line 433) | struct sip_msg
  type tcp_conn (line 435) | struct tcp_conn
  type sip_msg (line 435) | struct sip_msg
  type sip_msg (line 436) | struct sip_msg
  type sip_addr (line 438) | struct sip_addr
  type pl (line 438) | struct pl
  type sip_via (line 439) | struct sip_via
  type pl (line 439) | struct pl
  type sip_cseq (line 440) | struct sip_cseq
  type pl (line 440) | struct pl
  type sip_rack (line 441) | struct sip_rack
  type pl (line 441) | struct pl
  type sip_keepalive (line 445) | struct sip_keepalive
  type sip (line 445) | struct sip
  type sip_msg (line 446) | struct sip_msg
  type sip (line 450) | struct sip
  type sa (line 450) | struct sa
  type sip_conncfg (line 451) | struct sip_conncfg
  type sip_uas_auth (line 455) | struct sip_uas_auth
  type sip_msg (line 455) | struct sip_msg
  type re_printf (line 457) | struct re_printf
  type sip_uas_auth (line 458) | struct sip_uas_auth
  type sip_uas_auth (line 459) | struct sip_uas_auth
  type sip_msg (line 459) | struct sip_msg

FILE: include/re_sipevent.h
  type sipevent_event (line 10) | struct sipevent_event {
  type sipevent_subst (line 16) | enum sipevent_subst {
  type sipevent_reason (line 22) | enum sipevent_reason {
  type sipevent_substate (line 31) | struct sipevent_substate {
  type sipevent_event (line 39) | struct sipevent_event
  type pl (line 39) | struct pl
  type sipevent_substate (line 40) | struct sipevent_substate
  type pl (line 41) | struct pl
  type sipevent_subst (line 42) | enum sipevent_subst
  type sipevent_reason (line 43) | enum sipevent_reason
  type sipevent_sock (line 48) | struct sipevent_sock
  type sipevent_sock (line 50) | struct sipevent_sock
  type sip (line 50) | struct sip
  type sipnot (line 57) | struct sipnot
  type sip_msg (line 59) | struct sip_msg
  type sipnot (line 61) | struct sipnot
  type sipevent_sock (line 61) | struct sipevent_sock
  type sip_msg (line 62) | struct sip_msg
  type sip_dialog (line 62) | struct sip_dialog
  type sipevent_event (line 63) | struct sipevent_event
  type sipnot (line 69) | struct sipnot
  type mbuf (line 69) | struct mbuf
  type sipevent_subst (line 70) | enum sipevent_subst
  type sipevent_reason (line 70) | enum sipevent_reason
  type sipnot (line 72) | struct sipnot
  type mbuf (line 72) | struct mbuf
  type sipevent_subst (line 73) | enum sipevent_subst
  type sipevent_reason (line 73) | enum sipevent_reason
  type sipsub (line 79) | struct sipsub
  type sipsub (line 81) | struct sipsub
  type sipsub (line 81) | struct sipsub
  type sip_msg (line 82) | struct sip_msg
  type sip (line 83) | struct sip
  type sip_msg (line 83) | struct sip_msg
  type sip_msg (line 85) | struct sip_msg
  type sipevent_substate (line 86) | struct sipevent_substate
  type sipsub (line 89) | struct sipsub
  type sipevent_sock (line 89) | struct sipevent_sock
  type sipsub (line 98) | struct sipsub
  type sipevent_sock (line 98) | struct sipevent_sock
  type sip_dialog (line 99) | struct sip_dialog
  type sipsub (line 105) | struct sipsub
  type sipevent_sock (line 105) | struct sipevent_sock
  type sipsub (line 113) | struct sipsub
  type sipevent_sock (line 113) | struct sipevent_sock
  type sip_dialog (line 114) | struct sip_dialog
  type sipsub (line 119) | struct sipsub
  type sipsub (line 119) | struct sipsub
  type sip_msg (line 120) | struct sip_msg

FILE: include/re_sipreg.h
  type sipreg (line 7) | struct sipreg
  type sipreg (line 10) | struct sipreg
  type sipreg (line 11) | struct sipreg
  type sip (line 11) | struct sip
  type sipreg (line 18) | struct sipreg
  type sipreg (line 20) | struct sipreg
  type sa (line 22) | struct sa
  type sipreg (line 22) | struct sipreg
  type sipreg (line 24) | struct sipreg
  type sipreg (line 25) | struct sipreg
  type sipreg (line 26) | struct sipreg
  type sipreg (line 27) | struct sipreg
  type sipreg (line 29) | struct sipreg
  type sipreg (line 30) | struct sipreg
  type sipreg (line 31) | struct sipreg

FILE: include/re_sipsess.h
  type sipsess_sock (line 7) | struct sipsess_sock
  type sipsess (line 8) | struct sipsess
  type sdp_neg_state (line 11) | enum sdp_neg_state {
  type sip_msg (line 20) | struct sip_msg
  type mbuf (line 21) | struct mbuf
  type sa (line 21) | struct sa
  type sa (line 22) | struct sa
  type mbuf (line 23) | struct mbuf
  type sip_msg (line 23) | struct sip_msg
  type sip_msg (line 25) | struct sip_msg
  type sip_msg (line 26) | struct sip_msg
  type sip_msg (line 27) | struct sip_msg
  type sip (line 28) | struct sip
  type sip_msg (line 28) | struct sip_msg
  type sip (line 30) | struct sip
  type sip_msg (line 30) | struct sip_msg
  type sip_msg (line 32) | struct sip_msg
  type sip_msg (line 34) | struct sip_msg
  type sip_msg (line 36) | struct sip_msg
  type sipsess_sock (line 38) | struct sipsess_sock
  type sip (line 38) | struct sip
  type sipsess (line 41) | struct sipsess
  type sipsess_sock (line 41) | struct sipsess_sock
  type sipsess (line 54) | struct sipsess
  type sipsess_sock (line 54) | struct sipsess_sock
  type sip_msg (line 55) | struct sip_msg
  type rel100_mode (line 56) | enum rel100_mode
  type mbuf (line 58) | struct mbuf
  type sipsess (line 65) | struct sipsess
  type sipsess (line 67) | struct sipsess
  type sipsess (line 69) | struct sipsess
  type rel100_mode (line 70) | enum rel100_mode
  type mbuf (line 71) | struct mbuf
  type sipsess (line 72) | struct sipsess
  type mbuf (line 73) | struct mbuf
  type sipsess (line 74) | struct sipsess
  type sipsess (line 76) | struct sipsess
  type mbuf (line 76) | struct mbuf
  type sipsess (line 77) | struct sipsess
  type mbuf (line 77) | struct mbuf
  type sipsess (line 79) | struct sipsess
  type sipsess (line 80) | struct sipsess
  type sipsess (line 81) | struct sipsess
  type sipsess_sock (line 82) | struct sipsess_sock
  type sip_dialog (line 83) | struct sip_dialog
  type sipsess (line 83) | struct sipsess
  type sipsess (line 84) | struct sipsess
  type sipsess (line 85) | struct sipsess
  type sip_msg (line 86) | struct sip_msg
  type sipsess (line 86) | struct sipsess
  type sdp_neg_state (line 87) | enum sdp_neg_state
  type sipsess (line 87) | struct sipsess

FILE: include/re_srtp.h
  type srtp_suite (line 8) | enum srtp_suite {
  type srtp_flags (line 17) | enum srtp_flags {
  type srtp (line 21) | struct srtp
  type srtp (line 23) | struct srtp
  type srtp_suite (line 23) | enum srtp_suite
  type srtp (line 25) | struct srtp
  type mbuf (line 25) | struct mbuf
  type srtp (line 26) | struct srtp
  type mbuf (line 26) | struct mbuf
  type srtp (line 27) | struct srtp
  type mbuf (line 27) | struct mbuf
  type srtp (line 28) | struct srtp
  type mbuf (line 28) | struct mbuf
  type srtp_suite (line 30) | enum srtp_suite

FILE: include/re_stun.h
  type stun_af (line 22) | enum stun_af {
  type stun_transp (line 28) | enum stun_transp {
  type stun_method (line 35) | enum stun_method {
  type stun_msg_class (line 46) | enum stun_msg_class {
  type stun_attrib (line 54) | enum stun_attrib {
  type stun_change_req (line 90) | struct stun_change_req {
  type stun_errcode (line 95) | struct stun_errcode {
  type stun_unknown_attr (line 100) | struct stun_unknown_attr {
  type stun_even_port (line 105) | struct stun_even_port {
  type stun_attr (line 110) | struct stun_attr {
  type stun_conf (line 156) | struct stun_conf {
  type stun (line 166) | struct stun
  type stun_msg (line 167) | struct stun_msg
  type stun_ctrans (line 168) | struct stun_ctrans
  type stun_msg (line 171) | struct stun_msg
  type stun_msg (line 172) | struct stun_msg
  type stun_attr (line 173) | struct stun_attr
  type stun (line 175) | struct stun
  type stun_conf (line 175) | struct stun_conf
  type stun_conf (line 177) | struct stun_conf
  type stun (line 177) | struct stun
  type sa (line 178) | struct sa
  type mbuf (line 178) | struct mbuf
  type stun (line 179) | struct stun
  type mbuf (line 179) | struct mbuf
  type stun (line 180) | struct stun
  type stun_msg (line 180) | struct stun_msg
  type stun_unknown_attr (line 181) | struct stun_unknown_attr
  type re_printf (line 182) | struct re_printf
  type re_printf (line 183) | struct re_printf
  type stun (line 183) | struct stun
  type stun_ctrans (line 185) | struct stun_ctrans
  type stun (line 185) | struct stun
  type sa (line 186) | struct sa
  type sa (line 189) | struct sa
  type stun_msg (line 190) | struct stun_msg
  type sa (line 192) | struct sa
  type stun_msg (line 193) | struct stun_msg
  type sa (line 196) | struct sa
  type mbuf (line 200) | struct mbuf
  type stun_errcode (line 201) | struct stun_errcode
  type mbuf (line 204) | struct mbuf
  type stun_errcode (line 205) | struct stun_errcode
  type stun_msg (line 208) | struct stun_msg
  type mbuf (line 208) | struct mbuf
  type stun_unknown_attr (line 209) | struct stun_unknown_attr
  type stun_msg (line 210) | struct stun_msg
  type stun_msg (line 211) | struct stun_msg
  type stun_msg (line 212) | struct stun_msg
  type stun_msg (line 213) | struct stun_msg
  type stun_msg (line 214) | struct stun_msg
  type stun_attr (line 215) | struct stun_attr
  type stun_msg (line 215) | struct stun_msg
  type stun_attr (line 216) | struct stun_attr
  type stun_msg (line 216) | struct stun_msg
  type stun_msg (line 218) | struct stun_msg
  type stun_msg (line 220) | struct stun_msg
  type stun_msg (line 221) | struct stun_msg
  type stun_transp (line 226) | enum stun_transp
  type sa (line 247) | struct sa
  type stun_dns (line 249) | struct stun_dns
  type dnsc (line 250) | struct dnsc
  type stun_dns (line 251) | struct stun_dns
  type dnsc (line 251) | struct dnsc
  type stun_keepalive (line 258) | struct stun_keepalive
  type sa (line 267) | struct sa
  type stun_keepalive (line 270) | struct stun_keepalive
  type sa (line 272) | struct sa
  type stun_conf (line 272) | struct stun_conf
  type stun_keepalive (line 274) | struct stun_keepalive

FILE: include/re_sys.h
  type re_printf (line 34) | struct re_printf
  type mbuf (line 35) | struct mbuf
  type re_printf (line 37) | struct re_printf
  type re_printf (line 38) | struct re_printf
  function sys_msleep (line 48) | static inline void sys_msleep(unsigned int ms)
  type mbuf (line 77) | struct mbuf

FILE: include/re_tcp.h
  type sa (line 6) | struct sa
  type tcp_sock (line 7) | struct tcp_sock
  type tcp_conn (line 8) | struct tcp_conn
  type sa (line 17) | struct sa
  type mbuf (line 39) | struct mbuf
  type tcp_sock (line 51) | struct tcp_sock
  type sa (line 51) | struct sa
  type tcp_sock (line 53) | struct tcp_sock
  type tcp_sock (line 53) | struct tcp_sock
  type tcp_sock (line 54) | struct tcp_sock
  type sa (line 54) | struct sa
  type tcp_sock (line 55) | struct tcp_sock
  type tcp_conn (line 56) | struct tcp_conn
  type tcp_sock (line 56) | struct tcp_sock
  type tcp_sock (line 58) | struct tcp_sock
  type tcp_sock (line 59) | struct tcp_sock
  type sa (line 59) | struct sa
  type tcp_sock (line 60) | struct tcp_sock
  type tcp_conn (line 61) | struct tcp_conn
  type tcp_sock (line 65) | struct tcp_sock
  type tcp_conn (line 67) | struct tcp_conn
  type sa (line 67) | struct sa
  type tcp_conn (line 70) | struct tcp_conn
  type sa (line 70) | struct sa
  type tcp_conn (line 71) | struct tcp_conn
  type sa (line 71) | struct sa
  type tcp_conn (line 72) | struct tcp_conn
  type mbuf (line 72) | struct mbuf
  type tcp_conn (line 73) | struct tcp_conn
  type tcp_conn (line 74) | struct tcp_conn
  type tcp_conn (line 76) | struct tcp_conn
  type tcp_conn (line 77) | struct tcp_conn
  type tcp_conn (line 78) | struct tcp_conn
  type sa (line 78) | struct sa
  type tcp_conn (line 79) | struct tcp_conn
  type sa (line 79) | struct sa
  type tcp_conn (line 80) | struct tcp_conn
  type tcp_sock (line 84) | struct tcp_sock
  type sa (line 84) | struct sa
  type tcp_conn (line 86) | struct tcp_conn
  type sa (line 86) | struct sa
  type tcp_conn (line 88) | struct tcp_conn
  type sa (line 88) | struct sa
  type sa (line 90) | struct sa
  type tcp_sock (line 91) | struct tcp_sock
  type sa (line 91) | struct sa
  type mbuf (line 96) | struct mbuf
  type mbuf (line 97) | struct mbuf
  type tcp_helper (line 100) | struct tcp_helper
  type tcp_helper (line 103) | struct tcp_helper
  type tcp_conn (line 103) | struct tcp_conn
  type tcp_conn (line 107) | struct tcp_conn
  type mbuf (line 107) | struct mbuf
  type tcp_helper (line 108) | struct tcp_helper
  type tcp_conn (line 109) | struct tcp_conn

FILE: include/re_telev.h
  type telev (line 12) | struct telev
  type telev (line 16) | struct telev
  type telev (line 17) | struct telev
  type telev (line 18) | struct telev
  type telev (line 19) | struct telev
  type mbuf (line 19) | struct mbuf
  type telev (line 20) | struct telev
  type mbuf (line 20) | struct mbuf
  type telev (line 21) | struct telev

FILE: include/re_thread.h
  type thrd_win32 (line 30) | struct thrd_win32 {
  type INIT_ONCE (line 35) | typedef INIT_ONCE once_flag;
  type thrd_t (line 36) | typedef struct thrd_win32 thrd_t;
  type CONDITION_VARIABLE (line 37) | typedef CONDITION_VARIABLE cnd_t;
  type CRITICAL_SECTION (line 38) | typedef CRITICAL_SECTION mtx_t;
  type DWORD (line 39) | typedef DWORD tss_t;
  type pthread_once_t (line 47) | typedef pthread_once_t once_flag;
  type pthread_t (line 49) | typedef pthread_t thrd_t;
  type pthread_cond_t (line 50) | typedef pthread_cond_t cnd_t;
  type pthread_mutex_t (line 51) | typedef pthread_mutex_t mtx_t;
  type pthread_key_t (line 52) | typedef pthread_key_t tss_t;
  type timespec (line 200) | struct timespec

FILE: include/re_tls.h
  type tls (line 7) | struct tls
  type tls_conn (line 8) | struct tls_conn
  type tcp_conn (line 9) | struct tcp_conn
  type udp_sock (line 10) | struct udp_sock
  type tls_method (line 14) | enum tls_method {
  type tls_fingerprint (line 22) | enum tls_fingerprint {
  type tls_keytype (line 26) | enum tls_keytype {
  type tls_resume_mode (line 31) | enum tls_resume_mode {
  type tls_conn_d (line 38) | struct tls_conn_d {
  type tls (line 43) | struct tls
  type tls_method (line 43) | enum tls_method
  type tls (line 45) | struct tls
  type tls (line 46) | struct tls
  type tls (line 48) | struct tls
  type tls (line 49) | struct tls
  type tls (line 50) | struct tls
  type tls (line 52) | struct tls
  type tls (line 54) | struct tls
  type tls (line 55) | struct tls
  type tls (line 57) | struct tls
  type tls (line 58) | struct tls
  type tls_conn (line 59) | struct tls_conn
  type tls (line 62) | struct tls
  type tls (line 63) | struct tls
  type tls_fingerprint (line 63) | enum tls_fingerprint
  type tls_conn (line 66) | struct tls_conn
  type tls_fingerprint (line 66) | enum tls_fingerprint
  type tls_conn (line 68) | struct tls_conn
  type tls (line 69) | struct tls
  type tls_conn (line 70) | struct tls_conn
  type tls_conn (line 71) | struct tls_conn
  type srtp_suite (line 71) | enum srtp_suite
  type tls_conn (line 74) | struct tls_conn
  type tls (line 75) | struct tls
  type tls_conn (line 76) | struct tls_conn
  type tls_conn (line 77) | struct tls_conn
  type tls (line 79) | struct tls
  type mbuf (line 79) | struct mbuf
  type tls (line 80) | struct tls
  type mbuf (line 80) | struct mbuf
  type tls (line 81) | struct tls
  type tls (line 82) | struct tls
  type tls (line 83) | struct tls
  type tls_resume_mode (line 83) | enum tls_resume_mode
  type tls (line 85) | struct tls
  type tls (line 86) | struct tls
  type tls (line 88) | struct tls
  type tls_conn (line 89) | struct tls_conn
  type tls_conn (line 90) | struct tls_conn
  type tls_conn (line 91) | struct tls_conn
  type tls_conn (line 92) | struct tls_conn
  type tls (line 93) | struct tls
  type tls_conn (line 97) | struct tls_conn
  type tls_conn (line 98) | struct tls_conn
  type tls (line 98) | struct tls
  type tcp_conn (line 99) | struct tcp_conn
  type tls_conn (line 101) | struct tls_conn
  type tcp_conn (line 103) | struct tcp_conn
  type tls_conn (line 103) | struct tls_conn
  type sa (line 108) | struct sa
  type mbuf (line 110) | struct mbuf
  type dtls_sock (line 113) | struct dtls_sock
  type dtls_sock (line 115) | struct dtls_sock
  type sa (line 115) | struct sa
  type udp_sock (line 116) | struct udp_sock
  type udp_sock (line 118) | struct udp_sock
  type dtls_sock (line 118) | struct dtls_sock
  type dtls_sock (line 119) | struct dtls_sock
  type tls_conn (line 120) | struct tls_conn
  type tls (line 120) | struct tls
  type dtls_sock (line 121) | struct dtls_sock
  type sa (line 121) | struct sa
  type tls_conn (line 124) | struct tls_conn
  type tls (line 124) | struct tls
  type dtls_sock (line 125) | struct dtls_sock
  type tls_conn (line 128) | struct tls_conn
  type mbuf (line 128) | struct mbuf
  type tls_conn (line 129) | struct tls_conn
  type sa (line 131) | struct sa
  type tls_conn (line 131) | struct tls_conn
  type tls_conn (line 132) | struct tls_conn
  type sa (line 132) | struct sa
  type dtls_sock (line 133) | struct dtls_sock
  type sa (line 133) | struct sa
  type mbuf (line 134) | struct mbuf
  type dtls_sock (line 135) | struct dtls_sock
  type x509_st (line 138) | struct x509_st
  type evp_pkey_st (line 139) | struct evp_pkey_st
  type tls (line 141) | struct tls
  type x509_st (line 141) | struct x509_st
  type evp_pkey_st (line 142) | struct evp_pkey_st
  type tls (line 143) | struct tls

FILE: include/re_tmr.h
  type tmrl (line 18) | struct tmrl
  type tmr (line 21) | struct tmr {
  type tmrl (line 33) | struct tmrl
  type tmrl (line 34) | struct tmrl
  type timespec (line 38) | struct timespec
  type tmrl (line 39) | struct tmrl
  type re_printf (line 41) | struct re_printf
  type tmr (line 43) | struct tmr
  type tmr (line 44) | struct tmr
  type tmr (line 46) | struct tmr
  type tmrl (line 49) | struct tmrl
  type tmr (line 78) | struct tmr
  type tmr (line 79) | struct tmr
  function tmr_isrunning (line 89) | static inline bool tmr_isrunning(const struct tmr *tmr)

FILE: include/re_trace.h
  type pl (line 6) | struct pl
  type mbuf (line 7) | struct mbuf
  type re_trace_arg_type (line 9) | typedef enum {
  type re_trace_event_s (line 16) | struct re_trace_event_s {
  type re_trace_event_s (line 32) | struct re_trace_event_s
  type mbuf (line 33) | struct mbuf
  type pl (line 39) | struct pl

FILE: include/re_trice.h
  type trice_conf (line 9) | struct trice_conf {
  type trice (line 19) | struct trice
  type ice_lcand (line 20) | struct ice_lcand
  type ice_candpair (line 21) | struct ice_candpair
  type stun_conf (line 22) | struct stun_conf
  type ice_lcand (line 37) | struct ice_lcand
  type sa (line 38) | struct sa
  type mbuf (line 39) | struct mbuf
  type ice_lcand (line 43) | struct ice_lcand {
  type ice_rcand (line 64) | struct ice_rcand {
  type ice_candpair (line 71) | struct ice_candpair {
  type ice_candpair (line 95) | struct ice_candpair
  type stun_msg (line 96) | struct stun_msg
  type ice_candpair (line 108) | struct ice_candpair
  type trice (line 111) | struct trice
  type trice_conf (line 111) | struct trice_conf
  type ice_role (line 112) | enum ice_role
  type trice (line 113) | struct trice
  type trice (line 114) | struct trice
  type trice (line 115) | struct trice
  type ice_role (line 115) | enum ice_role
  type ice_role (line 116) | enum ice_role
  type trice (line 116) | struct trice
  type re_printf (line 117) | struct re_printf
  type trice (line 117) | struct trice
  type trice_conf (line 118) | struct trice_conf
  type trice (line 118) | struct trice
  type re_printf (line 122) | struct re_printf
  type ice_cand_attr (line 122) | struct ice_cand_attr
  type ice_tcptype (line 123) | enum ice_tcptype
  type ice_tcptype (line 123) | enum ice_tcptype
  type ice_tcptype (line 124) | enum ice_tcptype
  type ice_cand_type (line 125) | enum ice_cand_type
  type ice_cand_type (line 125) | enum ice_cand_type
  type ice_lcand (line 129) | struct ice_lcand
  type trice (line 129) | struct trice
  type sa (line 131) | struct sa
  type sa (line 131) | struct sa
  type ice_cand_type (line 132) | enum ice_cand_type
  type sa (line 132) | struct sa
  type ice_tcptype (line 133) | enum ice_tcptype
  type list (line 135) | struct list
  type trice (line 135) | struct trice
  type ice_lcand (line 136) | struct ice_lcand
  type trice (line 136) | struct trice
  type ice_cand_type (line 137) | enum ice_cand_type
  type sa (line 139) | struct sa
  type ice_lcand (line 140) | struct ice_lcand
  type trice (line 140) | struct trice
  type ice_cand_type (line 141) | enum ice_cand_type
  type trice (line 142) | struct trice
  type ice_lcand (line 142) | struct ice_lcand
  type ice_lcand (line 143) | struct ice_lcand
  type sa (line 144) | struct sa
  type mbuf (line 144) | struct mbuf
  type list (line 148) | struct list
  type trice (line 148) | struct trice
  type ice_rcand (line 149) | struct ice_rcand
  type trice (line 149) | struct trice
  type sa (line 151) | struct sa
  type ice_cand_type (line 152) | enum ice_cand_type
  type ice_tcptype (line 152) | enum ice_tcptype
  type ice_rcand (line 153) | struct ice_rcand
  type trice (line 153) | struct trice
  type sa (line 154) | struct sa
  type list (line 158) | struct list
  type trice (line 158) | struct trice
  type list (line 159) | struct list
  type trice (line 159) | struct trice
  type ice_candpair (line 160) | struct ice_candpair
  type list (line 160) | struct list
  type ice_candpair_state (line 161) | enum ice_candpair_state
  type re_printf (line 162) | struct re_printf
  type ice_candpair (line 162) | struct ice_candpair
  type re_printf (line 163) | struct re_printf
  type list (line 164) | struct list
  type trice (line 168) | struct trice
  type trice (line 169) | struct trice
  type stun (line 169) | struct stun
  type trice (line 173) | struct trice
  type trice (line 174) | struct trice
  type trice (line 175) | struct trice
  type trice (line 179) | struct trice
  type ice_candpair (line 179) | struct ice_candpair
  type trice (line 183) | struct trice

FILE: include/re_turn.h
  type sa (line 15) | struct sa
  type sa (line 16) | struct sa
  type stun_msg (line 17) | struct stun_msg
  type turnc (line 22) | struct turnc
  type turnc (line 24) | struct turnc
  type stun_conf (line 24) | struct stun_conf
  type sa (line 25) | struct sa
  type turnc (line 28) | struct turnc
  type sa (line 28) | struct sa
  type mbuf (line 28) | struct mbuf
  type turnc (line 29) | struct turnc
  type sa (line 29) | struct sa
  type mbuf (line 29) | struct mbuf
  type turnc (line 30) | struct turnc
  type sa (line 30) | struct sa
  type turnc (line 32) | struct turnc
  type sa (line 32) | struct sa

FILE: include/re_types.h
  type SSIZE_T (line 19) | typedef SSIZE_T ssize_t;
  type re_sock_t (line 272) | typedef size_t re_sock_t;
  type re_sock_t (line 276) | typedef int re_sock_t;

FILE: include/re_udp.h
  type sa (line 8) | struct sa
  type udp_sock (line 9) | struct udp_sock
  type sa (line 11) | struct sa
  type mbuf (line 12) | struct mbuf
  type sa (line 21) | struct sa
  type mbuf (line 21) | struct mbuf
  type udp_sock (line 25) | struct udp_sock
  type sa (line 25) | struct sa
  type udp_sock (line 27) | struct udp_sock
  type udp_sock (line 29) | struct udp_sock
  type udp_sock (line 31) | struct udp_sock
  type sa (line 31) | struct sa
  type udp_sock (line 32) | struct udp_sock
  type udp_sock (line 33) | struct udp_sock
  type sa (line 33) | struct sa
  type mbuf (line 33) | struct mbuf
  type udp_sock (line 34) | struct udp_sock
  type sa (line 34) | struct sa
  type udp_sock (line 35) | struct udp_sock
  type udp_sock (line 37) | struct udp_sock
  type udp_sock (line 38) | struct udp_sock
  type udp_sock (line 39) | struct udp_sock
  type udp_sock (line 40) | struct udp_sock
  type udp_sock (line 41) | struct udp_sock
  type udp_sock (line 42) | struct udp_sock
  type udp_sock (line 43) | struct udp_sock
  type udp_sock (line 44) | struct udp_sock
  type udp_sock (line 46) | struct udp_sock
  type sa (line 46) | struct sa
  type udp_sock (line 47) | struct udp_sock
  type sa (line 47) | struct sa
  type udp_sock (line 48) | struct udp_sock
  type udp_sock (line 49) | struct udp_sock
  type udp_sock (line 50) | struct udp_sock
  type sa (line 50) | struct sa
  type mbuf (line 51) | struct mbuf
  type sa (line 55) | struct sa
  type mbuf (line 56) | struct mbuf
  type sa (line 57) | struct sa
  type mbuf (line 58) | struct mbuf
  type udp_helper (line 60) | struct udp_helper
  type udp_helper (line 63) | struct udp_helper
  type udp_sock (line 63) | struct udp_sock
  type udp_sock (line 67) | struct udp_sock
  type sa (line 67) | struct sa
  type mbuf (line 68) | struct mbuf
  type udp_helper (line 68) | struct udp_helper
  type udp_sock (line 69) | struct udp_sock
  type sa (line 69) | struct sa
  type mbuf (line 70) | struct mbuf
  type udp_helper (line 70) | struct udp_helper
  type udp_helper (line 71) | struct udp_helper
  type udp_sock (line 71) | struct udp_sock

FILE: include/re_unixsock.h
  type sa (line 2) | struct sa

FILE: include/re_uri.h
  type uri (line 9) | struct uri {
  type pl (line 20) | struct pl
  type pl (line 20) | struct pl
  type re_printf (line 23) | struct re_printf
  type re_printf (line 24) | struct re_printf
  type uri (line 24) | struct uri
  type uri (line 25) | struct uri
  type pl (line 25) | struct pl
  type pl (line 26) | struct pl
  type pl (line 26) | struct pl
  type pl (line 27) | struct pl
  type pl (line 28) | struct pl
  type pl (line 28) | struct pl
  type pl (line 29) | struct pl
  type pl (line 30) | struct pl
  type pl (line 31) | struct pl
  type pl (line 31) | struct pl
  type pl (line 32) | struct pl
  type pl (line 33) | struct pl
  type re_printf (line 37) | struct re_printf
  type pl (line 37) | struct pl
  type re_printf (line 38) | struct re_printf
  type pl (line 38) | struct pl
  type re_printf (line 39) | struct re_printf
  type pl (line 39) | struct pl
  type re_printf (line 40) | struct re_printf
  type pl (line 40) | struct pl
  type re_printf (line 41) | struct re_printf
  type pl (line 41) | struct pl
  type re_printf (line 42) | struct re_printf
  type pl (line 42) | struct pl

FILE: include/re_websock.h
  type websock_opcode (line 12) | enum websock_opcode {
  type websock_scode (line 23) | enum websock_scode {
  type websock_hdr (line 35) | struct websock_hdr {
  type websock (line 46) | struct websock
  type websock_conn (line 47) | struct websock_conn
  type websock_hdr (line 50) | struct websock_hdr
  type mbuf (line 50) | struct mbuf
  type websock_conn (line 55) | struct websock_conn
  type websock (line 55) | struct websock
  type http_cli (line 56) | struct http_cli
  type websock_conn (line 60) | struct websock_conn
  type websock (line 61) | struct websock
  type http_cli (line 61) | struct http_cli
  type websock_conn (line 66) | struct websock_conn
  type websock (line 66) | struct websock
  type http_conn (line 67) | struct http_conn
  type http_msg (line 67) | struct http_msg
  type websock_conn (line 70) | struct websock_conn
  type websock (line 71) | struct websock
  type http_conn (line 71) | struct http_conn
  type http_msg (line 72) | struct http_msg
  type websock_conn (line 75) | struct websock_conn
  type websock_opcode (line 75) | enum websock_opcode
  type websock_conn (line 77) | struct websock_conn
  type websock_scode (line 77) | enum websock_scode
  type tcp_conn (line 79) | struct tcp_conn
  type websock_conn (line 79) | struct websock_conn
  type websock (line 83) | struct websock
  type websock (line 85) | struct websock

FILE: include/rem_aac.h
  type aac_header (line 9) | struct aac_header {
  type aac_header (line 15) | struct aac_header

FILE: include/rem_au.h
  type aufmt (line 9) | enum aufmt {
  type aufmt (line 19) | enum aufmt
  type aufmt (line 20) | enum aufmt

FILE: include/rem_aubuf.h
  type aubuf (line 6) | struct aubuf
  type aubuf_mode (line 8) | enum aubuf_mode {
  type aubuf (line 13) | struct aubuf
  type aubuf (line 14) | struct aubuf
  type pl (line 14) | struct pl
  type aubuf (line 15) | struct aubuf
  type aubuf (line 16) | struct aubuf
  type aubuf_mode (line 16) | enum aubuf_mode
  type aubuf (line 17) | struct aubuf
  type aubuf (line 18) | struct aubuf
  type aubuf (line 19) | struct aubuf
  type auframe (line 19) | struct auframe
  type aubuf (line 20) | struct aubuf
  type mbuf (line 20) | struct mbuf
  type auframe (line 21) | struct auframe
  type aubuf (line 22) | struct aubuf
  type auframe (line 22) | struct auframe
  type aubuf (line 23) | struct aubuf
  type aubuf (line 24) | struct aubuf
  type aubuf (line 25) | struct aubuf
  type re_printf (line 26) | struct re_printf
  type aubuf (line 26) | struct aubuf
  type aubuf (line 27) | struct aubuf
  type aubuf (line 28) | struct aubuf
  type aubuf (line 29) | struct aubuf
  type aubuf (line 30) | struct aubuf
  type auframe (line 30) | struct auframe
  function aubuf_append (line 33) | static inline int aubuf_append(struct aubuf *ab, struct mbuf *mb)
  function aubuf_get_samp (line 39) | static inline int aubuf_get_samp(struct aubuf *ab, uint32_t ptime,
  function aubuf_write (line 47) | static inline int aubuf_write(struct aubuf *ab, const uint8_t *p, size_t...
  function aubuf_write_samp (line 62) | static inline int aubuf_write_samp(struct aubuf *ab, const int16_t *sampv,
  function aubuf_read (line 78) | static inline void aubuf_read(struct aubuf *ab, uint8_t *p, size_t sz)
  function aubuf_read_samp (line 93) | static inline void aubuf_read_samp(struct aubuf *ab, int16_t *sampv,

FILE: include/rem_auconv.h
  type aufmt (line 8) | enum aufmt
  type aufmt (line 10) | enum aufmt
  type aufmt (line 12) | enum aufmt

FILE: include/rem_aufile.h
  type aufile_mode (line 9) | enum aufile_mode {
  type aufile_prm (line 15) | struct aufile_prm {
  type aufile (line 21) | struct aufile
  type aufile (line 23) | struct aufile
  type aufile_prm (line 23) | struct aufile_prm
  type aufile_mode (line 24) | enum aufile_mode
  type aufile (line 25) | struct aufile
  type aufile (line 26) | struct aufile
  type aufile (line 27) | struct aufile
  type aufile (line 28) | struct aufile
  type aufile_prm (line 28) | struct aufile_prm
  type aufile (line 29) | struct aufile
  type aufile_prm (line 29) | struct aufile_prm

FILE: include/rem_auframe.h
  type auframe (line 10) | struct auframe {
  type auframe (line 22) | struct auframe
  type aufmt (line 22) | enum aufmt
  function auframe_update (line 33) | static inline void auframe_update(struct auframe *af, void *sampv,
  type auframe (line 45) | struct auframe
  type auframe (line 46) | struct auframe
  type auframe (line 47) | struct auframe
  type auframe (line 48) | struct auframe
  type auframe (line 49) | struct auframe
  type auframe (line 50) | struct auframe

FILE: include/rem_aumix.h
  type aumix (line 7) | struct aumix
  type aumix_source (line 8) | struct aumix_source
  type auframe (line 18) | struct auframe
  type auframe (line 19) | struct auframe
  type aumix (line 21) | struct aumix
  type aumix (line 23) | struct aumix
  type aumix (line 24) | struct aumix
  type aumix (line 25) | struct aumix
  type aumix (line 26) | struct aumix
  type aumix (line 27) | struct aumix
  type aumix_source (line 28) | struct aumix_source
  type aumix (line 28) | struct aumix
  type aumix_source (line 30) | struct aumix_source
  type pl (line 30) | struct pl
  type aumix_source (line 31) | struct aumix_source
  type aumix_source (line 32) | struct aumix_source
  type aumix_source (line 33) | struct aumix_source
  type aumix_source (line 35) | struct aumix_source
  type auframe (line 35) | struct auframe
  type aumix_source (line 36) | struct aumix_source
  type aumix_source (line 37) | struct aumix_source
  type re_printf (line 38) | struct re_printf
  type aumix (line 38) | struct aumix

FILE: include/rem_auresamp.h
  type auresamp (line 19) | struct auresamp {
  type auresamp (line 30) | struct auresamp
  type auresamp (line 31) | struct auresamp
  type auresamp (line 33) | struct auresamp

FILE: include/rem_autone.h
  type mbuf (line 8) | struct mbuf
  type mbuf (line 10) | struct mbuf

FILE: include/rem_avc.h
  type avc_config (line 8) | struct avc_config {
  type mbuf (line 19) | struct mbuf
  type avc_config (line 23) | struct avc_config
  type mbuf (line 23) | struct mbuf

FILE: include/rem_dsp.h
  function saturate_u8 (line 13) | static inline uint8_t saturate_u8(int32_t a)
  function saturate_s16 (line 20) | static inline int16_t saturate_s16(int32_t a)
  function saturate_add16 (line 30) | static inline int16_t saturate_add16(int32_t a, int32_t b)
  function saturate_sub16 (line 40) | static inline int16_t saturate_sub16(int32_t a, int32_t b)
  function saturate_u8 (line 54) | static inline uint8_t saturate_u8(int32_t a)
  function saturate_s16 (line 59) | static inline int16_t saturate_s16(int32_t a)
  function saturate_add16 (line 69) | static inline int16_t saturate_add16(int32_t a, int32_t b)
  function saturate_sub16 (line 75) | static inline int16_t saturate_sub16(int32_t a, int32_t b)
  function ABS32 (line 85) | static inline int ABS32(int a)
  function ABS32 (line 97) | static inline int ABS32(int a)

FILE: include/rem_dtmf.h
  type dtmf_dec (line 7) | struct dtmf_dec
  type dtmf_dec (line 18) | struct dtmf_dec
  type dtmf_dec (line 20) | struct dtmf_dec
  type dtmf_dec (line 21) | struct dtmf_dec

FILE: include/rem_fir.h
  type fir (line 8) | struct fir {
  type fir (line 13) | struct fir
  type fir (line 14) | struct fir

FILE: include/rem_flv.h
  type flv_aucodec (line 12) | enum flv_aucodec {
  type flv_srate (line 21) | enum flv_srate {
  type flv_aac_packet_type (line 28) | enum flv_aac_packet_type {
  type flv_vidframe (line 38) | enum flv_vidframe {
  type flv_vidcodec (line 46) | enum flv_vidcodec {
  type flv_avc_packet_type (line 52) | enum flv_avc_packet_type {

FILE: include/rem_g711.h
  function g711_pcm2ulaw (line 21) | static inline uint8_t g711_pcm2ulaw(int16_t lx)
  function g711_pcm2alaw (line 43) | static inline uint8_t g711_pcm2alaw(int16_t l)
  function g711_ulaw2pcm (line 61) | static inline int16_t g711_ulaw2pcm(uint8_t u)
  function g711_alaw2pcm (line 74) | static inline int16_t g711_alaw2pcm(uint8_t a)

FILE: include/rem_goertzel.h
  type goertzel (line 8) | struct goertzel {
  type goertzel (line 15) | struct goertzel
  type goertzel (line 16) | struct goertzel
  type goertzel (line 17) | struct goertzel
  function goertzel_update (line 26) | static inline void goertzel_update(struct goertzel *g, int16_t samp)

FILE: include/rem_vid.h
  type vidfmt (line 9) | enum vidfmt {
  type vidfmt_compdesc (line 25) | struct vidfmt_compdesc {
  type vidfmt_desc (line 31) | struct vidfmt_desc {
  type vidorient (line 39) | enum vidorient {
  type vidsz (line 47) | struct vidsz {
  type vidframe (line 53) | struct vidframe {
  type vidpt (line 63) | struct vidpt {
  type vidrect (line 69) | struct vidrect {
  function vidsz_cmp (line 76) | static inline bool vidsz_cmp(const struct vidsz *a, const struct vidsz *b)
  function vidrect_cmp (line 88) | static inline bool vidrect_cmp(const struct vidrect *a,
  function rgb2y (line 101) | static inline int rgb2y(uint8_t r, uint8_t g, uint8_t b)
  function rgb2u (line 107) | static inline int rgb2u(uint8_t r, uint8_t g, uint8_t b)
  function rgb2v (line 113) | static inline int rgb2v(uint8_t r, uint8_t g, uint8_t b)
  type vidfmt (line 119) | enum vidfmt
  type vidsz (line 119) | struct vidsz
  type vidframe (line 120) | struct vidframe
  type vidfmt (line 120) | enum vidfmt
  type vidsz (line 121) | struct vidsz
  type vidframe (line 123) | struct vidframe
  type vidfmt (line 123) | enum vidfmt
  type vidsz (line 124) | struct vidsz
  type vidframe (line 125) | struct vidframe
  type vidfmt (line 125) | enum vidfmt
  type vidsz (line 126) | struct vidsz
  type vidframe (line 127) | struct vidframe
  type vidframe (line 128) | struct vidframe
  type vidframe (line 128) | struct vidframe
  type vidfmt (line 131) | enum vidfmt
  function vidframe_isvalid (line 134) | static inline bool vidframe_isvalid(const struct vidframe *f)
  type vidfmt_desc (line 140) | struct vidfmt_desc
  type vidframe (line 144) | struct vidframe
  type vidframe (line 146) | struct vidframe
  type vidframe (line 149) | struct vidframe
  type vidframe (line 152) | struct vidframe

FILE: include/rem_vidconv.h
  type vidframe (line 8) | struct vidframe
  type vidframe (line 8) | struct vidframe
  type vidrect (line 9) | struct vidrect
  type vidframe (line 10) | struct vidframe
  type vidframe (line 10) | struct vidframe
  type vidrect (line 11) | struct vidrect
  type vidframe (line 12) | struct vidframe
  type vidframe (line 12) | struct vidframe
  type vidrect (line 13) | struct vidrect

FILE: include/rem_vidmix.h
  type vidmix (line 8) | struct vidmix
  type vidmix_source (line 9) | struct vidmix_source
  type vidframe (line 18) | struct vidframe
  type vidmix (line 21) | struct vidmix
  type vidmix (line 22) | struct vidmix
  type vidfmt (line 22) | enum vidfmt
  type vidmix_source (line 23) | struct vidmix_source
  type vidmix (line 23) | struct vidmix
  type vidsz (line 24) | struct vidsz
  type vidmix_source (line 26) | struct vidmix_source
  type vidmix_source (line 27) | struct vidmix_source
  type vidmix_source (line 28) | struct vidmix_source
  type vidmix_source (line 29) | struct vidmix_source
  type vidmix_source (line 30) | struct vidmix_source
  type vidmix_source (line 31) | struct vidmix_source
  type vidmix_source (line 32) | struct vidmix_source
  type vidmix_source (line 33) | struct vidmix_source
  type vidsz (line 33) | struct vidsz
  type vidmix_source (line 34) | struct vidmix_source
  type vidmix_source (line 35) | struct vidmix_source
  type vidmix_source (line 36) | struct vidmix_source
  type vidmix_source (line 37) | struct vidmix_source
  type vidmix_source (line 38) | struct vidmix_source
  type vidmix_source (line 40) | struct vidmix_source
  type vidmix_source (line 41) | struct vidmix_source
  type vidframe (line 42) | struct vidframe

FILE: rem/aac/aac.c
  function aac_header_decode (line 40) | int aac_header_decode(struct aac_header *hdr, const uint8_t *p, size_t len)

FILE: rem/au/fmt.c
  function aufmt_sample_size (line 11) | size_t aufmt_sample_size(enum aufmt fmt)
  type aufmt (line 27) | enum aufmt

FILE: rem/au/util.c
  function au_calc_nsamp (line 20) | uint32_t au_calc_nsamp(uint32_t srate, uint8_t channels, uint16_t ptime)

FILE: rem/aubuf/ajb.c
  type ajb (line 153) | struct ajb {
  function destructor (line 183) | static void destructor(void *arg)
  function plot_ajb (line 192) | static void plot_ajb(struct ajb *ajb, uint64_t tr)
  type ajb (line 226) | struct ajb
  type ajb (line 228) | struct ajb
  function ajb_reset (line 253) | void ajb_reset(struct ajb *ajb)
  function ajb_calc (line 277) | void ajb_calc(struct ajb *ajb, const struct auframe *af, size_t cur_sz)
  function ajb_set_ts0 (line 365) | void ajb_set_ts0(struct ajb *ajb, uint64_t timestamp)
  function ajb_get (line 386) | enum ajb_state ajb_get(struct ajb *ajb, struct auframe *af)
  function ajb_debug (line 433) | int32_t ajb_debug(const struct ajb *ajb)

FILE: rem/aubuf/ajb.h
  type ajb_state (line 7) | enum ajb_state {
  type ajb (line 13) | struct ajb
  type ajb (line 15) | struct ajb
  type ajb (line 16) | struct ajb
  type ajb (line 17) | struct ajb
  type auframe (line 17) | struct auframe
  type ajb_state (line 18) | enum ajb_state
  type ajb (line 18) | struct ajb
  type auframe (line 18) | struct auframe
  type ajb (line 19) | struct ajb
  type ajb (line 20) | struct ajb

FILE: rem/aubuf/aubuf.c
  type aubuf (line 24) | struct aubuf {
  type frame (line 50) | struct frame {
  function frame_destructor (line 58) | static void frame_destructor(void *data)
  function aubuf_destructor (line 66) | static void aubuf_destructor(void *arg)
  function read_auframe (line 77) | static void read_auframe(struct aubuf *ab, struct auframe *af)
  function aubuf_alloc (line 132) | int aubuf_alloc(struct aubuf **abp, size_t min_sz, size_t max_sz)
  function aubuf_set_id (line 174) | void aubuf_set_id(struct aubuf *ab, struct pl *id)
  function aubuf_set_live (line 193) | void aubuf_set_live(struct aubuf *ab, bool live)
  function aubuf_set_mode (line 202) | void aubuf_set_mode(struct aubuf *ab, enum aubuf_mode mode)
  function aubuf_set_silence (line 217) | void aubuf_set_silence(struct aubuf *ab, double silence)
  function aubuf_resize (line 235) | int aubuf_resize(struct aubuf *ab, size_t min_sz, size_t max_sz)
  function frame_less_equal (line 251) | static bool frame_less_equal(struct le *le1, struct le *le2, void *arg)
  function aubuf_append_auframe (line 270) | int aubuf_append_auframe(struct aubuf *ab, struct mbuf *mb,
  function aubuf_write_auframe (line 329) | int aubuf_write_auframe(struct aubuf *ab, const struct auframe *af)
  function aubuf_read_auframe (line 374) | void aubuf_read_auframe(struct aubuf *ab, struct auframe *af)
  function aubuf_get (line 469) | int aubuf_get(struct aubuf *ab, uint32_t ptime, uint8_t *p, size_t sz)
  function aubuf_flush (line 505) | void aubuf_flush(struct aubuf *ab)
  function aubuf_debug (line 532) | int aubuf_debug(struct re_printf *pf, const struct aubuf *ab)
  function aubuf_cur_size (line 558) | size_t aubuf_cur_size(const struct aubuf *ab)
  function aubuf_maxsz (line 580) | size_t aubuf_maxsz(const struct aubuf *ab)
  function aubuf_started (line 603) | bool aubuf_started(const struct aubuf *ab)
  function aubuf_sort_auframe (line 623) | void aubuf_sort_auframe(struct aubuf *ab)
  function aubuf_drop_auframe (line 640) | void aubuf_drop_auframe(struct aubuf *ab, const struct auframe *af)

FILE: rem/auconv/auconv.c
  function ausamp_short2float (line 12) | static inline float ausamp_short2float(int16_t in)
  function ausamp_float2short (line 22) | static inline int16_t ausamp_float2short(float in)
  function auconv_from_s16 (line 42) | void auconv_from_s16(enum aufmt dst_fmt, void *dst_sampv,
  function auconv_to_s16 (line 80) | void auconv_to_s16(int16_t *dst_sampv, enum aufmt src_fmt,
  function auconv_to_float (line 117) | void auconv_to_float(float *dst_sampv, enum aufmt src_fmt,

FILE: rem/aufile/aufile.c
  type aufile (line 14) | struct aufile {
  function wavfmt_to_aufmt (line 24) | static int wavfmt_to_aufmt(enum wavfmt fmt, uint16_t bps)
  function aufmt_to_wavfmt (line 52) | static enum wavfmt aufmt_to_wavfmt(enum aufmt fmt)
  function aufmt_to_bps (line 64) | static uint16_t aufmt_to_bps(enum aufmt fmt)
  function destructor (line 76) | static void destructor(void *arg)
  function aufile_open (line 110) | int aufile_open(struct aufile **afp, struct aufile_prm *prm,
  function aufile_read (line 185) | int aufile_read(struct aufile *af, uint8_t *p, size_t *sz)
  function aufile_write (line 219) | int aufile_write(struct aufile *af, const uint8_t *p, size_t sz)
  function aufile_get_size (line 239) | size_t aufile_get_size(struct aufile *af)
  function aufile_get_length (line 255) | size_t aufile_get_length(struct aufile *af, const struct aufile_prm *prm)
  function aufile_set_position (line 278) | int aufile_set_position(struct aufile *af, const struct aufile_prm *prm,

FILE: rem/aufile/aufile.h
  type wavfmt (line 8) | enum wavfmt {
  type wav_fmt (line 15) | struct wav_fmt {
  type wav_fmt (line 27) | struct wav_fmt

FILE: rem/aufile/wave.c
  type wav_chunk (line 19) | struct wav_chunk {
  function write_u16 (line 25) | static int write_u16(FILE *f, uint16_t v)
  function write_u32 (line 36) | static int write_u32(FILE *f, uint32_t v)
  function read_u16 (line 47) | static int read_u16(FILE *f, uint16_t *v)
  function read_u32 (line 60) | static int read_u32(FILE *f, uint32_t *v)
  function chunk_encode (line 74) | static int chunk_encode(FILE *f, const char *id, size_t sz)
  function chunk_decode (line 83) | static int chunk_decode(struct wav_chunk *chunk, FILE *f)
  function wav_header_encode (line 92) | int wav_header_encode(FILE *f, uint16_t format, uint16_t channels,
  function wav_header_decode (line 121) | int wav_header_decode(struct wav_fmt *fmt, size_t *datasize, FILE *f)

FILE: rem/auframe/auframe.c
  function auframe_init (line 24) | void auframe_init(struct auframe *af, enum aufmt fmt, void *sampv,
  function auframe_size (line 54) | size_t auframe_size(const struct auframe *af)
  function auframe_mute (line 77) | void auframe_mute(struct auframe *af)
  function auframe_level (line 95) | double auframe_level(struct auframe *af)
  function auframe_bytes_to_timestamp (line 110) | uint64_t auframe_bytes_to_timestamp(const struct auframe *af, size_t n)
  function auframe_bytes_to_ms (line 119) | uint64_t auframe_bytes_to_ms(const struct auframe *af, size_t n)
  function auframe_ms_to_bytes (line 130) | size_t auframe_ms_to_bytes(const struct auframe *af, uint16_t ms)

FILE: rem/aulevel/aulevel.c
  function calc_rms_s16 (line 38) | static double calc_rms_s16(const int16_t *data, size_t len)
  function calc_rms_s32 (line 54) | static double calc_rms_s32(const int32_t *data, size_t len)
  function calc_rms_float (line 72) | static double calc_rms_float(const float *data, size_t len)
  function aulevel_calc_dbov (line 101) | double aulevel_calc_dbov(int fmt, const void *sampv, size_t sampc)

FILE: rem/aumix/aumix.c
  type aumix (line 23) | struct aumix {
  type aumix_source (line 44) | struct aumix_source {
  function dummy_frame_handler (line 58) | static void dummy_frame_handler(const int16_t *sampv, size_t sampc, void...
  function destructor (line 66) | static void destructor(void *arg)
  function source_destructor (line 89) | static void source_destructor(void *arg)
  function aumix_thread (line 106) | static int aumix_thread(void *arg)
  function aumix_alloc (line 274) | int aumix_alloc(struct aumix **mixp, uint32_t srate,
  function aumix_latency (line 335) | void aumix_latency(struct aumix *mix, uint16_t min, uint16_t max)
  function aumix_recordh (line 353) | void aumix_recordh(struct aumix *mix, aumix_record_h *recordh)
  function aumix_record_sumh (line 370) | void aumix_record_sumh(struct aumix *mix, aumix_record_h *recordh)
  function aumix_playfile (line 389) | int aumix_playfile(struct aumix *mix, const char *filepath)
  function aumix_source_count (line 424) | uint32_t aumix_source_count(const struct aumix *mix)
  function aumix_source_alloc (line 447) | int aumix_source_alloc(struct aumix_source **srcp, struct aumix *mix,
  function aumix_source_set_id (line 499) | void aumix_source_set_id(struct aumix_source *src, struct pl *id)
  function aumix_source_readh (line 517) | void aumix_source_readh(struct aumix_source *src, aumix_read_h *readh)
  function aumix_source_mute (line 534) | void aumix_source_mute(struct aumix_source *src, bool mute)
  function aumix_source_enable (line 549) | void aumix_source_enable(struct aumix_source *src, bool enable)
  function aumix_source_put (line 589) | int aumix_source_put(struct aumix_source *src, const int16_t *sampv,
  function aumix_source_put_auframe (line 607) | int aumix_source_put_auframe(struct aumix_source *src, struct auframe *af)
  function aumix_source_flush (line 621) | void aumix_source_flush(struct aumix_source *src)
  function aumix_debug (line 638) | int aumix_debug(struct re_printf *pf, const struct aumix *mix)

FILE: rem/auresamp/resamp.c
  function upsample_mono2mono (line 36) | static void upsample_mono2mono(int16_t *outv, const int16_t *inv,
  function upsample_mono2stereo (line 52) | static void upsample_mono2stereo(int16_t *outv, const int16_t *inv,
  function upsample_stereo2mono (line 70) | static void upsample_stereo2mono(int16_t *outv, const int16_t *inv,
  function upsample_stereo2stereo (line 88) | static void upsample_stereo2stereo(int16_t *outv, const int16_t *inv,
  function downsample_mono2mono (line 106) | static void downsample_mono2mono(int16_t *outv, const int16_t *inv,
  function downsample_mono2stereo (line 119) | static void downsample_mono2stereo(int16_t *outv, const int16_t *inv,
  function downsample_stereo2mono (line 133) | static void downsample_stereo2mono(int16_t *outv, const int16_t *inv,
  function downsample_stereo2stereo (line 148) | static void downsample_stereo2stereo(int16_t *outv, const int16_t *inv,
  function auresamp_init (line 169) | void auresamp_init(struct auresamp *rs)
  function auresamp_setup (line 192) | int auresamp_setup(struct auresamp *rs, uint32_t irate, unsigned ich,
  function auresamp (line 301) | int auresamp(struct auresamp *rs, int16_t *outv, size_t *outc,

FILE: rem/autone/tone.c
  function digit2lo (line 20) | static inline uint32_t digit2lo(int digit)
  function digit2hi (line 33) | static inline uint32_t digit2hi(int digit)
  function autone_sine (line 58) | int autone_sine(struct mbuf *mb, uint32_t srate,
  function autone_dtmf (line 93) | int autone_dtmf(struct mbuf *mb, uint32_t srate, int digit)

FILE: rem/avc/config.c
  function avc_config_encode (line 20) | int avc_config_encode(struct mbuf *mb, uint8_t profile_ind,
  function avc_config_decode (line 52) | int avc_config_decode(struct avc_config *conf, struct mbuf *mb)

FILE: rem/dtmf/dec.c
  type dtmf_dec (line 29) | struct dtmf_dec {
  function decode_digit (line 42) | static char decode_digit(struct dtmf_dec *dec)
  function dtmf_dec_alloc (line 92) | int dtmf_dec_alloc(struct dtmf_dec **decp, unsigned srate, unsigned ch,
  function dtmf_dec_reset (line 122) | void dtmf_dec_reset(struct dtmf_dec *dec, unsigned srate, unsigned ch)
  function dtmf_dec_probe (line 154) | void dtmf_dec_probe(struct dtmf_dec *dec, const int16_t *sampv, size_t s...

FILE: rem/fir/fir.c
  function fir_reset (line 17) | void fir_reset(struct fir *fir)
  function fir_filter (line 39) | void fir_filter(struct fir *fir, int16_t *outv, const int16_t *inv, size...

FILE: rem/goertzel/goertzel.c
  function goertzel_init (line 22) | void goertzel_init(struct goertzel *g, double freq, unsigned srate)
  function goertzel_reset (line 35) | void goertzel_reset(struct goertzel *g)
  function goertzel_result (line 49) | double goertzel_result(struct goertzel *g)

FILE: rem/vid/draw.c
  function vidframe_draw_point (line 22) | void vidframe_draw_point(struct vidframe *f, unsigned x, unsigned y,
  function vidframe_draw_hline (line 128) | void vidframe_draw_hline(struct vidframe *f,
  function vidframe_draw_vline (line 214) | void vidframe_draw_vline(struct vidframe *f,
  function vidframe_draw_rect (line 239) | void vidframe_draw_rect(struct vidframe *f, unsigned x0, unsigned y0,

FILE: rem/vid/fmt.c
  type vidfmt_desc (line 12) | struct vidfmt_desc
  type vidfmt (line 34) | enum vidfmt

FILE: rem/vid/frame.c
  function vidframe_size (line 20) | size_t vidframe_size(enum vidfmt fmt, const struct vidsz *sz)
  function vidframe_init (line 52) | void vidframe_init(struct vidframe *vf, enum vidfmt fmt,
  function vidframe_init_buf (line 80) | void vidframe_init_buf(struct vidframe *vf, enum vidfmt fmt,
  function vidframe_alloc (line 175) | int vidframe_alloc(struct vidframe **vfp, enum vidfmt fmt,
  function vidframe_fill (line 203) | void vidframe_fill(struct vidframe *vf, uint32_t r, uint32_t g, uint32_t b)
  function vidframe_copy (line 290) | void vidframe_copy(struct vidframe *dst, const struct vidframe *src)

FILE: rem/vidconv/vconv.c
  function init_table (line 39) | static void init_table(void)
  function yuv2rgb (line 150) | static inline void yuv2rgb(uint8_t *rgb, uint8_t y, int ruv, int guv, in...
  function yuv2rgb565 (line 159) | static inline void yuv2rgb565(uint8_t *rgb, uint8_t y,
  function _yuv2rgb (line 171) | static inline void _yuv2rgb(uint8_t *rgb, uint8_t y, uint8_t u, uint8_t v)
  function yuv420p_to_yuv420p (line 190) | static void yuv420p_to_yuv420p(unsigned xsoffs, unsigned xdoffs,
  function yuyv422_to_yuv420p (line 223) | static void yuyv422_to_yuv420p(unsigned xsoffs, unsigned xdoffs,
  function uyvy422_to_yuv420p (line 259) | static void uyvy422_to_yuv420p(unsigned xsoffs, unsigned xdoffs,
  function rgb32_to_yuv420p (line 295) | static void rgb32_to_yuv420p(unsigned xsoffs, unsigned xdoffs, unsigned ...
  function rgb32_to_yuv444p (line 340) | static void rgb32_to_yuv444p(unsigned xsoffs, unsigned xdoffs, unsigned ...
  function yuv420p_to_rgb32 (line 379) | static void yuv420p_to_rgb32(unsigned xsoffs, unsigned xdoffs, unsigned ...
  function yuv420p_to_rgb565 (line 420) | static void yuv420p_to_rgb565(unsigned xsoffs, unsigned xdoffs, unsigned...
  function nv12_to_yuv420p (line 461) | static void nv12_to_yuv420p(unsigned xsoffs, unsigned xdoffs, unsigned w...
  function yuv420p_to_nv12 (line 496) | static void yuv420p_to_nv12(unsigned xsoffs, unsigned xdoffs, unsigned w...
  function nv21_to_yuv420p (line 531) | static void nv21_to_yuv420p(unsigned xsoffs, unsigned xdoffs, unsigned w...
  function yuv444p_to_rgb32 (line 566) | static void yuv444p_to_rgb32(unsigned xsoffs, unsigned xdoffs, unsigned ...
  function nv12_to_rgb32 (line 597) | static void nv12_to_rgb32(unsigned xsoffs, unsigned xdoffs, unsigned width,
  function nv21_to_rgb32 (line 636) | static void nv21_to_rgb32(unsigned xsoffs, unsigned xdoffs, unsigned width,
  function vidconv (line 717) | void vidconv(struct vidframe *dst, const struct vidframe *src,
  function vidconv_aspect (line 797) | void vidconv_aspect(struct vidframe *dst, const struct vidframe *src,
  function vidconv_center (line 824) | void vidconv_center(struct vidframe *dst, const struct vidframe *src,

FILE: rem/vidmix/vidmix.c
  type vidmix (line 25) | struct vidmix {
  type vidmix_source (line 33) | struct vidmix_source {
  type vidframe (line 53) | struct vidframe
  type vidframe (line 54) | struct vidframe
  function clear_frame (line 57) | static inline void clear_frame(struct vidframe *vf)
  function destructor (line 63) | static void destructor(void *arg)
  function source_destructor (line 72) | static void source_destructor(void *arg)
  function source_mix (line 91) | static inline void source_mix(struct vidframe *mframe,
  function source_mix_full (line 154) | static inline void source_mix_full(struct vidframe *mframe,
  function calc_rows (line 177) | static inline unsigned calc_rows(unsigned n)
  function vidmix_thread (line 187) | static int vidmix_thread(void *arg)
  function content_thread (line 271) | static int content_thread(void *arg)
  function vidmix_alloc (line 324) | int vidmix_alloc(struct vidmix **mixp)
  function vidmix_set_fmt (line 361) | void vidmix_set_fmt(struct vidmix *mix, enum vidfmt fmt)
  function vidmix_source_alloc (line 383) | int vidmix_source_alloc(struct vidmix_source **srcp, struct vidmix *mix,
  function vidmix_source_isenabled (line 433) | bool vidmix_source_isenabled(const struct vidmix_source *src)
  function vidmix_source_isrunning (line 446) | bool vidmix_source_isrunning(const struct vidmix_source *src)
  function vidmix_source_get_pidx (line 466) | uint32_t vidmix_source_get_pidx(const struct vidmix_source *src)
  type vidmix_source (line 479) | struct vidmix_source
  function sort_src_handler (line 485) | static bool sort_src_handler(struct le *le1, struct le *le2, void *arg)
  function vidmix_source_enable (line 503) | void vidmix_source_enable(struct vidmix_source *src, bool enable)
  function vidmix_source_start (line 538) | int vidmix_source_start(struct vidmix_source *src)
  function vidmix_source_stop (line 574) | void vidmix_source_stop(struct vidmix_source *src)
  function vidmix_source_set_size (line 600) | int vidmix_source_set_size(struct vidmix_source *src, const struct vidsz...
  function vidmix_source_set_rate (line 632) | void vidmix_source_set_rate(struct vidmix_source *src, unsigned fps)
  function vidmix_source_set_content_hide (line 649) | void vidmix_source_set_content_hide(struct vidmix_source *src, bool hide)
  function vidmix_source_toggle_selfview (line 665) | void vidmix_source_toggle_selfview(struct vidmix_source *src)
  function vidmix_source_set_focus (line 683) | void vidmix_source_set_focus(struct vidmix_source *src,
  function vidmix_source_set_focus_idx (line 703) | void vidmix_source_set_focus_idx(struct vidmix_source *src, uint32_t pidx)
  function vidmix_source_put (line 751) | void vidmix_source_put(struct vidmix_source *src, const struct vidframe ...

FILE: src/aes/apple/aes.c
  type aes (line 15) | struct aes {
  function destructor (line 22) | static void destructor(void *arg)
  function aes_alloc (line 31) | int aes_alloc(struct aes **stp, enum aes_mode mode,
  function aes_set_iv (line 78) | void aes_set_iv(struct aes *st, const uint8_t *iv)
  function aes_encr (line 103) | int aes_encr(struct aes *st, uint8_t *out, const uint8_t *in, size_t len)
  function aes_decr (line 122) | int aes_decr(struct aes *st, uint8_t *out, const uint8_t *in, size_t len)
  function aes_get_authtag (line 128) | int aes_get_authtag(struct aes *aes, uint8_t *tag, size_t taglen)
  function aes_authenticate (line 138) | int aes_authenticate(struct aes *aes, const uint8_t *tag, size_t taglen)

FILE: src/aes/openssl/aes.c
  type aes (line 16) | struct aes {
  function EVP_CIPHER (line 23) | static const EVP_CIPHER *aes_cipher(enum aes_mode mode, size_t key_bits)
  function set_crypt_dir (line 51) | static inline bool set_crypt_dir(struct aes *aes, bool encr)
  function destructor (line 69) | static void destructor(void *arg)
  function aes_alloc (line 78) | int aes_alloc(struct aes **aesp, enum aes_mode mode,
  function aes_set_iv (line 123) | void aes_set_iv(struct aes *aes, const uint8_t *iv)
  function aes_encr (line 136) | int aes_encr(struct aes *aes, uint8_t *out, const uint8_t *in, size_t len)
  function aes_decr (line 155) | int aes_decr(struct aes *aes, uint8_t *out, const uint8_t *in, size_t len)
  function aes_get_authtag (line 183) | int aes_get_authtag(struct aes *aes, uint8_t *tag, size_t taglen)
  function aes_authenticate (line 223) | int aes_authenticate(struct aes *aes, const uint8_t *tag, size_t taglen)

FILE: src/aes/stub.c
  function aes_alloc (line 10) | int aes_alloc(struct aes **stp, enum aes_mode mode,
  function aes_set_iv (line 23) | void aes_set_iv(struct aes *aes, const uint8_t *iv)
  function aes_encr (line 30) | int aes_encr(struct aes *st, uint8_t *out, const uint8_t *in, size_t len)
  function aes_decr (line 40) | int aes_decr(struct aes *st, uint8_t *out, const uint8_t *in, size_t len)
  function aes_get_authtag (line 50) | int aes_get_authtag(struct aes *aes, uint8_t *tag, size_t taglen)
  function aes_authenticate (line 60) | int aes_authenticate(struct aes *aes, const uint8_t *tag, size_t taglen)

FILE: src/async/async.c
  type async_work (line 19) | struct async_work {
  type re_async (line 29) | struct re_async {
  function worker_thread (line 43) | static int worker_thread(void *arg)
  function async_destructor (line 86) | static void async_destructor(void *data)
  function worker_check (line 130) | static void worker_check(void *arg)
  function queueh (line 149) | static void queueh(int id, void *data, void *arg)
  function work_destruct (line 171) | static void work_destruct(void *arg)
  function work_alloc (line 178) | static int work_alloc(struct async_work **workp)
  function re_async_alloc (line 211) | int re_async_alloc(struct re_async **asyncp, uint16_t workers)
  function re_async (line 283) | int re_async(struct re_async *async, intptr_t id, re_async_work_h *workh,
  function re_async_cancel (line 325) | void re_async_cancel(struct re_async *async, intptr_t id)

FILE: src/av1/depack.c
  function av1_aggr_hdr_decode (line 21) | int av1_aggr_hdr_decode(struct av1_aggr_hdr *hdr, struct mbuf *mb)

FILE: src/av1/obu.c
  function obu_allowed_rtp (line 19) | bool obu_allowed_rtp(enum obu_type type)
  function av1_leb128_encode (line 46) | int av1_leb128_encode(struct mbuf *mb, uint64_t value)
  function av1_leb128_decode (line 77) | int av1_leb128_decode(struct mbuf *mb, uint64_t *value)
  function av1_obu_encode (line 116) | int av1_obu_encode(struct mbuf *mb, uint8_t type, bool has_size,
  function av1_obu_decode (line 148) | int av1_obu_decode(struct av1_obu_hdr *hdr, struct mbuf *mb)
  function av1_obu_print (line 206) | int av1_obu_print(struct re_printf *pf, const struct av1_obu_hdr *hdr)
  function av1_obu_count (line 225) | unsigned av1_obu_count(const uint8_t *buf, size_t size)
  function av1_obu_count_rtp (line 263) | unsigned av1_obu_count_rtp(const uint8_t *buf, size_t size)
  type obu_type (line 294) | enum obu_type

FILE: src/av1/pkt.c
  type av1_context (line 25) | struct av1_context {
  function leb128_calc_size (line 51) | static size_t leb128_calc_size(uint64_t value)
  function aggr_hdr_encode (line 77) | static void aggr_hdr_encode(uint8_t hdr[AV1_AGGR_HDR_SIZE],
  function packetized_obu_size (line 89) | static size_t packetized_obu_size(const struct av1_obu_hdr* hdr) {
  function update_curr_obu (line 101) | static int update_curr_obu(struct av1_context* context) {
  function copy_fragment (line 149) | static int copy_fragment(struct av1_context* context, bool include_prefix,
  function calc_fragment_len_with_prefix (line 198) | static void calc_fragment_len_with_prefix(
  function calc_fragment_len (line 240) | static int calc_fragment_len(
  function copy_obus_to_packet (line 323) | static int copy_obus_to_packet(struct av1_context* context, uint8_t* w,
  function av1_packetize (line 391) | int av1_packetize(bool *newp, bool marker, uint64_t rtp_ts,

FILE: src/base64/b64.c
  function base64_encode (line 33) | int base64_encode(const uint8_t *in, size_t ilen, char *out, size_t *olen)
  function base64url_encode (line 84) | int base64url_encode(const uint8_t *in, size_t ilen, char *out, size_t *...
  function base64_print (line 127) | int base64_print(struct re_printf *pf, const uint8_t *ptr, size_t len)
  function b64val (line 157) | static inline uint32_t b64val(char c)
  function base64_decode (line 186) | int base64_decode(const char *in, size_t ilen, uint8_t *out, size_t *olen)

FILE: src/bfcp/attr.c
  function destructor (line 23) | static void destructor(void *arg)
  function attr_encode (line 58) | static int attr_encode(struct mbuf *mb, bool mand, enum bfcp_attrib type,
  function bfcp_attrs_vencode (line 152) | int bfcp_attrs_vencode(struct mbuf *mb, unsigned attrc, va_list *ap)
  function bfcp_attrs_encode (line 219) | int bfcp_attrs_encode(struct mbuf *mb, unsigned attrc, ...)
  function attr_decode (line 232) | static int attr_decode(struct bfcp_attr **attrp, struct mbuf *mb,
  function bfcp_attrs_decode (line 391) | int bfcp_attrs_decode(struct list *attrl, struct mbuf *mb, size_t len,
  type bfcp_attr (line 420) | struct bfcp_attr
  type list (line 420) | struct list
  type bfcp_attrib (line 421) | enum bfcp_attrib
  type le (line 423) | struct le
  type bfcp_attr (line 426) | struct bfcp_attr
  type bfcp_attr (line 438) | struct bfcp_attr
  type list (line 438) | struct list
  type le (line 441) | struct le
  type bfcp_attr (line 444) | struct bfcp_attr
  type bfcp_attr (line 464) | struct bfcp_attr
  type bfcp_attr (line 464) | struct bfcp_attr
  type bfcp_attrib (line 465) | enum bfcp_attrib
  type bfcp_attr (line 483) | struct bfcp_attr
  type bfcp_attr (line 483) | struct bfcp_attr
  function bfcp_attr_print (line 501) | int bfcp_attr_print(struct re_printf *pf, const struct bfcp_attr *attr)
  function bfcp_attrs_print (line 611) | int bfcp_attrs_print(struct re_printf *pf, const struct list *attrl,
  type bfcp_attrib (line 640) | enum bfcp_attrib
  type bfcp_reqstat (line 674) | enum bfcp_reqstat
  type bfcp_err (line 697) | enum bfcp_err

FILE: src/bfcp/bfcp.h
  type bfcp_strans (line 7) | struct bfcp_strans {
  type bfcp_conn (line 14) | struct bfcp_conn {
  type list (line 36) | struct list
  type mbuf (line 36) | struct mbuf
  type bfcp_unknown_attr (line 37) | struct bfcp_unknown_attr
  type bfcp_attr (line 38) | struct bfcp_attr
  type list (line 38) | struct list
  type bfcp_attrib (line 39) | enum bfcp_attrib
  type bfcp_attr (line 40) | struct bfcp_attr
  type list (line 40) | struct list
  type re_printf (line 42) | struct re_printf
  type list (line 42) | struct list
  type bfcp_conn (line 47) | struct bfcp_conn
  type sa (line 47) | struct sa
  type mbuf (line 47) | struct mbuf
  type bfcp_conn (line 51) | struct bfcp_conn
  type bfcp_msg (line 51) | struct bfcp_msg
  type bfcp_conn (line 52) | struct bfcp_conn
  type sa (line 52) | struct sa
  type bfcp_prim (line 53) | enum bfcp_prim

FILE: src/bfcp/conn.c
  function destructor (line 20) | static void destructor(void *arg)
  function strans_cmp (line 34) | static bool strans_cmp(const struct bfcp_strans *st,
  function udp_recv_handler (line 53) | static void udp_recv_handler(const struct sa *src, struct mbuf *mb, void...
  function tcp_recv_handler (line 81) | static void tcp_recv_handler(struct mbuf *mb, void *arg)
  function tcp_estab_handler (line 111) | static void tcp_estab_handler(void *arg)
  function tcp_close_handler (line 119) | static void tcp_close_handler(int err, void *arg)
  function tcp_conn_handler (line 130) | static void tcp_conn_handler(const struct sa *peer, void *arg)
  function bfcp_listen (line 169) | int bfcp_listen(struct bfcp_conn **bcp, enum bfcp_transp tp, struct sa *...
  function bfcp_connect (line 246) | int bfcp_connect(struct bfcp_conn **bcp, enum bfcp_transp tp,
  function bfcp_accept (line 332) | int bfcp_accept(struct bfcp_conn *bc)
  function bfcp_reject (line 353) | void bfcp_reject(struct bfcp_conn *bc)
  function bfcp_send (line 362) | int bfcp_send(struct bfcp_conn *bc, const struct sa *dst, struct mbuf *mb)
  type bfcp_conn (line 391) | struct bfcp_conn

FILE: src/bfcp/msg.c
  function destructor (line 23) | static void destructor(void *arg)
  function hdr_encode (line 31) | static int hdr_encode(struct mbuf *mb, uint8_t ver, bool r,
  function hdr_decode (line 48) | static int hdr_decode(struct bfcp_msg *msg, struct mbuf *mb)
  function bfcp_msg_vencode (line 95) | int bfcp_msg_vencode(struct mbuf *mb, uint8_t ver, bool r, enum bfcp_pri...
  function bfcp_msg_encode (line 137) | int bfcp_msg_encode(struct mbuf *mb, uint8_t ver, bool r, enum bfcp_prim...
  function bfcp_msg_decode (line 161) | int bfcp_msg_decode(struct bfcp_msg **msgp, struct mbuf *mb)
  type bfcp_attr (line 204) | struct bfcp_attr
  type bfcp_msg (line 204) | struct bfcp_msg
  type bfcp_attrib (line 205) | enum bfcp_attrib
  type bfcp_attr (line 223) | struct bfcp_attr
  type bfcp_msg (line 223) | struct bfcp_msg
  function bfcp_msg_print (line 241) | int bfcp_msg_print(struct re_printf *pf, const struct bfcp_msg *msg)
  type bfcp_prim (line 265) | enum bfcp_prim

FILE: src/bfcp/reply.c
  function tmr_handler (line 23) | static void tmr_handler(void *arg)
  function bfcp_reply (line 41) | int bfcp_reply(struct bfcp_conn *bc, const struct bfcp_msg *req,
  function bfcp_edreply (line 97) | int bfcp_edreply(struct bfcp_conn *bc, const struct bfcp_msg *req,
  function bfcp_ereply (line 120) | int bfcp_ereply(struct bfcp_conn *bc, const struct bfcp_msg *req,

FILE: src/bfcp/request.c
  type bfcp_ctrans (line 24) | struct bfcp_ctrans {
  function dummy_resp_handler (line 39) | static void dummy_resp_handler(int err, const struct bfcp_msg *msg, void...
  function destructor (line 47) | static void destructor(void *arg)
  function dispatch (line 56) | static void dispatch(struct bfcp_conn *bc)
  function tmr_handler (line 80) | static void tmr_handler(void *arg)
  function bfcp_handle_response (line 112) | bool bfcp_handle_response(struct bfcp_conn *bc, const struct bfcp_msg *msg)
  function bfcp_vrequest (line 143) | int bfcp_vrequest(struct bfcp_conn *bc, const struct sa *dst, uint8_t ver,
  function bfcp_request (line 215) | int bfcp_request(struct bfcp_conn *bc, const struct sa *dst, uint8_t ver,
  function bfcp_notify (line 244) | int bfcp_notify(struct bfcp_conn *bc, const struct sa *dst, uint8_t ver,

FILE: src/btrace/btrace.c
  type print_type (line 27) | enum print_type { BTRACE_CSV, BTRACE_NEWLINE, BTRACE_JSON }
  function print_debug (line 29) | static int print_debug(struct re_printf *pf, struct btrace *bt,
  function btrace_print (line 149) | int btrace_print(struct re_printf *pf, struct btrace *bt)
  function btrace_println (line 163) | int btrace_println(struct re_printf *pf, struct btrace *bt)
  function btrace_print_json (line 177) | int btrace_print_json(struct re_printf *pf, struct btrace *bt)

FILE: src/conf/conf.c
  type conf (line 34) | struct conf {
  function load_file (line 39) | static int load_file(struct mbuf *mb, const char *filename)
  function conf_destructor (line 70) | static void conf_destructor(void *data)
  function conf_alloc (line 86) | int conf_alloc(struct conf **confp, const char *filename)
  function conf_alloc_buf (line 127) | int conf_alloc_buf(struct conf **confp, const uint8_t *buf, size_t sz)
  function conf_get (line 156) | int conf_get(const struct conf *conf, const char *name, struct pl *pl)
  function conf_get_str (line 184) | int conf_get_str(const struct conf *conf, const char *name, char *str,
  function conf_get_u32 (line 210) | int conf_get_u32(const struct conf *conf, const char *name, uint32_t *num)
  function conf_get_i32 (line 237) | int conf_get_i32(const struct conf *conf, const char *name, int32_t *num)
  function conf_get_float (line 264) | int conf_get_float(const struct conf *conf, const char *name, double *num)
  function conf_get_bool (line 291) | int conf_get_bool(const struct conf *conf, const char *name, bool *val)
  function conf_apply (line 326) | int conf_apply(const struct conf *conf, const char *name,

FILE: src/crc32/crc32.c
  function re_crc32 (line 117) | uint32_t re_crc32(uint32_t crc, const void *buf, uint32_t size)

FILE: src/dbg/dbg.c
  type dbg_flags (line 28) | enum dbg_flags
  function mem_lock_init (line 43) | static void mem_lock_init(void)
  function dbg_lock (line 49) | static inline void dbg_lock(void)
  function dbg_unlock (line 56) | static inline void dbg_unlock(void)
  function dbg_init (line 68) | void dbg_init(int level, enum dbg_flags flags)
  function dbg_handler_set (line 84) | void dbg_handler_set(dbg_print_h *ph, void *arg)
  function dbg_vprintf (line 94) | static void dbg_vprintf(int level, const char *fmt, va_list ap)
  function dbg_fmt_vprintf (line 145) | static void dbg_fmt_vprintf(int level, const char *fmt, va_list ap)
  function dbg_printf (line 175) | void dbg_printf(int level, const char *fmt, ...)

FILE: src/dd/dd.c
  type dd_dti (line 15) | enum dd_dti
  type dd_next_layer_idc (line 30) | enum dd_next_layer_idc
  function mandatory_descriptor_fields (line 45) | static int mandatory_descriptor_fields(struct dd *dd, struct getbit *gb)
  function template_layers (line 71) | static int template_layers(struct dd *dd, struct getbit *gb)
  function template_dtis (line 114) | static int template_dtis(struct dd *dd, struct getbit *gb)
  function template_fdiffs (line 137) | static int template_fdiffs(struct dd *dd, struct getbit *gb)
  function template_chains (line 172) | static int template_chains(struct dd *dd, struct getbit *gb)
  function render_resolutions (line 205) | static int render_resolutions(struct dd *dd, struct getbit *gb)
  function template_dependency_structure (line 224) | static int template_dependency_structure(struct dd *dd, struct getbit *gb)
  function extended_descriptor_fields (line 264) | static int extended_descriptor_fields(struct dd *dd, struct getbit *gb)
  function no_extended_descriptor_fields (line 293) | static void no_extended_descriptor_fields(struct dd *dd)
  function dd_decode (line 301) | int dd_decode(struct dd *dd, const uint8_t *buf, size_t sz)
  function dd_print (line 331) | int dd_print(struct re_printf *pf, const struct dd *dd)

FILE: src/dd/dd_enc.c
  function mandatory_descriptor_fields (line 17) | static int mandatory_descriptor_fields(struct putbit *pb, const struct d...
  function next_layer (line 30) | static uint8_t next_layer(const struct dd *dd, unsigned prev, unsigned n...
  function template_layers (line 55) | static int template_layers(struct putbit *pb, const struct dd *dd)
  function template_dtis (line 75) | static int template_dtis(struct putbit *pb, const struct dd *dd)
  function template_fdiffs (line 97) | static int template_fdiffs(struct putbit *pb, const struct dd *dd)
  function template_chains (line 133) | static int template_chains(struct putbit *pb, const struct dd *dd)
  function render_resolutions (line 173) | static int render_resolutions(struct putbit *pb, const struct dd *dd)
  function template_dependency_structure (line 185) | static int template_dependency_structure(struct putbit *pb,
  function extended_descriptor_fields (line 227) | static int extended_descriptor_fields(struct putbit *pb, const struct dd...
  function dd_encode (line 255) | int dd_encode(struct mbuf *mb, const struct dd *dd)

FILE: src/dd/putbit.c
  function putbit_init (line 12) | void putbit_init(struct putbit *pb, struct mbuf *mb)
  function putbit_one (line 24) | int putbit_one(struct putbit *pb, unsigned bit)
  function putbit_write (line 58) | int putbit_write(struct putbit *pb, unsigned count, unsigned val)
  function putbit_write_ns (line 80) | int putbit_write_ns(struct putbit *pb, unsigned n, unsigned v)

FILE: src/dns/client.c
  type tcpconn (line 48) | struct tcpconn {
  type dns_query (line 61) | struct dns_query {
  type dnsquery (line 86) | struct dnsquery {
  type dnsc (line 97) | struct dnsc {
  type dnsc_conf (line 111) | struct dnsc_conf
  type tcpconn (line 121) | struct tcpconn
  type dns_query (line 122) | struct dns_query
  function rr_unlink_handler (line 126) | static bool rr_unlink_handler(struct le *le, void *arg)
  function query_abort (line 139) | static void query_abort(struct dns_query *q)
  function query_destructor (line 151) | static void query_destructor(void *data)
  function query_handler (line 168) | static void query_handler(struct dns_query *q, int err, struct list *ansl,
  function query_close_handler (line 186) | static bool query_close_handler(struct le *le, void *arg)
  function query_cmp_handler (line 198) | static bool query_cmp_handler(struct le *le, void *arg)
  function ttl_timeout_handler (line 222) | static void ttl_timeout_handler(void *arg)
  function reply_recv (line 233) | static int reply_recv(struct dnsc *dnsc, struct mbuf *mb)
  function udp_recv_handler (line 372) | static void udp_recv_handler(const struct sa *src, struct mbuf *mb, void...
  function tcp_recv_handler (line 379) | static void tcp_recv_handler(struct mbuf *mbrx, void *arg)
  function tcpconn_timeout_handler (line 443) | static void tcpconn_timeout_handler(void *arg)
  function tcp_estab_handler (line 454) | static void tcp_estab_handler(void *arg)
  function tcp_close_handler (line 486) | static void tcp_close_handler(int err, void *arg)
  function tcpconn_cmp_handler (line 495) | static bool tcpconn_cmp_handler(struct le *le, void *arg)
  function tcpconn_fail_handler (line 507) | static bool tcpconn_fail_handler(struct le *le, void *arg)
  function tcpconn_close (line 538) | static void tcpconn_close(struct tcpconn *tc, int err)
  function tcpconn_destructor (line 550) | static void tcpconn_destructor(void *arg)
  function tcpconn_alloc (line 561) | static int tcpconn_alloc(struct tcpconn **tcpp, struct dnsc *dnsc,
  function send_tcp (line 599) | static int send_tcp(struct dns_query *q)
  function tcp_timeout_handler (line 646) | static void tcp_timeout_handler(void *arg)
  function send_udp (line 655) | static int send_udp(struct dns_query *q)
  function udp_timeout_handler (line 696) | static void udp_timeout_handler(void *arg)
  function hdl_tmr_cache (line 721) | static void hdl_tmr_cache(void *arg)
  function query_cache_handler (line 743) | static bool query_cache_handler(struct dns_query *q)
  function getaddr_dup (line 780) | static bool getaddr_dup(struct le *le, void *arg)
  function async_getaddrinfo (line 799) | static int async_getaddrinfo(void *arg)
  function getaddrinfo_h (line 871) | static void getaddrinfo_h(int err, void *arg)
  function dq_deref (line 921) | static void dq_deref(void *arg)
  function query_getaddrinfo (line 930) | static int query_getaddrinfo(struct dns_query *q)
  function query (line 968) | static int query(struct dns_query **qp, struct dnsc *dnsc, uint8_t opcode,
  function dnsc_query (line 1127) | int dnsc_query(struct dns_query **qp, struct dnsc *dnsc, const char *name,
  function dnsc_query_srv (line 1156) | int dnsc_query_srv(struct dns_query **qp, struct dnsc *dnsc, const char ...
  function dnsc_notify (line 1183) | int dnsc_notify(struct dns_query **qp, struct dnsc *dnsc, const char *name,
  function dnsc_destructor (line 1193) | static void dnsc_destructor(void *data)
  function dnsc_alloc (line 1222) | int dnsc_alloc(struct dnsc **dcpp, const struct dnsc_conf *conf,
  function dnsc_conf_set_timeout (line 1280) | void  dnsc_conf_set_timeout(struct dnsc *dnsc, uint32_t connect, uint32_...
  function dnsc_conf_set (line 1290) | int dnsc_conf_set(struct dnsc *dnsc, const struct dnsc_conf *conf)
  function dnsc_srv_set (line 1332) | int dnsc_srv_set(struct dnsc *dnsc, const struct sa *srvv, uint32_t srvc)
  function dnsc_cache_flush (line 1355) | void dnsc_cache_flush(struct dnsc *dnsc)
  function dnsc_cache_max (line 1370) | void dnsc_cache_max(struct dnsc *dnsc, uint32_t max)
  function dnsc_getaddrinfo (line 1388) | void dnsc_getaddrinfo(struct dnsc *dnsc, bool active)
  function dnsc_getaddrinfo_enabled (line 1404) | bool dnsc_getaddrinfo_enabled(struct dnsc *dnsc)
  function dnsc_getaddrinfo_only (line 1421) | bool dnsc_getaddrinfo_only(const struct dnsc *dnsc)

FILE: src/dns/cstr.c
  function dns_cstr_encode (line 23) | int dns_cstr_encode(struct mbuf *mb, const char *str)
  function dns_cstr_decode (line 48) | int dns_cstr_decode(struct mbuf *mb, char **str)

FILE: src/dns/darwin/srv.c
  function get_darwin_dns (line 17) | int get_darwin_dns(struct sa *nsv, uint32_t *n)

FILE: src/dns/dname.c
  type dname (line 21) | struct dname {
  function destructor (line 28) | static void destructor(void *arg)
  function dname_append (line 37) | static void dname_append(struct hash *ht_dname, const char *name, size_t...
  function lookup_handler (line 58) | static bool lookup_handler(struct le *le, void *arg)
  type dname (line 66) | struct dname
  type hash (line 66) | struct hash
  function dname_encode_pointer (line 74) | static inline int dname_encode_pointer(struct mbuf *mb, size_t pos)
  function dns_dname_encode (line 91) | int dns_dname_encode(struct mbuf *mb, const char *name,
  function dns_dname_decode (line 162) | int dns_dname_decode(struct mbuf *mb, char **name, size_t start)

FILE: src/dns/dns.h
  type sa (line 9) | struct sa
  type sa (line 12) | struct sa
  type sa (line 15) | struct sa

FILE: src/dns/hdr.c
  function dns_hdr_encode (line 33) | int dns_hdr_encode(struct mbuf *mb, const struct dnshdr *hdr)
  function dns_hdr_decode (line 69) | int dns_hdr_decode(struct mbuf *mb, struct dnshdr *hdr)

FILE: src/dns/ns.c
  function parse_resolv_conf (line 21) | static int parse_resolv_conf(struct sa *srvv, uint32_t *n)
  function dns_srv_get (line 76) | int dns_srv_get(char *domain, size_t dsize, struct sa *srvv, uint32_t *n)

FILE: src/dns/res.c
  function get_resolv_dns (line 21) | int get_resolv_dns(struct sa *nsv, uint32_t *n)

FILE: src/dns/rr.c
  function rr_destructor (line 17) | static void rr_destructor(void *data)
  type dnsrr (line 69) | struct dnsrr
  type dnsrr (line 71) | struct dnsrr
  function dns_rr_dup (line 83) | int dns_rr_dup(struct dnsrr **rrp, const struct dnsrr *rr)
  function dns_rr_encode (line 226) | int dns_rr_encode(struct mbuf *mb, const struct dnsrr *rr, int64_t ttl_o...
  function dns_rr_decode (line 350) | int dns_rr_decode(struct mbuf *mb, struct dnsrr **rr, size_t start)
  function dns_rr_cmp (line 542) | bool dns_rr_cmp(const struct dnsrr *rr1, const struct dnsrr *rr2, bool r...
  function dns_rr_print (line 744) | int dns_rr_print(struct re_printf *pf, const struct dnsrr *rr)

FILE: src/dns/rrlist.c
  type sort (line 20) | struct sort {
  function sidx (line 26) | static uint32_t sidx(const struct dnsrr *rr, uint32_t key)
  function std_sort_handler (line 50) | static bool std_sort_handler(struct le *le1, struct le *le2, void *arg)
  function addr_sort_handler (line 87) | static bool addr_sort_handler(struct le *le1, struct le *le2, void *arg)
  function dns_rrlist_sort (line 104) | void dns_rrlist_sort(struct list *rrl, uint16_t type, size_t key)
  function dns_rrlist_sort_addr (line 118) | void dns_rrlist_sort_addr(struct list *rrl, size_t key)
  type dnsrr (line 126) | struct dnsrr
  type list (line 126) | struct list
  type le (line 132) | struct le
  type dnsrr (line 139) | struct dnsrr
  type dnsrr (line 186) | struct dnsrr
  type list (line 186) | struct list
  type dnsrr (line 209) | struct dnsrr
  type list (line 209) | struct list
  function find_handler (line 219) | static bool find_handler(struct dnsrr *rr, void *arg)
  type dnsrr (line 238) | struct dnsrr
  type list (line 238) | struct list

FILE: src/dns/win32/srv.c
  function get_windns (line 23) | int get_windns(struct sa *srvv, uint32_t *n)

FILE: src/fmt/ch.c
  function ch_hex (line 17) | uint8_t ch_hex(char ch)

FILE: src/fmt/hexdump.c
  function hexdump (line 18) | void hexdump(FILE *f, const void *p, size_t len)

FILE: src/fmt/pl.c
  type pl (line 21) | struct pl
  function pl_alloc_destruct (line 24) | static void pl_alloc_destruct(void *arg)
  type pl (line 39) | struct pl
  type pl (line 41) | struct pl
  type pl (line 48) | struct pl
  type pl (line 73) | struct pl
  type pl (line 73) | struct pl
  type pl (line 75) | struct pl
  type pl (line 82) | struct pl
  function pl_set_str (line 107) | void pl_set_str(struct pl *pl, const char *str)
  function pl_set_mbuf (line 124) | void pl_set_mbuf(struct pl *pl, const struct mbuf *mb)
  function pl_i32 (line 141) | int32_t pl_i32(const struct pl *pl)
  function pl_i64 (line 185) | int64_t pl_i64(const struct pl *pl)
  function pl_u32 (line 229) | uint32_t pl_u32(const struct pl *pl)
  function pl_x32 (line 257) | uint32_t pl_x32(const struct pl *pl)
  function pl_u64 (line 295) | uint64_t pl_u64(const struct pl *pl)
  function pl_x64 (line 323) | uint64_t pl_x64(const struct pl *pl)
  function pl_float (line 363) | double pl_float(const struct pl *pl)
  function pl_bool (line 407) | int pl_bool(bool *val, const struct pl *pl)
  function pl_hex (line 443) | int pl_hex(const struct pl *pl, uint8_t *hex, size_t len)
  function pl_isset (line 464) | bool pl_isset(const struct pl *pl)
  function pl_strcpy (line 479) | int pl_strcpy(const struct pl *pl, char *str, size_t size)
  function pl_strdup (line 503) | int pl_strdup(char **dst, const struct pl *src)
  function pl_dup (line 531) | int pl_dup(struct pl *dst, const struct pl *src)
  function pl_strcmp (line 560) | int pl_strcmp(const struct pl *pl, const char *str)
  function pl_strncmp (line 583) | int pl_strncmp(const struct pl *pl, const char *str, size_t n)
  function pl_strncasecmp (line 605) | int pl_strncasecmp(const struct pl *pl, const char *str, size_t n)
  function pl_strcasecmp (line 629) | int pl_strcasecmp(const struct pl *pl, const char *str)
  function pl_cmp (line 650) | int pl_cmp(const struct pl *pl1, const struct pl *pl2)
  function casecmp (line 680) | static int casecmp(const struct pl *pl, const char *str)
  function pl_casecmp (line 721) | int pl_casecmp(const struct pl *pl1, const struct pl *pl2)
  type pl (line 762) | struct pl
  type pl (line 787) | struct pl
  type pl (line 812) | struct pl
  function pl_ltrim (line 844) | int pl_ltrim(struct pl *pl)
  function pl_rtrim (line 873) | int pl_rtrim(struct pl *pl)
  function pl_trim (line 896) | int pl_trim(struct pl *pl)
  function pl_strip_html (line 912) | void pl_strip_html(struct pl *pl)

FILE: src/fmt/print.c
  type length_modifier (line 34) | enum length_modifier {
  function write_padded (line 52) | static int write_padded(const char *p, size_t sz, size_t pad, char pch,
  function local_itoa (line 80) | static uint32_t local_itoa(char *buf, uint64_t n, uint8_t base, bool uc)
  function local_ftoa (line 109) | static size_t local_ftoa(char *buf, double n, size_t dp)
  function vhprintf (line 139) | static int vhprintf(const char *fmt, va_list ap, re_vprintf_h *vph, void...
  function re_vhprintf (line 544) | int re_vhprintf(const char *fmt, va_list ap, re_vprintf_h *vph, void *arg)
  function re_vhprintf_s (line 579) | int re_vhprintf_s(const char *fmt, va_list ap, re_vprintf_h *vph, void *...
  function print_handler (line 585) | static int print_handler(const char *p, size_t size, void *arg)
  type dyn_print (line 600) | struct dyn_print {
  function print_handler_dyn (line 608) | static int print_handler_dyn(const char *p, size_t size, void *arg)
  type strm_print (line 633) | struct strm_print {
  function print_handler_stream (line 638) | static int print_handler_stream(const char *p, size_t size, void *arg)
  function re_vfprintf (line 660) | int re_vfprintf(FILE *stream, const char *fmt, va_list ap)
  function re_vfprintf_s (line 686) | int re_vfprintf_s(FILE *stream, const char *fmt, va_list ap)
  function re_vprintf (line 711) | int re_vprintf(const char *fmt, va_list ap)
  function re_vprintf_s (line 725) | int re_vprintf_s(const char *fmt, va_list ap)
  function re_vsnprintf (line 741) | int re_vsnprintf(char *re_restrict str, size_t size,
  function re_vsnprintf_s (line 771) | int re_vsnprintf_s(char *re_restrict str, size_t size,
  function vsdprintf (line 791) | static int vsdprintf(char **strp, const char *fmt, va_list ap, bool safe)
  function re_vsdprintf (line 832) | int re_vsdprintf(char **strp, const char *fmt, va_list ap)
  function re_vsdprintf_s (line 848) | int re_vsdprintf_s(char **strp, const char *fmt, va_list ap)
  function _re_hprintf (line 862) | int _re_hprintf(struct re_printf *pf, const char *fmt, ...)
  function _re_hprintf_s (line 886) | int _re_hprintf_s(struct re_printf *pf, const char *fmt, ...)
  function _re_fprintf (line 910) | int _re_fprintf(FILE *stream, const char *fmt, ...)
  function _re_fprintf_s (line 931) | int _re_fprintf_s(FILE *stream, const char *fmt, ...)
  function _re_printf (line 951) | int _re_printf(const char *fmt, ...)
  function _re_printf_s (line 971) | int _re_printf_s(const char *fmt, ...)
  function _re_snprintf (line 993) | int _re_snprintf(char *re_restrict str, size_t size,
  function _re_snprintf_s (line 1016) | int _re_snprintf_s(char *re_restrict str, size_t size,
  function _re_sdprintf (line 1038) | int _re_sdprintf(char **strp, const char *fmt, ...)
  function _re_sdprintf_s (line 1059) | int _re_sdprintf_s(char **strp, const char *fmt, ...)

FILE: src/fmt/prm.c
  function fmt_param_exists (line 18) | bool fmt_param_exists(const struct pl *pl, const char *pname)
  function fmt_param_sep_get (line 50) | bool fmt_param_sep_get(const struct pl *pl, const char *pname, char sep,
  function fmt_param_get (line 79) | bool fmt_param_get(const struct pl *pl, const char *pname, struct pl *val)
  function fmt_param_apply (line 92) | void fmt_param_apply(const struct pl *pl, fmt_param_h *ph, void *arg)

FILE: src/fmt/regex.c
  type chr (line 12) | struct chr {
  function expr_match (line 18) | static bool expr_match(const struct chr *chrv, uint32_t n, uint8_t c,
  function re_regex (line 64) | int re_regex(const char *ptr, size_t len, const char *expr, ...)

FILE: src/fmt/str.c
  function str_hex (line 29) | int str_hex(uint8_t *hex, size_t len, const char *str)
  function str_ncpy (line 52) | void str_ncpy(char *dst, const char *src, size_t n)
  function str_dup (line 70) | int str_dup(char **dst, const char *src)
  function str_x64dup (line 100) | int str_x64dup(char **dst, uint64_t val)
  function str_cmp (line 124) | int str_cmp(const char *s1, const char *s2)
  function str_ncmp (line 144) | int str_ncmp(const char *s1, const char *s2, size_t n)
  function str_casecmp (line 180) | int str_casecmp(const char *s1, const char *s2)
  function str_len (line 204) | size_t str_len(const char *s)
  function str_bool (line 218) | int str_bool(bool *val, const char *str)
  function wchar_t (line 265) | wchar_t *str_wchar(const char *str)

FILE: src/fmt/text2pcap.c
  function re_text2pcap (line 8) | int re_text2pcap(struct re_printf *pf, struct re_text2pcap *pcap)
  function re_text2pcap_trace (line 31) | void re_text2pcap_trace(const char *name, const char *id, bool in,

FILE: src/fmt/time.c
  function fmt_gmtime (line 35) | int fmt_gmtime(struct re_printf *pf, void *ts)
  function fmt_human_time (line 70) | int fmt_human_time(struct re_printf *pf, const uint32_t *seconds)
  function fmt_timestamp (line 106) | int fmt_timestamp(struct re_printf *pf, void *arg)
  function fmt_timestamp_us (line 146) | int fmt_timestamp_us(struct re_printf *pf, void *arg)

FILE: src/fmt/unicode.c
  function utf8_encode (line 22) | int utf8_encode(struct re_printf *pf, const char *str)
  function utf8_decode (line 87) | int utf8_decode(struct re_printf *pf, const struct pl *pl)
  function utf8_byteseq (line 196) | size_t utf8_byteseq(char u[4], unsigned cp)

FILE: src/h264/getbit.c
  function getbit_init (line 18) | void getbit_init(struct getbit *gb, const uint8_t *buf, size_t size)
  function getbit_get_left (line 29) | size_t getbit_get_left(const struct getbit *gb)
  function get_bit (line 41) | unsigned get_bit(struct getbit *gb)
  function get_ue_golomb (line 64) | int get_ue_golomb(struct getbit *gb, unsigned *valp)
  function get_bits (line 109) | unsigned get_bits(struct getbit *gb, unsigned n)
  function getbit_read_ns (line 136) | unsigned getbit_read_ns(struct getbit *gb, unsigned n)

FILE: src/h264/nal.c
  function nal_header_encode_val (line 20) | static int nal_header_encode_val(struct mbuf *mb,
  function h264_nal_header_decode_buf (line 29) | void h264_nal_header_decode_buf(struct h264_nal_header *hdr,
  function h264_nal_header_encode (line 51) | int h264_nal_header_encode(struct mbuf *mb, const struct h264_nal_header...
  function h264_nal_header_decode (line 72) | int h264_nal_header_decode(struct h264_nal_header *hdr, struct mbuf *mb)
  type h264_nalu (line 98) | enum h264_nalu
  function h264_fu_hdr_encode (line 128) | int h264_fu_hdr_encode(const struct h264_fu *fu, struct mbuf *mb)
  function h264_fu_hdr_decode (line 135) | int h264_fu_hdr_decode(struct h264_fu *fu, struct mbuf *mb)
  function rtp_send_data (line 207) | static int rtp_send_data(const uint8_t *hdr, size_t hdr_sz,
  function h264_nal_send (line 216) | int h264_nal_send(bool first, bool last,
  function h264_packetize (line 271) | int h264_packetize(uint64_t rtp_ts, const uint8_t *buf, size_t len,
  function h264_is_keyframe (line 300) | bool h264_is_keyframe(int type)
  function h264_stap_encode (line 320) | int h264_stap_encode(struct mbuf *mb, const uint8_t *frame,
  function stap_decode_annexb_int (line 368) | static int stap_decode_annexb_int(struct mbuf *mb_frame, struct mbuf *mb...
  function h264_stap_decode_annexb (line 420) | int h264_stap_decode_annexb(struct mbuf *mb_frame, struct mbuf *mb_pkt)
  function h264_stap_decode_annexb_long (line 437) | int h264_stap_decode_annexb_long(struct mbuf *mb_frame, struct mbuf *mb_...

FILE: src/h264/sps.c
  function scaling_list (line 24) | static int scaling_list(struct getbit *gb,
  function decode_scaling_matrix (line 57) | static int decode_scaling_matrix(struct getbit *gb, unsigned chroma_form...
  function h264_sps_decode (line 103) | int h264_sps_decode(struct h264_sps *sps, const uint8_t *p, size_t len)
  function h264_sps_resolution (line 315) | void h264_sps_resolution(const struct h264_sps *sps,

FILE: src/h265/nal.c
  function h265_nal_encode (line 14) | void h265_nal_encode(uint8_t buf[2], unsigned nal_unit_type,
  function h265_nal_encode_mbuf (line 25) | int h265_nal_encode_mbuf(struct mbuf *mb, const struct h265_nal *nal)
  function h265_nal_decode (line 35) | int h265_nal_decode(struct h265_nal *nal, const uint8_t *p)
  function h265_nal_print (line 56) | int h265_nal_print(struct re_printf *pf, const struct h265_nal *nal)
  type h265_naltype (line 68) | enum h265_naltype
  function h265_is_keyframe (line 116) | bool h265_is_keyframe(enum h265_naltype type)
  function packetize (line 136) | static inline int packetize(bool marker, const uint8_t *buf, size_t len,
  function h265_packetize (line 184) | int h265_packetize(uint64_t rtp_ts, const uint8_t *buf, size_t len,

FILE: src/hash/func.c
  function hash_joaat (line 25) | uint32_t hash_joaat(const uint8_t *key, size_t len)
  function hash_joaat_ci (line 51) | uint32_t hash_joaat_ci(const char *str, size_t len)
  function hash_joaat_str (line 78) | uint32_t hash_joaat_str(const char *str)
  function hash_joaat_str_ci (line 102) | uint32_t hash_joaat_str_ci(const char *str)
  function hash_joaat_pl (line 126) | uint32_t hash_joaat_pl(const struct pl *pl)
  function hash_joaat_pl_ci (line 139) | uint32_t hash_joaat_pl_ci(const struct pl *pl)
  function hash_fast (line 153) | uint32_t hash_fast(const char *k, size_t len)
  function hash_fast_str (line 176) | uint32_t hash_fast_str(const char *str)

FILE: src/hash/hash.c
  type hash (line 15) | struct hash {
  function hash_destructor (line 21) | static void hash_destructor(void *data)
  function hash_alloc (line 37) | int hash_alloc(struct hash **hp, uint32_t bsize)
  function hash_append (line 79) | void hash_append(struct hash *h, uint32_t key, struct le *le, void *data)
  function hash_unlink (line 93) | void hash_unlink(struct le *le)
  type le (line 109) | struct le
  type hash (line 109) | struct hash
  type le (line 128) | struct le
  type hash (line 128) | struct hash
  type le (line 130) | struct le
  type list (line 151) | struct list
  type hash (line 151) | struct hash
  type list (line 168) | struct list
  type hash (line 168) | struct hash
  function hash_bsize (line 181) | uint32_t hash_bsize(const struct hash *h)
  function hash_flush (line 192) | void hash_flush(struct hash *h)
  function hash_clear (line 209) | void hash_clear(struct hash *h)
  function hash_valid_size (line 228) | uint32_t hash_valid_size(uint32_t size)
  function hash_debug (line 247) | int hash_debug(struct re_printf *pf, struct hash *h)

FILE: src/hmac/apple/hmac.c
  type hmac (line 17) | struct hmac {
  function destructor (line 25) | static void destructor(void *arg)
  function hmac_create (line 33) | int hmac_create(struct hmac **hmacp, enum hmac_hash hash,
  function hmac_digest (line 70) | int hmac_digest(struct hmac *hmac, uint8_t *md, size_t md_len,

FILE: src/hmac/hmac.c
  type hmac (line 13) | struct hmac {
  function destructor (line 19) | static void destructor(void *arg)
  function hmac_create (line 27) | int hmac_create(struct hmac **hmacp, enum hmac_hash hash,
  function hmac_digest (line 54) | int hmac_digest(struct hmac *hmac, uint8_t *md, size_t md_len,

FILE: src/hmac/hmac_sha1.c
  function compute_hash (line 30) | static void compute_hash(ALG_ID alg_id, const void* data, size_t dataSize,
  function hmac_sha1 (line 99) | void hmac_sha1(const uint8_t *k,  /* secret key */
  function hmac_sha256 (line 144) | void hmac_sha256(const uint8_t *key, size_t key_len,

FILE: src/hmac/openssl/hmac.c
  type hmac (line 16) | struct hmac {
  function destructor (line 23) | static void destructor(void *arg)
  function hmac_create (line 31) | int hmac_create(struct hmac **hmacp, enum hmac_hash hash, const uint8_t ...
  function hmac_digest (line 78) | int hmac_digest(struct hmac *hmac, uint8_t *md, size_t md_len,

FILE: src/http/auth.c
  function http_auth_print_challenge (line 38) | int http_auth_print_challenge(struct re_printf *pf,
  function chk_nonce (line 66) | static int chk_nonce(const struct pl *nonce, uint32_t expires)
  function http_auth_check (line 113) | bool http_auth_check(const struct pl *hval, const struct pl *method,
  function http_auth_check_request (line 153) | bool http_auth_check_request(const struct http_msg *msg,

FILE: src/http/chunk.c
  function decode_chunk_size (line 13) | static int decode_chunk_size(struct http_chunk *chunk, struct mbuf *mb)
  function decode_trailer (line 59) | static int decode_trailer(struct http_chunk *chunk, struct mbuf *mb)
  function http_chunk_decode (line 77) | int http_chunk_decode(struct http_chunk *chunk, struct mbuf *mb, size_t ...

FILE: src/http/client.c
  type http_cli (line 41) | struct http_cli {
  type conn (line 55) | struct conn
  type http_req (line 57) | struct http_req {
  type http_conf (line 84) | struct http_conf
  type conn (line 91) | struct conn {
  type http_req (line 102) | struct http_req
  type http_msg (line 103) | struct http_msg
  type http_req (line 104) | struct http_req
  function cli_destructor (line 108) | static void cli_destructor(void *arg)
  function req_destructor (line 130) | static void req_destructor(void *arg)
  function conn_destructor (line 145) | static void conn_destructor(void *arg)
  function conn_idle (line 156) | static void conn_idle(struct conn *conn)
  function req_close (line 179) | static void req_close(struct http_req *req, int err,
  function try_next (line 218) | static void try_next(struct conn *conn, int err)
  function write_body_buf (line 244) | static int write_body_buf(struct http_msg *msg, const uint8_t *buf,
  function write_body (line 254) | static int write_body(struct http_req *req, struct mbuf *mb)
  function req_recv (line 278) | static int req_recv(struct http_req *req, struct mbuf *mb, bool *last)
  function timeout_handler (line 323) | static void timeout_handler(void *arg)
  function read_req_data (line 331) | static int read_req_data(struct http_req *req)
  function send_buf (line 358) | static int send_buf(struct tcp_conn *tc, struct mbuf *large, size_t max_...
  function send_req_buf (line 392) | static int send_req_buf(struct conn *conn)
  function send_req_handler (line 435) | static void send_req_handler(void *arg)
  function estab_handler (line 441) | static void estab_handler(void *arg)
  function recv_handler (line 463) | static void recv_handler(struct mbuf *mb, void *arg)
  function close_handler (line 540) | static void close_handler(int err, void *arg)
  function conn_cmp (line 548) | static bool conn_cmp(struct le *le, void *arg)
  function conn_connect (line 563) | static int conn_connect(struct http_req *req)
  function req_connect (line 654) | static int req_connect(struct http_req *req)
  function rr_handler (line 673) | static bool rr_handler(struct dnsrr *rr, void *arg)
  function query_handler (line 697) | static void query_handler(int err, const struct dnshdr *hdr, struct list...
  function http_uri_decode (line 728) | int http_uri_decode(struct http_uri *hu, const struct pl *uri)
  function http_request_addr_v (line 756) | static int http_request_addr_v(struct http_req **reqp, struct http_cli *...
  function http_request (line 914) | int http_request(struct http_req **reqp, struct http_cli *cli, const cha...
  function http_request_addr (line 950) | int http_request_addr(struct http_req **reqp, struct http_cli *cli,
  function http_req_set_conn_handler (line 973) | void http_req_set_conn_handler(struct http_req *req, http_conn_h *connh)
  function http_client_set_config (line 982) | int http_client_set_config(struct http_cli *cli, struct http_conf *conf)
  function http_client_alloc (line 1002) | int http_client_alloc(struct http_cli **clip, struct dnsc *dnsc)
  function http_client_set_tls (line 1053) | int http_client_set_tls(struct http_cli *cli, struct tls *tls)
  function http_client_get_tls (line 1073) | int http_client_get_tls(struct http_cli *cli, struct tls **tls)
  function http_client_add_ca (line 1092) | int http_client_add_ca(struct http_cli *cli, const char *tls_ca)
  function http_client_add_capem (line 1109) | int http_client_add_capem(struct http_cli *cli, const char *capem)
  function http_client_add_crlpem (line 1126) | int http_client_add_crlpem(struct http_cli *cli, const char *pem)
  function http_client_set_cert (line 1142) | int http_client_set_cert(struct http_cli *cli, const char *path)
  function http_client_set_certpem (line 1169) | int http_client_set_certpem(struct http_cli *cli, const char *pem)
  function http_client_set_key (line 1188) | int http_client_set_key(struct http_cli *cli, const char *path)
  function http_client_set_keypem (line 1214) | int http_client_set_keypem(struct http_cli *cli, const char *pem)
  function http_client_set_tls_hostname (line 1234) | int http_client_set_tls_hostname(struct http_cli *cli,
  function http_client_set_session_reuse (line 1257) | int http_client_set_session_reuse(struct http_cli *cli, bool enabled)
  function http_client_set_tls_min_version (line 1274) | int http_client_set_tls_min_version(struct http_cli *cli, int version)
  function http_client_set_tls_max_version (line 1291) | int http_client_set_tls_max_version(struct http_cli *cli, int version)
  function http_client_disable_verify_server (line 1307) | int http_client_disable_verify_server(struct http_cli *cli)
  function http_client_use_chainpem (line 1327) | int http_client_use_chainpem(struct http_cli *cli, const char *chain,
  function http_client_use_chain (line 1352) | int http_client_use_chain(struct http_cli *cli, const char *path)
  function http_client_set_laddr (line 1378) | void http_client_set_laddr(struct http_cli *cli, const struct sa *addr)
  function http_client_set_laddr6 (line 1392) | void http_client_set_laddr6(struct http_cli *cli, const struct sa *addr)
  function http_client_set_bufsize_max (line 1399) | void http_client_set_bufsize_max(struct http_cli *cli, size_t max_size)
  function http_client_get_bufsize_max (line 1408) | size_t http_client_get_bufsize_max(struct http_cli *cli)

FILE: src/http/http.h
  type http_chunk (line 8) | struct http_chunk {
  type http_chunk (line 17) | struct http_chunk
  type mbuf (line 17) | struct mbuf

FILE: src/http/msg.c
  function hdr_destructor (line 22) | static void hdr_destructor(void *arg)
  function destructor (line 30) | static void destructor(void *arg)
  function hdr_hash (line 40) | static enum http_hdrid hdr_hash(const struct pl *name)
  function hdr_comma_separated (line 59) | static inline bool hdr_comma_separated(enum http_hdrid id)
  function hdr_add (line 95) | static inline int hdr_add(struct http_msg *msg, const struct pl *name,
  function http_msg_decode (line 143) | int http_msg_decode(struct http_msg **msgp, struct mbuf *mb, bool req)
  type http_hdr (line 319) | struct http_hdr
  type http_msg (line 319) | struct http_msg
  type http_hdrid (line 320) | enum http_hdrid
  type http_hdr (line 337) | struct http_hdr
  type http_msg (line 337) | struct http_msg
  type http_hdrid (line 338) | enum http_hdrid
  type le (line 341) | struct le
  type http_hdr (line 349) | struct http_hdr
  type http_hdr (line 372) | struct http_hdr
  type http_msg (line 372) | struct http_msg
  type http_hdr (line 390) | struct http_hdr
  type http_msg (line 390) | struct http_msg
  type le (line 394) | struct le
  type pl (line 395) | struct pl
  type http_hdr (line 405) | struct http_hdr
  function count_handler (line 420) | static bool count_handler(const struct http_hdr *hdr, void *arg)
  function http_msg_hdr_count (line 439) | uint32_t http_msg_hdr_count(const struct http_msg *msg, enum http_hdrid id)
  function http_msg_xhdr_count (line 457) | uint32_t http_msg_xhdr_count(const struct http_msg *msg, const char *name)
  function value_handler (line 467) | static bool value_handler(const struct http_hdr *hdr, void *arg)
  function http_msg_hdr_has_value (line 482) | bool http_msg_hdr_has_value(const struct http_msg *msg, enum http_hdrid id,
  function http_msg_xhdr_has_value (line 499) | bool http_msg_xhdr_has_value(const struct http_msg *msg, const char *name,
  function http_msg_print (line 515) | int http_msg_print(struct re_printf *pf, const struct http_msg *msg)

FILE: src/http/request.c
  type http_reqconn (line 40) | struct http_reqconn {
  function destructor (line 74) | static void destructor(void *arg)
  function make_digest_mb (line 95) | static int make_digest_mb(struct mbuf *mb,
  function make_token_mb (line 113) | static int make_token_mb(struct mbuf *mb, const struct http_reqconn *conn)
  function make_basic_mb (line 144) | static int make_basic_mb(struct mbuf *mb, struct http_reqconn *conn)
  type http_reqconn (line 168) | struct http_reqconn
  type pl (line 168) | struct pl
  function resp_handler (line 171) | static void resp_handler(int err, const struct http_msg *msg, void *arg)
  function data_handler (line 256) | static int data_handler(const uint8_t *buf, size_t size,
  function req_body_handler (line 271) | static size_t req_body_handler(struct mbuf *mb, void *arg)
  function send_req (line 296) | static int send_req(struct http_reqconn *conn, const struct pl *auth)
  function send_auth_token (line 387) | static int send_auth_token(struct http_reqconn *conn)
  function http_reqconn_alloc (line 425) | int http_reqconn_alloc(struct http_reqconn **pconn,
  function http_reqconn_set_auth (line 454) | int http_reqconn_set_auth(struct http_reqconn *conn, const struct pl *user,
  function http_reqconn_set_bearer (line 474) | int http_reqconn_set_bearer(struct http_reqconn *conn, const struct pl *...
  function http_reqconn_set_authtoken (line 481) | int http_reqconn_set_authtoken(struct http_reqconn *conn,
  function http_reqconn_set_tokentype (line 495) | int http_reqconn_set_tokentype(struct http_reqconn *conn,
  function http_reqconn_set_method (line 509) | int http_reqconn_set_method(struct http_reqconn *conn, const struct pl *...
  function http_reqconn_set_body (line 519) | int http_reqconn_set_body(struct http_reqconn *conn, struct mbuf *body)
  function http_reqconn_set_ctype (line 536) | int http_reqconn_set_ctype(struct http_reqconn *conn, const struct pl *c...
  function http_reqconn_add_header (line 549) | int http_reqconn_add_header(struct http_reqconn *conn, const struct pl *...
  function http_reqconn_clr_header (line 573) | int http_reqconn_clr_header(struct http_reqconn *conn)
  function http_reqconn_set_tls_hostname (line 584) | int http_reqconn_set_tls_hostname(struct http_reqconn *conn,
  function http_reqconn_set_peer (line 611) | int http_reqconn_set_peer(struct http_reqconn *conn,
  function http_reqconn_send (line 626) | int http_reqconn_send(struct http_reqconn *conn, const struct pl *uri)
  function http_reqconn_set_req_bodyh (line 679) | int http_reqconn_set_req_bodyh(struct http_reqconn *conn,

FILE: src/http/server.c
  type http_sock (line 28) | struct http_sock {
  type http_conn (line 38) | struct http_conn {
  type http_conn (line 50) | struct http_conn
  function sock_destructor (line 53) | static void sock_destructor(void *arg)
  function conn_destructor (line 73) | static void conn_destructor(void *arg)
  function conn_close (line 86) | static void conn_close(struct http_conn *conn)
  function timeout_handler (line 97) | static void timeout_handler(void *arg)
  type http_verify_msg_d (line 107) | struct http_verify_msg_d {
  function verify_msg_destructor (line 117) | static void verify_msg_destructor(void *arg)
  function verify_cert_done (line 125) | static void verify_cert_done(void *arg)
  function http_verify_handler (line 139) | static int http_verify_handler(int ok, void *arg)
  function verify_msg (line 157) | static enum re_https_verify_msg verify_msg(struct http_conn *conn,
  function recv_handler (line 209) | static void recv_handler(struct mbuf *mb, void *arg)
  function close_handler (line 309) | static void close_handler(int err, void *arg)
  function connect_handler (line 319) | static void connect_handler(const struct sa *peer, void *arg)
  function http_listen_fd (line 368) | int http_listen_fd(struct http_sock **sockp, re_sock_t fd, http_req_h *r...
  function http_listen (line 409) | int http_listen(struct http_sock **sockp, const struct sa *laddr,
  function https_listen (line 451) | int https_listen(struct http_sock **sockp, const struct sa *laddr,
  function https_set_verify_msgh (line 497) | int  https_set_verify_msgh(struct http_sock *sock,
  function http_set_max_body_size (line 521) | void http_set_max_body_size(struct http_sock *sock, size_t limit)
  type tcp_sock (line 537) | struct tcp_sock
  type http_sock (line 537) | struct http_sock
  type tls (line 550) | struct tls
  type http_sock (line 550) | struct http_sock
  type sa (line 563) | struct sa
  type http_conn (line 563) | struct http_conn
  type tcp_conn (line 576) | struct tcp_conn
  type http_conn (line 576) | struct http_conn
  type tls_conn (line 589) | struct tls_conn
  type http_conn (line 589) | struct http_conn
  function http_conn_reset_timeout (line 600) | void http_conn_reset_timeout(struct http_conn *conn)
  function http_conn_close (line 611) | void http_conn_close(struct http_conn *conn)
  function http_vreply (line 621) | static int http_vreply(struct http_conn *conn, uint16_t scode,
  function http_reply (line 668) | int http_reply(struct http_conn *conn, uint16_t scode, const char *reason,
  function http_creply (line 693) | int http_creply(struct http_conn *conn, uint16_t scode, const char *reason,
  function http_ereply (line 740) | int http_ereply(struct http_conn *conn, uint16_t scode, const char *reason)

FILE: src/httpauth/basic.c
  function httpauth_basic_destr (line 20) | static void httpauth_basic_destr(void *arg)
  type httpauth_basic (line 28) | struct httpauth_basic
  type httpauth_basic (line 30) | struct httpauth_basic
  function httpauth_basic_decode (line 48) | int httpauth_basic_decode(struct httpauth_basic *basic,
  function httpauth_basic_make_response (line 65) | int httpauth_basic_make_response(struct httpauth_basic *basic,
  function httpauth_basic_encode (line 107) | int httpauth_basic_encode(const struct httpauth_basic *basic, struct mbu...
  function httpauth_basic_request_destructor (line 129) | static void httpauth_basic_request_destructor(void *arg)
  function httpauth_basic_request_print (line 138) | int httpauth_basic_request_print(struct re_printf *pf,
  function httpauth_basic_verify (line 163) | int httpauth_basic_verify(const struct pl *hval, const char *user,
  function httpauth_basic_request (line 226) | int httpauth_basic_request(struct httpauth_basic_req **preq,

FILE: src/httpauth/digest.c
  type pl (line 20) | struct pl
  type pl (line 20) | struct pl
  type pl (line 25) | struct pl
  type pl (line 26) | struct pl
  type pl (line 27) | struct pl
  type pl (line 28) | struct pl
  type pl (line 29) | struct pl
  type pl (line 30) | struct pl
  type pl (line 33) | struct pl
  type pl (line 36) | struct pl
  type pl (line 37) | struct pl
  type pl (line 38) | struct pl
  type pl (line 40) | struct pl
  type pl (line 41) | struct pl
  type pl (line 44) | struct pl
  type pl (line 45) | struct pl
  function challenge_decode (line 48) | static void challenge_decode(const struct pl *name, const struct pl *val,
  function algorithm_decode (line 74) | static void algorithm_decode(struct httpauth_digest_resp *resp,
  function response_decode (line 89) | static void response_decode(const struct pl *name, const struct pl *val,
  function digest_decode (line 119) | static int digest_decode(const struct pl *hval, digest_decode_h *dech,
  function response_destructor (line 143) | static void response_destructor(void *data)
  function httpauth_digest_challenge_decode (line 159) | int httpauth_digest_challenge_decode(struct httpauth_digest_chall *chall,
  function httpauth_digest_response_decode (line 188) | int httpauth_digest_response_decode(struct httpauth_digest_resp *resp,
  function httpauth_digest_response_auth (line 222) | int httpauth_digest_response_auth(const struct httpauth_digest_resp *resp,
  function httpauth_digest_make_response (line 270) | int httpauth_digest_make_response(struct httpauth_digest_resp **presp,
  function httpauth_digest_response_encode (line 414) | int httpauth_digest_response_encode(const struct httpauth_digest_resp *r...
  function httpauth_digest_chall_req_destructor (line 458) | static void httpauth_digest_chall_req_destructor(void *arg)
  function generate_nonce (line 472) | static int generate_nonce(char **pnonce, const time_t ts,
  function check_nonce (line 514) | static int check_nonce(const char *req_nonce, const struct pl *resp_nonce,
  function digest_verify (line 548) | static int digest_verify(struct httpauth_digest_chall_req *req,
  function httpauth_digest_verify (line 643) | int httpauth_digest_verify(struct httpauth_digest_chall_req *req,
  function httpauth_digest_chall_req_print (line 681) | int httpauth_digest_chall_req_print(struct re_printf *pf,
  function httpauth_digest_chall_request (line 723) | int httpauth_digest_chall_request(struct httpauth_digest_chall_req **preq,
  function httpauth_digest_chall_request_full (line 748) | int httpauth_digest_chall_request_full(struct httpauth_digest_chall_req ...
  function httpauth_digest_response_destructor (line 795) | static void httpauth_digest_response_destructor(void *arg)
  function digest_response (line 812) | static int digest_response(struct httpauth_digest_enc_resp *resp,
  function httpauth_digest_response_print (line 949) | int httpauth_digest_response_print(struct re_printf *pf,
  function httpauth_digest_response_set_cnonce (line 1000) | int httpauth_digest_response_set_cnonce(struct httpauth_digest_enc_resp ...
  function httpauth_digest_response (line 1030) | int httpauth_digest_response(struct httpauth_digest_enc_resp **presp,
  function httpauth_digest_response_full (line 1056) | int httpauth_digest_response_full(struct httpauth_digest_enc_resp **presp,

FILE: src/ice/cand.c
  function cand_destructor (line 26) | static void cand_destructor(void *arg)
  function compute_foundation (line 40) | static int compute_foundation(struct ice_cand *cand)
  function cand_alloc (line 51) | static int cand_alloc(struct ice_cand **candp, struct icem *icem,
  function icem_lcand_add_base (line 89) | int icem_lcand_add_base(struct icem *icem, enum ice_cand_type type,
  function icem_lcand_add (line 127) | int icem_lcand_add(struct icem *icem, struct ice_cand *base,
  function icem_rcand_add (line 156) | int icem_rcand_add(struct icem *icem, enum ice_cand_type type, unsigned ...
  function icem_rcand_add_prflx (line 188) | int icem_rcand_add_prflx(struct ice_cand **rcp, struct icem *icem,
  type ice_cand (line 227) | struct ice_cand
  type list (line 227) | struct list
  type sa (line 228) | struct sa
  type le (line 230) | struct le
  type ice_cand (line 234) | struct ice_cand
  type ice_cand (line 257) | struct ice_cand
  type icem (line 257) | struct icem
  type le (line 260) | struct le
  type ice_candpair (line 263) | struct ice_candpair
  type ice_cand (line 283) | struct ice_cand
  type ice_cand (line 283) | struct ice_cand
  type sa (line 289) | struct sa
  type ice_cand (line 289) | struct ice_cand
  function icem_cands_debug (line 295) | int icem_cands_debug(struct re_printf *pf, const struct list *lst)
  function icem_cand_print (line 320) | int icem_cand_print(struct re_printf *pf, const struct ice_cand *cand)
  function icem_cand_type (line 336) | enum ice_cand_type icem_cand_type(const struct ice_cand *cand)

FILE: src/ice/candpair.c
  function candpair_destructor (line 24) | static void candpair_destructor(void *arg)
  function sort_handler (line 35) | static bool sort_handler(struct le *le1, struct le *le2, void *arg)
  function candpair_set_pprio (line 44) | static void candpair_set_pprio(struct ice_candpair *cp)
  function list_add_sorted (line 64) | static void list_add_sorted(struct list *list, struct ice_candpair *cp)
  function icem_candpair_alloc (line 82) | int icem_candpair_alloc(struct ice_candpair **cpp, struct icem *icem,
  function icem_candpair_clone (line 117) | int icem_candpair_clone(struct ice_candpair **cpp, struct ice_candpair *...
  function icem_candpair_prio_order (line 155) | void icem_candpair_prio_order(struct list *lst)
  function icem_candpair_cancel (line 170) | void icem_candpair_cancel(struct ice_candpair *cp)
  function icem_candpair_make_valid (line 179) | void icem_candpair_make_valid(struct ice_candpair *cp)
  function icem_candpair_failed (line 195) | void icem_candpair_failed(struct ice_candpair *cp, int err, uint16_t scode)
  function icem_candpair_set_state (line 208) | void icem_candpair_set_state(struct ice_candpair *cp,
  function icem_candpairs_flush (line 234) | void icem_candpairs_flush(struct list *lst, enum ice_cand_type type,
  function icem_candpair_iscompleted (line 256) | bool icem_candpair_iscompleted(const struct ice_candpair *cp)
  function icem_candpair_cmp (line 274) | bool icem_candpair_cmp(const struct ice_candpair *cp1,
  type ice_candpair (line 296) | struct ice_candpair
  type list (line 296) | struct list
  type ice_cand (line 297) | struct ice_cand
  type ice_cand (line 298) | struct ice_cand
  type le (line 300) | struct le
  type ice_candpair (line 304) | struct ice_candpair
  type ice_candpair (line 324) | struct ice_candpair
  type list (line 324) | struct list
  type ice_candpair_state (line 326) | enum ice_candpair_state
  type le (line 328) | struct le
  type ice_candpair (line 332) | struct ice_candpair
  type ice_candpair (line 347) | struct ice_candpair
  type list (line 347) | struct list
  type le (line 350) | struct le
  type ice_candpair (line 354) | struct ice_candpair
  type ice_candpair (line 374) | struct ice_candpair
  type icem (line 374) | struct icem
  type ice_cand (line 375) | struct ice_cand
  type ice_candpair (line 377) | struct ice_candpair
  function icem_candpair_cmp_fnd (line 391) | bool icem_candpair_cmp_fnd(const struct ice_candpair *cp1,
  function icem_candpair_debug (line 402) | int icem_candpair_debug(struct re_printf *pf, const struct ice_candpair ...
  function icem_candpairs_debug (line 428) | int icem_candpairs_debug(struct re_printf *pf, const struct list *list)

FILE: src/ice/chklist.c
  function candpairs_form (line 27) | static int candpairs_form(struct icem *icem)
  type sa (line 72) | struct sa
  type ice_cand (line 72) | struct ice_cand
  type le (line 79) | struct le
  type le (line 79) | struct le
  type ice_candpair (line 81) | struct ice_candpair
  function candpair_prune (line 98) | static void candpair_prune(struct icem *icem)
  function ice_candpair_set_states (line 121) | void ice_candpair_set_states(struct icem *icem)
  function icem_checklist_form (line 165) | int icem_checklist_form(struct icem *icem)
  function iscompleted (line 191) | static bool iscompleted(const struct icem *icem)
  function concluding_ice (line 208) | static void concluding_ice(struct icem_comp *comp)
  function icem_checklist_update (line 246) | void icem_checklist_update(struct icem *icem)
  type sa (line 299) | struct sa
  type icem (line 299) | struct icem
  type ice_cand (line 301) | struct ice_cand
  type ice_cand (line 314) | struct ice_cand
  type icem (line 314) | struct icem
  type icem_comp (line 317) | struct icem_comp
  type ice_cand (line 333) | struct ice_cand
  type icem (line 333) | struct icem
  type icem_comp (line 336) | struct icem_comp

FILE: src/ice/comp.c
  function helper_recv_handler (line 30) | static bool helper_recv_handler(struct sa *src, struct mbuf *mb, void *arg)
  function destructor (line 66) | static void destructor(void *arg)
  type ice_cand (line 80) | struct ice_cand
  type list (line 80) | struct list
  type ice_cand (line 83) | struct ice_cand
  type le (line 84) | struct le
  type ice_cand (line 89) | struct ice_cand
  function icem_comp_alloc (line 118) | int icem_comp_alloc(struct icem_comp **cp, struct icem *icem, int id,
  function icem_comp_set_default_cand (line 157) | int icem_comp_set_default_cand(struct icem_comp *comp)
  function icem_comp_set_default_rcand (line 175) | void icem_comp_set_default_rcand(struct icem_comp *comp,
  function icem_comp_set_selected (line 196) | void icem_comp_set_selected(struct icem_comp *comp, struct ice_candpair ...
  type icem_comp (line 214) | struct icem_comp
  type icem (line 214) | struct icem
  type le (line 216) | struct le
  type icem_comp (line 223) | struct icem_comp
  function timeout (line 233) | static void timeout(void *arg)
  function icem_comp_keepalive (line 252) | void icem_comp_keepalive(struct icem_comp *comp, bool enable)
  function icecomp_printf (line 266) | void icecomp_printf(struct icem_comp *comp, const char *fmt, ...)
  function icecomp_debug (line 279) | int icecomp_debug(struct re_printf *pf, const struct icem_comp *comp)
  function icem_set_turn_client (line 292) | int icem_set_turn_client(struct icem *icem, unsigned compid,

FILE: src/ice/connchk.c
  function pace_next (line 24) | static void pace_next(struct icem *icem)
  type ice_candpair (line 43) | struct ice_candpair
  type icem (line 43) | struct icem
  type ice_candpair (line 44) | struct ice_candpair
  type sa (line 45) | struct sa
  type sa (line 46) | struct sa
  type ice_cand (line 48) | struct ice_cand
  type ice_candpair (line 49) | struct ice_candpair
  function handle_success (line 108) | static void handle_success(struct icem *icem, struct ice_candpair *cp,
  function print_err (line 145) | static int print_err(struct re_printf *pf, const int *err)
  function stunc_resp_handler (line 155) | static void stunc_resp_handler(int err, uint16_t scode, const char *reason,
  function icem_conncheck_send (line 206) | int icem_conncheck_send(struct ice_candpair *cp, bool use_cand, bool tri...
  function abort_ice (line 322) | static void abort_ice(struct icem *icem, int err)
  function do_check (line 336) | static void do_check(struct ice_candpair *cp)
  function icem_conncheck_schedule_check (line 359) | void icem_conncheck_schedule_check(struct icem *icem)
  function pace_timeout (line 395) | static void pace_timeout(void *arg)
  function rcand_wait_timeout (line 403) | static void rcand_wait_timeout(void *arg)
  function icem_conncheck_start (line 424) | int icem_conncheck_start(struct icem *icem)
  function icem_conncheck_continue (line 455) | void icem_conncheck_continue(struct icem *icem)
  function icem_conncheck_stop (line 468) | void icem_conncheck_stop(struct icem *icem, int err)

FILE: src/ice/ice.h
  type ice_checkl_state (line 13) | enum ice_checkl_state {
  type icem_comp (line 33) | struct icem_comp {
  type icem (line 49) | struct icem {
  type ice_cand (line 78) | struct ice_cand {
  type ice_candpair (line 94) | struct ice_candpair {
  type icem (line 112) | struct icem
  type ice_cand_type (line 112) | enum ice_cand_type
  type sa (line 113) | struct sa
  type sa (line 114) | struct sa
  type pl (line 114) | struct pl
  type ice_cand (line 115) | struct ice_cand
  type icem (line 115) | struct icem
  type sa (line 117) | struct sa
  type ice_cand (line 118) | struct ice_cand
  type icem (line 118) | struct icem
  type re_printf (line 120) | struct re_printf
  type list (line 120) | struct list
  type re_printf (line 121) | struct re_printf
  type ice_cand (line 121) | struct ice_cand
  type ice_candpair (line 125) | struct ice_candpair
  type icem (line 125) | struct icem
  type ice_cand (line 126) | struct ice_cand
  type ice_cand (line 126) | struct ice_cand
  type ice_candpair (line 127) | struct ice_candpair
  type ice_candpair (line 127) | struct ice_candpair
  type ice_cand (line 128) | struct ice_cand
  type ice_cand (line 128) | struct ice_cand
  type list (line 129) | struct list
  type ice_candpair (line 130) | struct ice_candpair
  type ice_candpair (line 131) | struct ice_candpair
  type ice_candpair (line 132) | struct ice_candpair
  type ice_candpair (line 133) | struct ice_candpair
  type ice_candpair_state (line 134) | enum ice_candpair_state
  type list (line 135) | struct list
  type ice_cand_type (line 135) | enum ice_cand_type
  type ice_candpair (line 137) | struct ice_candpair
  type ice_candpair (line 138) | struct ice_candpair
  type ice_candpair (line 139) | struct ice_candpair
  type ice_candpair (line 140) | struct ice_candpair
  type ice_candpair (line 141) | struct ice_candpair
  type ice_candpair (line 142) | struct ice_candpair
  type list (line 142) | struct list
  type ice_cand (line 143) | struct ice_cand
  type ice_cand (line 144) | struct ice_cand
  type ice_candpair (line 145) | struct ice_candpair
  type list (line 145) | struct list
  type ice_candpair_state (line 147) | enum ice_candpair_state
  type ice_candpair (line 148) | struct ice_candpair
  type list (line 148) | struct list
  type ice_candpair (line 150) | struct ice_candpair
  type icem (line 150) | struct icem
  type ice_cand (line 151) | struct ice_cand
  type re_printf (line 152) | struct re_printf
  type ice_candpair (line 152) | struct ice_candpair
  type re_printf (line 153) | struct re_printf
  type list (line 153) | struct list
  type icem_comp (line 157) | struct icem_comp
  type sa (line 157) | struct sa
  type stun_msg (line 158) | struct stun_msg
  type icem (line 162) | struct icem
  type icem (line 166) | struct icem
  type icem (line 167) | struct icem
  type icem_comp (line 171) | struct icem_comp
  type icem (line 171) | struct icem
  type icem_comp (line 173) | struct icem_comp
  type icem_comp (line 174) | struct icem_comp
  type ice_cand (line 175) | struct ice_cand
  type icem_comp (line 176) | struct icem_comp
  type ice_candpair (line 176) | struct ice_candpair
  type icem_comp (line 177) | struct icem_comp
  type icem (line 177) | struct icem
  type icem_comp (line 178) | struct icem_comp
  type icem_comp (line 179) | struct icem_comp
  type re_printf (line 180) | struct re_printf
  type icem_comp (line 180) | struct icem_comp
  type icem (line 184) | struct icem
  type icem (line 185) | struct icem
  type ice_candpair (line 186) | struct ice_candpair
  type ice_checkl_state (line 190) | enum ice_checkl_state
  type le (line 194) | struct le
  type le (line 194) | struct le
  type icem (line 197) | struct icem
  type list (line 198) | struct list

FILE: src/ice/icem.c
  type ice_conf (line 29) | struct ice_conf
  function ice_determine_role (line 38) | static void ice_determine_role(struct icem *icem, enum ice_role role)
  function icem_destructor (line 50) | static void icem_destructor(void *data)
  function icem_alloc (line 84) | int  icem_alloc(struct icem **icemp, enum ice_role role, int proto, int ...
  type ice_conf (line 154) | struct ice_conf
  type icem (line 154) | struct icem
  function icem_local_role (line 160) | enum ice_role icem_local_role(const struct icem *icem)
  function icem_set_conf (line 166) | void icem_set_conf(struct icem *icem, const struct ice_conf *conf)
  function icem_set_role (line 188) | void icem_set_role(struct icem *icem, enum ice_role role)
  function icem_set_name (line 203) | void icem_set_name(struct icem *icem, const char *name)
  function icem_comp_add (line 221) | int icem_comp_add(struct icem *icem, unsigned compid, void *sock)
  type le (line 242) | struct le
  type le (line 242) | struct le
  type ice_cand (line 244) | struct ice_cand
  function icem_cand_redund_elim (line 259) | void icem_cand_redund_elim(struct icem *icem)
  type sa (line 278) | struct sa
  type icem (line 278) | struct icem
  type icem_comp (line 280) | struct icem_comp
  function icem_verify_support (line 298) | bool icem_verify_support(struct icem *icem, unsigned compid,
  function icem_add_chan (line 331) | int icem_add_chan(struct icem *icem, unsigned compid, const struct sa *r...
  function purge_relayed (line 353) | static void purge_relayed(struct icem *icem, struct icem_comp *comp)
  function icem_update (line 376) | void icem_update(struct icem *icem)
  function icem_mismatch (line 404) | bool icem_mismatch(const struct icem *icem)
  function icem_debug (line 418) | int icem_debug(struct re_printf *pf, const struct icem *icem)
  type list (line 464) | struct list
  type icem (line 464) | struct icem
  type list (line 466) | struct list
  type list (line 477) | struct list
  type icem (line 477) | struct icem
  type list (line 479) | struct list
  type list (line 490) | struct list
  type icem (line 490) | struct icem
  type list (line 492) | struct list
  type list (line 503) | struct list
  type icem (line 503) | struct icem
  type list (line 505) | struct list
  function icem_comps_set_default_cand (line 509) | int icem_comps_set_default_cand(struct icem *icem)
  type stun (line 528) | struct stun
  type icem (line 528) | struct icem
  function icem_printf (line 534) | void icem_printf(struct icem *icem, const char *fmt, ...)
  function icem_rcand_ready (line 554) | bool icem_rcand_ready(struct icem *icem)

FILE: src/ice/icesdp.c
  type rcand (line 42) | struct rcand {
  type ice_transp (line 59) | enum ice_transp
  function transp_resolve (line 69) | static enum ice_transp transp_resolve(const struct pl *transp)
  function ice_cand_encode (line 86) | int ice_cand_encode(struct re_printf *pf, const struct ice_cand *cand)
  function ice_remotecands_avail (line 113) | bool ice_remotecands_avail(const struct icem *icem)
  function ice_remotecands_encode (line 131) | int ice_remotecands_encode(struct re_printf *pf, const struct icem *icem)
  function ufrag_decode (line 156) | static int ufrag_decode(struct icem *icem, const char *value)
  function pwd_decode (line 174) | static int pwd_decode(struct icem *icem, const char *value)
  function media_ufrag_decode (line 192) | static int media_ufrag_decode(struct icem *icem, const char *value)
  function media_pwd_decode (line 200) | static int media_pwd_decode(struct icem *icem, const char *value)
  function getaddr_rcand (line 208) | static int getaddr_rcand(void *arg)
  function delayed_rcand (line 237) | static void delayed_rcand(int err, void *arg)
  function rcand_dealloc (line 262) | static void rcand_dealloc(void *arg)
  function cand_decode (line 271) | static int cand_decode(struct icem *icem, const char *val)
  function ice_sdp_decode (line 398) | int ice_sdp_decode(struct icem *icem, const char *name, const char *value)
  function icem_sdp_decode (line 425) | int icem_sdp_decode(struct icem *icem, const char *name, const char *value)
  type ice_tcptype (line 443) | enum ice_tcptype
  function ice_tcptype_resolve (line 455) | static enum ice_tcptype ice_tcptype_resolve(const struct pl *pl)
  function ice_cand_attr_encode (line 465) | int ice_cand_attr_encode(struct re_printf *pf,
  function ice_cand_attr_decode (line 494) | int ice_cand_attr_decode(struct ice_cand_attr *cand, const char *val)

FILE: src/ice/icestr.c
  type ice_cand_type (line 17) | enum ice_cand_type
  function ice_cand_name2type (line 30) | enum ice_cand_type ice_cand_name2type(const char *name)
  type ice_role (line 41) | enum ice_role
  type ice_candpair_state (line 53) | enum ice_candpair_state
  type ice_checkl_state (line 67) | enum ice_checkl_state

FILE: src/ice/stunsrv.c
  function triggered_check (line 28) | static void triggered_check(struct icem *icem, struct ice_cand *lcand,
  function handle_stun_full (line 95) | static int handle_stun_full(struct icem *icem,
  function stunsrv_ereply (line 165) | static int stunsrv_ereply(struct icem_comp *comp, const struct sa *src,
  function icem_stund_recv (line 178) | int icem_stund_recv(struct icem_comp *comp, const struct sa *src,

FILE: src/ice/util.c
  function type_prio (line 39) | static uint32_t type_prio(enum ice_cand_type type)
  function ice_cand_calc_prio (line 52) | uint32_t ice_cand_calc_prio(enum ice_cand_type type, uint16_t lpref,
  function ice_calc_pair_prio (line 66) | uint64_t ice_calc_pair_prio(uint32_t g, uint32_t d)
  function ice_switch_local_role (line 75) | void ice_switch_local_role(struct icem *icem)
  function ice_list_unique (line 109) | uint32_t ice_list_unique(struct list *list, list_unique_h *uh)

FILE: src/json/decode.c
  function mypower10 (line 16) | static inline long double mypower10(uint64_t e)
  function is_string (line 32) | static bool is_string(struct pl *c, const struct pl *pl)
  function is_number (line 47) | static bool is_number(long double *d, bool *isfloat, const struct pl *pl)
  function decode_name (line 120) | static int decode_name(char **str, const struct pl *pl)
  function decode_value (line 134) | static int decode_value(struct json_value *val, const struct pl *pl)
  function object_entry (line 182) | static int object_entry(const struct pl *pl_name, const struct pl *pl_val,
  function array_entry (line 210) | static int array_entry(unsigned idx, const struct pl *pl_val,
  function object_start (line 230) | static int object_start(const struct pl *pl_name, unsigned idx,
  function array_start (line 252) | static int array_start(const struct pl *pl_name, unsigned idx,
  function chkval (line 274) | static inline int chkval(struct pl *val, const char *p)
  function _json_decode (line 285) | static int _json_decode(const char **str, size_t *len,
  function json_decode (line 466) | int json_decode(const char *str, size_t len, unsigned maxdepth,

FILE: src/json/decode_odict.c
  function container_add (line 16) | static int container_add(const char *name, unsigned idx,
  function object_handler (line 42) | static int object_handler(const char *name, unsigned idx,
  function array_handler (line 49) | static int array_handler(const char *name, unsigned idx,
  function entry_add (line 56) | static int entry_add(struct odict *o, const char *name,
  function object_entry_handler (line 82) | static int object_entry_handler(const char *name, const struct json_valu...
  function array_entry_handler (line 91) | static int array_entry_handler(unsigned idx, const struct json_value *val,
  function json_decode_odict (line 104) | int json_decode_odict(struct odict **op, uint32_t hash_size, const char ...

FILE: src/json/encode.c
  function encode_entry (line 13) | static int encode_entry(struct re_printf *pf, const struct odict_entry *e)
  function json_encode_odict (line 79) | int json_encode_odict(struct re_printf *pf, const struct odict *o)

FILE: src/list/list.c
  function list_init (line 21) | void list_init(struct list *list)
  function list_flush (line 37) | void list_flush(struct list *list)
  function list_clear (line 64) | void list_clear(struct list *list)
  function list_append (line 91) | void list_append(struct list *list, struct le *le, void *data)
  function list_prepend (line 124) | void list_prepend(struct list *list, struct le *le, void *data)
  function list_insert_before (line 158) | void list_insert_before(struct list *list, struct le *le, struct le *ile,
  function list_insert_after (line 192) | void list_insert_after(struct list *list, struct le *le, struct le *ile,
  function list_insert_sorted (line 229) | void list_insert_sorted(struct list *list, list_sort_h *sh, void *arg,
  function list_unlink (line 258) | void list_unlink(struct le *le)
  function list_sort (line 293) | void list_sort(struct list *list, list_sort_h *sh, void *arg)
  type le (line 336) | struct le
  type list (line 336) | struct list
  type le (line 339) | struct le
  type le (line 352) | struct le
  type le (line 364) | struct le
  type le (line 383) | struct le
  type list (line 383) | struct list
  type le (line 396) | struct le
  type list (line 396) | struct list
  function list_count (line 409) | uint32_t list_count(const struct list *list)

FILE: src/main/init.c
  function signal_handler (line 31) | static void signal_handler(int sig)
  function LONG (line 49) | static LONG WINAPI exception_handler(EXCEPTION_POINTERS *ExceptionInfo)
  function libre_init (line 144) | int libre_init(void)
  function libre_close (line 180) | void libre_close(void)
  function libre_exception_btrace (line 193) | void libre_exception_btrace(bool enable)

FILE: src/main/main.c
  type re_fhs (line 69) | struct re_fhs {
  type re (line 79) | struct re {
  type re (line 106) | struct re
  type re (line 110) | struct re
  function fhsld_flush (line 113) | static void fhsld_flush(struct re *re)
  function re_destructor (line 126) | static void re_destructor(void *arg)
  function thread_destructor (line 139) | static void thread_destructor(void *arg)
  function re_alloc (line 150) | int re_alloc(struct re **rep)
  function re_once (line 197) | static void re_once(void)
  type re (line 216) | struct re
  type re (line 218) | struct re
  function re_lock (line 229) | static inline void re_lock(struct re *re)
  function re_unlock (line 236) | static inline void re_unlock(struct re *re)
  function fd_handler (line 251) | static void fd_handler(struct re_fhs *fhs, int flags)
  function set_select_fds (line 272) | static int set_select_fds(struct re *re, struct re_fhs *fhs)
  function set_epoll_fds (line 311) | static int set_epoll_fds(struct re *re, struct re_fhs *fhs)
  function set_kqueue_fds (line 376) | static int set_kqueue_fds(struct re *re, struct re_fhs *fhs)
  function poll_init (line 421) | static int poll_init(struct re *re)
  function poll_close (line 497) | static void poll_close(struct re *re)
  function poll_setup (line 534) | static int poll_setup(struct re *re)
  function fd_listen (line 573) | int fd_listen(struct re_fhs **fhsp, re_sock_t fd, int flags, fd_h *fh,
  type re_fhs (line 680) | struct re_fhs
  type re_fhs (line 680) | struct re_fhs
  type re (line 682) | struct re
  function fd_poll (line 739) | static int fd_poll(struct re *re)
  function fd_setsize (line 953) | int fd_setsize(int maxfds)
  function signal_handler (line 994) | static void signal_handler(int sig)
  function re_main (line 1017) | int re_main(re_signal_h *signalh)
  function re_cancel (line 1099) | void re_cancel(void)
  function re_debug (line 1120) | int re_debug(struct re_printf *pf, void *unused)
  function re_nfds (line 1156) | int re_nfds(void)
  function poll_method_get (line 1169) | enum poll_method poll_method_get(void)
  function poll_method_set (line 1185) | int poll_method_set(enum poll_method method)
  function re_thread_init (line 1246) | int re_thread_init(void)
  function re_thread_close (line 1279) | void re_thread_close(void)
  function re_thread_enter (line 1298) | void re_thread_enter(void)
  function re_thread_leave (line 1322) | void re_thread_leave(void)
  function re_thread_attach (line 1349) | int re_thread_attach(struct re *context)
  function re_thread_detach (line 1374) | void re_thread_detach(void)
  function re_set_mutex (line 1387) | void re_set_mutex(void *mutexp)
  function re_thread_check (line 1407) | int re_thread_check(bool debug)
  type tmrl (line 1443) | struct tmrl
  type re (line 1445) | struct re
  function re_thread_async_init (line 1463) | int re_thread_async_init(uint16_t workers)
  function re_thread_async_close (line 1487) | void re_thread_async_close(void)
  function re_thread_async (line 1509) | int re_thread_async(re_async_work_h *work, re_async_h *cb, void *arg)
  function re_thread_async_main (line 1539) | int re_thread_async_main(re_async_work_h *work, re_async_h *cb, void *arg)
  function re_thread_async_id (line 1570) | int re_thread_async_id(intptr_t id, re_async_work_h *work, re_async_h *cb,
  function re_thread_async_main_id (line 1602) | int re_thread_async_main_id(intptr_t id, re_async_work_h *work, re_async...
  function re_thread_async_cancel (line 1629) | void re_thread_async_cancel(intptr_t id)
  function re_thread_async_main_cancel (line 1647) | void re_thread_async_main_cancel(intptr_t id)
  function re_fhs_flush (line 1663) | void re_fhs_flush(void)

FILE: src/main/method.c
  function poll_method_best (line 24) | enum poll_method poll_method_best(void)
  type poll_method (line 50) | enum poll_method
  function poll_method_type (line 70) | int poll_method_type(enum poll_method *method, const struct pl *name)

FILE: src/
Condensed preview — 501 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,069K chars).
[
  {
    "path": ".clangd",
    "chars": 198,
    "preview": "If:\n  PathMatch: [include/.*\\.h]\nCompileFlags:\n  Add: [-Wall, -DHAVE_INTTYPES_H, -include re.h]\n  Remove: [-xobjective-c"
  },
  {
    "path": ".github/workflows/abi.yml",
    "chars": 1063,
    "preview": "name: ABI Checks\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  abicheck:\n    r"
  },
  {
    "path": ".github/workflows/android.yml",
    "chars": 2535,
    "preview": "name: Android\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\nenv:\n  openssl: 3.2.1\n  to"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 2076,
    "preview": "name: Build\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  build:\n    runs-on: "
  },
  {
    "path": ".github/workflows/clang-analyze.yml",
    "chars": 795,
    "preview": "name: clang analyze\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  clang-analyz"
  },
  {
    "path": ".github/workflows/cmake_win.yml",
    "chars": 2776,
    "preview": "name: Windows\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  build:\n    name: $"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 673,
    "preview": "name: \"CodeQL\"\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  analyze:\n    name"
  },
  {
    "path": ".github/workflows/coverage.yml",
    "chars": 1381,
    "preview": "name: Coverage\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  coverage:\n    run"
  },
  {
    "path": ".github/workflows/coverity.yml",
    "chars": 496,
    "preview": "name: Coverity Check\n\non:\n  push:\n    tags:\n      - \"*\"\n    branches:\n      - coverity\n    workflow_dispatch:\n\njobs:\n  c"
  },
  {
    "path": ".github/workflows/fedora.yml",
    "chars": 870,
    "preview": "name: Fedora\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  build:\n    runs-on:"
  },
  {
    "path": ".github/workflows/freebsd.yml",
    "chars": 585,
    "preview": "name: FreeBSD\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  build:\n    runs-on"
  },
  {
    "path": ".github/workflows/ios.yml",
    "chars": 689,
    "preview": "name: iOS\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  ios:\n    runs-on: maco"
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 457,
    "preview": "name: lint\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  lint:\n\n    runs-on: u"
  },
  {
    "path": ".github/workflows/mingw.yml",
    "chars": 2197,
    "preview": "name: MinGW-w64 Test\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  MinGW-w64-b"
  },
  {
    "path": ".github/workflows/musl.yml",
    "chars": 501,
    "preview": "name: Alpine (musl)\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  build:\n    r"
  },
  {
    "path": ".github/workflows/run-on-arch.yml",
    "chars": 1139,
    "preview": "on:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  build_job:\n    # The host should "
  },
  {
    "path": ".github/workflows/sanitizers.yml",
    "chars": 1440,
    "preview": "name: Sanitizers\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  sanitizers:\n   "
  },
  {
    "path": ".github/workflows/sonar.yml",
    "chars": 2099,
    "preview": "name: Sonarcloud\non:\n  push:\n    branches:\n      - main\n  workflow_dispatch:\n\njobs:\n  build:\n    name: Build\n    runs-on"
  },
  {
    "path": ".github/workflows/ssl.yml",
    "chars": 1017,
    "preview": "name: OpenSSL no-deprecated and LibreSSL\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n"
  },
  {
    "path": ".github/workflows/strict-c.yml",
    "chars": 866,
    "preview": "name: Strict C checks\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  strict-c:\n"
  },
  {
    "path": ".github/workflows/valgrind.yml",
    "chars": 737,
    "preview": "name: valgrind leak check\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n    - main\n\njobs:\n  valgri"
  },
  {
    "path": ".gitignore",
    "chars": 303,
    "preview": "/build*\n/dist\ntest.d\ntest.o\n*stamp\n*.previous\nlibre.a\nlibre.*dylib\nlibre.pc\nlibre.so*\n*.gcov\n\n# Windows build folder\nWin"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 126903,
    "preview": "# libre Changelog\n\nAll notable changes to libre will be documented in this file.\n\nThe format is based on [Keep a Changel"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 15259,
    "preview": "#\n# CMakeLists.txt\n#\n# Copyright (C) 2010 - 2025 Alfred E. Heggestad\n# Copyright (C) 2022 - 2025 Sebastian Reimers\n# Cop"
  },
  {
    "path": "LICENSE",
    "chars": 1666,
    "preview": "Copyright (C) 2020 - 2026, Baresip Foundation (https://github.com/baresip)\nCopyright (c) 2010 - 2024, Alfred E. Heggesta"
  },
  {
    "path": "Makefile",
    "chars": 994,
    "preview": ".PHONY: build\nbuild:\n\t[ -d build ] || cmake -B build\n\tcmake --build build --parallel\n\n.PHONY: ninja\nninja:\n\t[ -d build ]"
  },
  {
    "path": "README.md",
    "chars": 14229,
    "preview": "libre README\n============\n\n\nlibre is a Generic library for real-time communications with async IO support.\n\n- Copyright "
  },
  {
    "path": "cmake/FindMBEDTLS.cmake",
    "chars": 806,
    "preview": "find_path(MBEDTLS_INCLUDE_DIR\n    NAMES mbedtls/ssl.h mbedtls/md.h mbedtls/md5.h mbedtls/error.h\n          mbedtls/sha1."
  },
  {
    "path": "cmake/libre-config.cmake",
    "chars": 856,
    "preview": "if(\"@LIBRE_BUILD_STATIC@\")\n    include(CMakeFindDependencyMacro)\n    find_dependency(Threads)\n    if(\"@USE_OPENSSL@\")\n  "
  },
  {
    "path": "cmake/re-config.cmake",
    "chars": 6910,
    "preview": "#\n# re-config.cmake\n#\ninclude(CheckIncludeFile)\ninclude(CheckFunctionExists)\ninclude(CheckSymbolExists)\ninclude(CheckTyp"
  },
  {
    "path": "cmake/sanitizer.cmake",
    "chars": 656,
    "preview": "if(USE_SANITIZER STREQUAL \"address\")\n  set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -fsanitize=address\")\n  set(CMAKE_CXX_FLAGS \"$"
  },
  {
    "path": "docs/ChangeLog",
    "chars": 17916,
    "preview": "2019-09-07 Alfred E. Heggestad <alfred.heggestad@gmail.com>\n\n\t* Version 0.6.1\n\nAleksei (1):\n      Update MSVS project (R"
  },
  {
    "path": "docs/TODO",
    "chars": 224,
    "preview": "TODO\n\n-------------------------------------------------------------------------------\nVersion v0.x.y\n\n  tmr: scaling usi"
  },
  {
    "path": "docs/main.dox",
    "chars": 163,
    "preview": "/**\n * \\mainpage libre Development Documentation\n *\n * Development documentation for libre\n *\n * \n * \\include{doc} READM"
  },
  {
    "path": "include/re.h",
    "chars": 1392,
    "preview": "/**\n * @file re.h  Wrapper for all header files\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#ifndef RE_H__\n#define RE_H__\n"
  },
  {
    "path": "include/re_aes.h",
    "chars": 796,
    "preview": "/**\n * @file re_aes.h Interface to AES (Advanced Encryption Standard)\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n#ifndef"
  },
  {
    "path": "include/re_async.h",
    "chars": 461,
    "preview": "/**\n * @file re_async.h async\n *\n * Copyright (C) 2022 Sebastian Reimers\n */\n\n#ifndef RE_H_ASYNC__\n#define RE_H_ASYNC__\n"
  },
  {
    "path": "include/re_atomic.h",
    "chars": 30060,
    "preview": "/**\n * @file re_atomic.h  Atomic support\n *\n * Copyright (C) 2022 Sebastian Reimers\n */\n\n#ifndef RE_H_ATOMIC__\n#define R"
  },
  {
    "path": "include/re_av1.h",
    "chars": 2210,
    "preview": "/**\n * @file re_av1.h AV1 Open Bitstream Unit (OBU)\n *\n * Copyright (C) 2010 - 2022 Alfred E. Heggestad\n */\n\n\n/* OBU (Op"
  },
  {
    "path": "include/re_base64.h",
    "chars": 420,
    "preview": "/**\n * @file re_base64.h  Interface to Base64 encoding/decoding functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nint"
  },
  {
    "path": "include/re_bfcp.h",
    "chars": 7794,
    "preview": "/**\n * @file re_bfcp.h Interface to Binary Floor Control Protocol (BFCP)\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** "
  },
  {
    "path": "include/re_btrace.h",
    "chars": 855,
    "preview": "/**\n * @file re_btrace.h  Backtrace API\n *\n */\n#define BTRACE_SZ 16\n\nstruct btrace {\n\tvoid *stack[BTRACE_SZ];\n\tsize_t le"
  },
  {
    "path": "include/re_conf.h",
    "chars": 845,
    "preview": "/**\n * @file re_conf.h  Interface to configuration\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nstruct conf;\n\ntypedef int "
  },
  {
    "path": "include/re_convert.h",
    "chars": 1455,
    "preview": "/**\n * @file re_convert.h  Conversion helpers\n *\n * Copyright (C) 2022 Sebastian Reimers\n */\n#include <limits.h>\n\nstatic"
  },
  {
    "path": "include/re_crc32.h",
    "chars": 163,
    "preview": "/**\n * @file re_crc32.h  Interface to CRC-32 functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nuint32_t re_crc32(uint"
  },
  {
    "path": "include/re_dbg.h",
    "chars": 2614,
    "preview": "/**\n * @file re_dbg.h  Interface to debugging module\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#ifdef __cplusplus\nextern"
  },
  {
    "path": "include/re_dd.h",
    "chars": 2582,
    "preview": "/**\n * @file re_dd.h Dependency Descriptor (DD)\n *\n * Copyright (C) 2010 - 2023 Alfred E. Heggestad\n */\n\n\n/*\n * Put bits"
  },
  {
    "path": "include/re_dns.h",
    "chars": 5980,
    "preview": "/**\n * @file re_dns.h  Interface to DNS module\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nenum {\n\tDNS_PORT = 53,\n\tDNS_HE"
  },
  {
    "path": "include/re_fmt.h",
    "chars": 7073,
    "preview": "/**\n * @file re_fmt.h  Interface to formatted text functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n#include <stdarg"
  },
  {
    "path": "include/re_h264.h",
    "chars": 3804,
    "preview": "/**\n * @file re_h264.h Interface to H.264 header parser\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** NAL unit types */"
  },
  {
    "path": "include/re_h265.h",
    "chars": 2173,
    "preview": "/**\n * @file re_h265.h Interface to H.265 header parser\n *\n * Copyright (C) 2010 - 2022 Alfred E. Heggestad\n */\n\n\nenum {"
  },
  {
    "path": "include/re_hash.h",
    "chars": 1174,
    "preview": "/**\n * @file re_hash.h  Interface to hashmap table\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nstruct hash;\nstruct pl;\n\n\n"
  },
  {
    "path": "include/re_hmac.h",
    "chars": 845,
    "preview": "/**\n * @file re_hmac.h  Interface to HMAC functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nvoid hmac_sha1(const uint"
  },
  {
    "path": "include/re_http.h",
    "chars": 10743,
    "preview": "/**\n * @file re_http.h  Hypertext Transfer Protocol\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n/* forward declarations */"
  },
  {
    "path": "include/re_httpauth.h",
    "chars": 4322,
    "preview": "/**\n * @file re_httpauth.h  Interface to HTTP Authentication\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** HTTP digest "
  },
  {
    "path": "include/re_ice.h",
    "chars": 6066,
    "preview": "/**\n * @file re_ice.h  Interface to Interactive Connectivity Establishment (ICE)\n *\n * Copyright (C) 2010 Creytiv.com\n *"
  },
  {
    "path": "include/re_json.h",
    "chars": 1229,
    "preview": "/**\n * @file re_json.h  Interface to JavaScript Object Notation (JSON) -- RFC 7159\n *\n * Copyright (C) 2010 - 2015 Creyt"
  },
  {
    "path": "include/re_list.h",
    "chars": 3362,
    "preview": "/**\n * @file re_list.h  Interface to Linked List\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** Linked-list element */\ns"
  },
  {
    "path": "include/re_main.h",
    "chars": 2169,
    "preview": "/**\n * @file re_main.h  Interface to main polling routine\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include \"re_async.h"
  },
  {
    "path": "include/re_mbuf.h",
    "chars": 5213,
    "preview": "/**\n * @file re_mbuf.h  Interface to memory buffers\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n#include <stdarg.h>\n\n\n#if"
  },
  {
    "path": "include/re_md5.h",
    "chars": 365,
    "preview": "/**\n * @file re_md5.h  Interface to MD5 functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** MD5 values */\nenum {\n\tM"
  },
  {
    "path": "include/re_mem.h",
    "chars": 1788,
    "preview": "/**\n * @file re_mem.h  Interface to Memory management with reference counting\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n"
  },
  {
    "path": "include/re_mod.h",
    "chars": 1375,
    "preview": "/**\n * @file re_mod.h  Interface to loadable modules\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/**\n * @def MOD_EXT\n *\n "
  },
  {
    "path": "include/re_mqueue.h",
    "chars": 285,
    "preview": "/**\n * @file re_mqueue.h Thread Safe Message Queue\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\nstruct mqueue;\n\ntypedef voi"
  },
  {
    "path": "include/re_msg.h",
    "chars": 525,
    "preview": "/**\n * @file re_msg.h  Interface to generic message components\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** Content-Ty"
  },
  {
    "path": "include/re_net.h",
    "chars": 2640,
    "preview": "/**\n * @file re_net.h  Interface to Networking module.\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#if defined(WIN32)\n#incl"
  },
  {
    "path": "include/re_odict.h",
    "chars": 2184,
    "preview": "/**\n * @file re_odict.h  Interface to Ordered Dictionary\n *\n * Copyright (C) 2010 - 2015 Creytiv.com\n */\n\nenum odict_typ"
  },
  {
    "path": "include/re_pcp.h",
    "chars": 5359,
    "preview": "/**\n * @file re_pcp.h  PCP - Port Control Protocol (RFC 6887)\n *\n * Copyright (C) 2010 - 2014 Alfred E. Heggestad\n */\n\n\n"
  },
  {
    "path": "include/re_rtmp.h",
    "chars": 5337,
    "preview": "/**\n * @file re_rtmp.h  Interface to Real Time Messaging Protocol (RTMP)\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** "
  },
  {
    "path": "include/re_rtp.h",
    "chars": 14744,
    "preview": "/**\n * @file re_rtp.h  Interface to Real-time Transport Protocol and RTCP\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/**"
  },
  {
    "path": "include/re_rtpext.h",
    "chars": 1218,
    "preview": "/**\n * @file re_rtpext.h  Interface to RTP Header Extensions\n *\n * Copyright (C) 2010 - 2022 Alfred E. Heggestad\n */\n\n\n/"
  },
  {
    "path": "include/re_sa.h",
    "chars": 2265,
    "preview": "/**\n * @file re_sa.h  Interface to Socket Address\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#if defined(WIN32)\n#include <"
  },
  {
    "path": "include/re_sdp.h",
    "chars": 6864,
    "preview": "/**\n * @file re_sdp.h  Interface to Session Description Protocol (SDP)\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nenum {"
  },
  {
    "path": "include/re_sha.h",
    "chars": 806,
    "preview": "/**\n * @file re_sha.h  Interface to SHA (Secure Hash Standard) functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n/** S"
  },
  {
    "path": "include/re_shim.h",
    "chars": 393,
    "preview": "/**\n * @file re_shim.h  Interface to SHIM layer\n *\n * Copyright (C) 2015 - 2022 Alfred E. Heggestad\n */\n\n\n/* RFC 4571 */"
  },
  {
    "path": "include/re_sip.h",
    "chars": 17467,
    "preview": "/**\n * @file re_sip.h  Session Initiation Protocol\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n/* forward declarations */\n"
  },
  {
    "path": "include/re_sipevent.h",
    "chars": 3974,
    "preview": "/**\n * @file re_sipevent.h  SIP Event Framework\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/* Message Components */\n\nstr"
  },
  {
    "path": "include/re_sipreg.h",
    "chars": 1076,
    "preview": "/**\n * @file re_sipreg.h  SIP Registration\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\nstruct sipreg;\n\n\nvoid sipreg_unregi"
  },
  {
    "path": "include/re_sipsess.h",
    "chars": 3812,
    "preview": "/**\n * @file re_sipsess.h  SIP Session\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\nstruct sipsess_sock;\nstruct sipsess;\n\n/"
  },
  {
    "path": "include/re_srtp.h",
    "chars": 749,
    "preview": "/**\n * @file re_srtp.h Secure Real-time Transport Protocol (SRTP)\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nenum srtp_s"
  },
  {
    "path": "include/re_stun.h",
    "chars": 9453,
    "preview": "/**\n * @file re_stun.h  Session Traversal Utilities for (NAT) (STUN)\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** STUN"
  },
  {
    "path": "include/re_sys.h",
    "chars": 1599,
    "preview": "/**\n * @file re_sys.h  Interface to system module\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <stdio.h>\n\n#ifndef R"
  },
  {
    "path": "include/re_tcp.h",
    "chars": 3539,
    "preview": "/**\n * @file re_tcp.h  Interface to Transport Control Protocol\n *\n * Copyright (C) 2010 Creytiv.com\n */\nstruct sa;\nstruc"
  },
  {
    "path": "include/re_telev.h",
    "chars": 625,
    "preview": "/**\n * @file re_telev.h  Interface to Telephony Events (RFC 4733)\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\nenum {\n\tTELE"
  },
  {
    "path": "include/re_thread.h",
    "chars": 7535,
    "preview": "/**\n * @file re_thread.h  Thread support\n *\n * Inspired by C11 thread support this provides a cross platform interfaces "
  },
  {
    "path": "include/re_tls.h",
    "chars": 5277,
    "preview": "/**\n * @file re_tls.h  Interface to Transport Layer Security\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\nstruct tls;\nstruc"
  },
  {
    "path": "include/re_tmr.h",
    "chars": 2348,
    "preview": "/**\n * @file re_tmr.h  Interface to timer implementation\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n#include \"re_thread."
  },
  {
    "path": "include/re_trace.h",
    "chars": 2830,
    "preview": "/**\n * @file re_trace.h RE_TRACE helpers\n * JSON traces (chrome://tracing)\n */\n\nstruct pl;\nstruct mbuf;\n\ntypedef enum {\n"
  },
  {
    "path": "include/re_trice.h",
    "chars": 6927,
    "preview": "/**\n * @file re_trice.h  Interface to Interactive Connectivity Establishment (ICE)\n *\n * Copyright (C) 2010 Alfred E. He"
  },
  {
    "path": "include/re_turn.h",
    "chars": 1132,
    "preview": "/**\n * @file re_turn.h  Interface to TURN implementation\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** TURN Protocol va"
  },
  {
    "path": "include/re_types.h",
    "chars": 12652,
    "preview": "/**\n * @file re_types.h  Defines basic types\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <assert.h>\n#include <std"
  },
  {
    "path": "include/re_udp.h",
    "chars": 2543,
    "preview": "/**\n * @file re_udp.h  Interface to User Datagram Protocol\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nstruct sa;\nstruct "
  },
  {
    "path": "include/re_unixsock.h",
    "chars": 64,
    "preview": "\nint unixsock_listen_fd(re_sock_t *fdp, const struct sa *sock);\n"
  },
  {
    "path": "include/re_uri.h",
    "chars": 1746,
    "preview": "/**\n * @file re_uri.h  Interface to URI module\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** Defines a URI - Uniform Re"
  },
  {
    "path": "include/re_websock.h",
    "chars": 2493,
    "preview": "/**\n * @file re_websock.h  The WebSocket Protocol\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nenum {\n\tWEBSOCK_VERSION = 1"
  },
  {
    "path": "include/rem.h",
    "chars": 289,
    "preview": "/**\n * @file rem.h  Wrapper for librem headers\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#ifndef REM_H__\n#define REM_H__"
  },
  {
    "path": "include/rem_aac.h",
    "chars": 402,
    "preview": "/**\n * @file rem_aac.h Advanced Audio Coding\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** Defines the AAC header */\nst"
  },
  {
    "path": "include/rem_au.h",
    "chars": 648,
    "preview": "/**\n * @file rem_au.h Basic audio types\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** Audio formats */\nenum aufmt {\n\tAU"
  },
  {
    "path": "include/rem_aubuf.h",
    "chars": 2539,
    "preview": "/**\n * @file rem_aubuf.h Audio Buffer\n *\n * Copyright (C) 2010 Creytiv.com\n */\nstruct aubuf;\n\nenum aubuf_mode {\n\tAUBUF_F"
  },
  {
    "path": "include/rem_auconv.h",
    "chars": 406,
    "preview": "/**\n * @file rem_auconv.h Audio sample format conversion\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nvoid auconv_from_s16"
  },
  {
    "path": "include/rem_audio.h",
    "chars": 430,
    "preview": "/**\n * @file rem_audio.h  Wrapper for all Audio header files\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n#include \"rem_au"
  },
  {
    "path": "include/rem_aufile.h",
    "chars": 731,
    "preview": "/**\n * @file rem_aufile.h Audio File interface\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** Audio file mode */\nenum au"
  },
  {
    "path": "include/rem_auframe.h",
    "chars": 1540,
    "preview": "/*\n * Audio frame\n */\n\n#define AUDIO_TIMEBASE 1000000U\n\n/**\n * Defines a frame of audio samples\n */\nstruct auframe {\n\ten"
  },
  {
    "path": "include/rem_aulevel.h",
    "chars": 189,
    "preview": "\n\n/*\n * Audio-level\n */\n\n\n#define AULEVEL_UNDEF (-128.0)\n#define AULEVEL_MIN    (-96.0)\n#define AULEVEL_MAX      (0.0)\n\n"
  },
  {
    "path": "include/rem_aumix.h",
    "chars": 1511,
    "preview": "/**\n * @file rem_aumix.h Audio Mixer\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\nstruct aumix;\nstruct aumix_source;\n\n/**\n "
  },
  {
    "path": "include/rem_auresamp.h",
    "chars": 1089,
    "preview": "/**\n * @file rem_auresamp.h Audio Resampling\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n/**\n * Defines the audio resample"
  },
  {
    "path": "include/rem_autone.h",
    "chars": 236,
    "preview": "/**\n * @file rem_autone.h Audio Tones\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nint autone_sine(struct mbuf *mb, uint32"
  },
  {
    "path": "include/rem_avc.h",
    "chars": 530,
    "preview": "/**\n * @file rem_avc.h Advanced Video Coding\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nstruct avc_config {\n\tuint8_t pro"
  },
  {
    "path": "include/rem_dsp.h",
    "chars": 1658,
    "preview": "/**\n * @file rem_dsp.h DSP routines\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n#include <stdint.h>\n\n\n#if defined (HAVE_A"
  },
  {
    "path": "include/rem_dtmf.h",
    "chars": 524,
    "preview": "/**\n * @file rem_dtmf.h  DTMF Decoder\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\nstruct dtmf_dec;\n\n/**\n * Defines the DTM"
  },
  {
    "path": "include/rem_fir.h",
    "chars": 416,
    "preview": "/**\n * @file rem_fir.h  Finite Impulse Response (FIR) functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n/** Defines th"
  },
  {
    "path": "include/rem_flv.h",
    "chars": 917,
    "preview": "/**\n * @file rem_flv.h Flash Video File Format\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/*\n * Audio\n */\n\nenum flv_auco"
  },
  {
    "path": "include/rem_g711.h",
    "chars": 1222,
    "preview": "/**\n * @file rem_g711.h  Interface to G.711 codec\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nextern const uint8_t g711_l"
  },
  {
    "path": "include/rem_goertzel.h",
    "chars": 663,
    "preview": "/**\n * @file rem_goertzel.h  Goertzel algorithm\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n/** Defines the goertzel algor"
  },
  {
    "path": "include/rem_vid.h",
    "chars": 4027,
    "preview": "/**\n * @file rem_vid.h Basic video types\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n/** Pixel format */\nenum vidfmt {\n\tV"
  },
  {
    "path": "include/rem_vidconv.h",
    "chars": 380,
    "preview": "/**\n * @file rem_vidconv.h  Video colorspace conversion\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nvoid vidconv(struct v"
  },
  {
    "path": "include/rem_video.h",
    "chars": 195,
    "preview": "/**\n * @file rem_video.h  Wrapper for all Video header files\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n#include \"rem_vi"
  },
  {
    "path": "include/rem_vidmix.h",
    "chars": 1618,
    "preview": "/**\n * @file rem_vidmix.h  Video Mixer\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nstruct vidmix;\nstruct vidmix_source;\n\n"
  },
  {
    "path": "mk/Doxyfile",
    "chars": 8961,
    "preview": "# Doxyfile 1.4.7\n\n#---------------------------------------------------------------------------\n# Project related configu"
  },
  {
    "path": "packaging/CMakeLists.txt",
    "chars": 839,
    "preview": "set(CPACK_PACKAGE_NAME libre)\nset(CPACK_PACKAGE_CONTACT \"sreimers\")\nset(CPACK_PACKAGE_VENDOR baresip)\nset(CPACK_PACKAGE_"
  },
  {
    "path": "packaging/libre.pc.in",
    "chars": 339,
    "preview": "prefix=\"@CMAKE_INSTALL_PREFIX@\"\nexec_prefix=${prefix}\nlibdir=${prefix}/lib\nincludedir=${prefix}/include/re\n\nName: libre\n"
  },
  {
    "path": "rem/aac/aac.c",
    "chars": 1320,
    "preview": "/**\n * @file aac.c Advanced Audio Coding\n *\n * Copyright (C) 2018 Creytiv.com\n */\n\n#include <re_types.h>\n#include <rem_a"
  },
  {
    "path": "rem/au/fmt.c",
    "chars": 859,
    "preview": "/**\n * @file au/fmt.c  Audio formats\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re.h>\n#include <rem_au.h>\n\n\n/* N"
  },
  {
    "path": "rem/au/util.c",
    "chars": 504,
    "preview": "/**\n * @file util.c  Audio utility functions\n *\n * Copyright (C) 2022 Commend.com - c.spielberger@commend.com\n */\n\n#incl"
  },
  {
    "path": "rem/aubuf/ajb.c",
    "chars": 12811,
    "preview": "/**\n * @file ajb.c  Adaptive Jitter Buffer algorithm\n *\n * Copyright (C) 2022 Commend.com - c.spielberger@commend.com\n *"
  },
  {
    "path": "rem/aubuf/ajb.h",
    "chars": 511,
    "preview": "/**\n * @file ajb.h  Adaptive Jitter Buffer interface\n *\n * Copyright (C) 2022 Commend.com - c.spielberger@commend.com\n *"
  },
  {
    "path": "rem/aubuf/aubuf.c",
    "chars": 11632,
    "preview": "/**\n * @file aubuf.c  Audio Buffer\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#undef RE_TRACE_ENABLED\n#if AUBUF_TRACE\n#def"
  },
  {
    "path": "rem/auconv/auconv.c",
    "chars": 2345,
    "preview": "/**\n * @file auconv.c  Audio sample format converter\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <math.h>\n#include"
  },
  {
    "path": "rem/aufile/aufile.c",
    "chars": 5383,
    "preview": "/**\n * @file aufile.c  Audio File interface\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re.h>"
  },
  {
    "path": "rem/aufile/aufile.h",
    "chars": 563,
    "preview": "/**\n * @file aufile.h  Audio File -- internal API\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\nenum wavfmt {\n\tWAVE_FMT_PCM"
  },
  {
    "path": "rem/aufile/wave.c",
    "chars": 3607,
    "preview": "/**\n * @file wave.c  WAVE format encoding and decoding\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#inc"
  },
  {
    "path": "rem/auframe/auframe.c",
    "chars": 2525,
    "preview": "/**\n * @file auframe.c  Audio frame\n *\n * Copyright (C) 2010 - 2020 Alfred E. Heggestad\n */\n\n#include <string.h>\n#includ"
  },
  {
    "path": "rem/aulevel/aulevel.c",
    "chars": 2403,
    "preview": "/**\n * @file aulevel/aulevel.c  Audio level\n *\n * Copyright (C) 2017 Creytiv.com\n */\n\n#include <math.h>\n#include <re.h>\n"
  },
  {
    "path": "rem/aumix/aumix.c",
    "chars": 11629,
    "preview": "/**\n * @file aumix.c Audio Mixer\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#define _BSD_SOURCE 1\n#define _DEFAULT_SOURCE"
  },
  {
    "path": "rem/auresamp/resamp.c",
    "chars": 6707,
    "preview": "/**\n * @file resamp.c Audio Resampler\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <string.h>\n#include <re.h>\n#inc"
  },
  {
    "path": "rem/autone/tone.c",
    "chars": 2097,
    "preview": "/**\n * @file tone.c  Audio Tones\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <math.h>\n#include <re.h>\n#include <re"
  },
  {
    "path": "rem/avc/config.c",
    "chars": 2271,
    "preview": "/**\n * @file avc/config.c Advanced Video Coding -- Configuration record\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#inclu"
  },
  {
    "path": "rem/dtmf/dec.c",
    "chars": 3651,
    "preview": "/**\n * @file dtmf/dec.c  DTMF Decoder\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <re.h>\n#include <rem_goertzel.h"
  },
  {
    "path": "rem/fir/fir.c",
    "chars": 1294,
    "preview": "/**\n * @file fir.c FIR -- Finite Impulse Response\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <string.h>\n#include"
  },
  {
    "path": "rem/g711/g711.c",
    "chars": 41609,
    "preview": "/**\n * @file g711.c G.711 codec\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <re_types.h>\n#include <rem_g711.h>\n\n\n"
  },
  {
    "path": "rem/goertzel/goertzel.c",
    "chars": 906,
    "preview": "/**\n * @file goertzel.c  Goertzel algorithm\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <math.h>\n#include <re.h>\n"
  },
  {
    "path": "rem/vid/draw.c",
    "chars": 5352,
    "preview": "/**\n * @file draw.c Video Frame primitive drawing routines\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <string.h>"
  },
  {
    "path": "rem/vid/fmt.c",
    "chars": 1013,
    "preview": "/**\n * @file vid/fmt.c Video Formats\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <re.h>\n#include <rem_vid.h>\n\n\n/*"
  },
  {
    "path": "rem/vid/frame.c",
    "chars": 8679,
    "preview": "/**\n * @file frame.c Video Frame\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <string.h>\n#include <re.h>\n#include "
  },
  {
    "path": "rem/vidconv/vconv.c",
    "chars": 22894,
    "preview": "/**\n * @file vconv.c Video Conversion\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <string.h>\n#include <re.h>\n#inc"
  },
  {
    "path": "rem/vidmix/vidmix.c",
    "chars": 13515,
    "preview": "/**\n * @file vidmix.c Video Mixer\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#define _BSD_SOURCE 1\n#define _DEFAULT_SOURC"
  },
  {
    "path": "sonar-project.properties",
    "chars": 79,
    "preview": "sonar.projectKey=baresip_re\nsonar.organization=baresip\nsonar.cfamily.threads=2\n"
  },
  {
    "path": "src/aes/apple/aes.c",
    "chars": 2593,
    "preview": "/**\n * @file apple/aes.c  AES using Apple CommonCrypto API\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <string.h>"
  },
  {
    "path": "src/aes/openssl/aes.c",
    "chars": 4134,
    "preview": "/**\n * @file openssl/aes.c  AES (Advanced Encryption Standard) using OpenSSL\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#i"
  },
  {
    "path": "src/aes/stub.c",
    "chars": 954,
    "preview": "/**\n * @file aes/stub.c  AES stub\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re_types.h>\n#include <re_aes.h>\n\n\ni"
  },
  {
    "path": "src/async/async.c",
    "chars": 6568,
    "preview": "/**\n * @file async.c Async API\n *\n * Copyright (C) 2022 Sebastian Reimers\n */\n\n#include <re_types.h>\n#include <re_mem.h>"
  },
  {
    "path": "src/av1/depack.c",
    "chars": 695,
    "preview": "/**\n * @file av1/depack.c AV1 De-packetizer\n *\n * Copyright (C) 2010 - 2022 Alfred E. Heggestad\n */\n\n#include <string.h>"
  },
  {
    "path": "src/av1/obu.c",
    "chars": 5818,
    "preview": "/**\n * @file av1/obu.c AV1 Open Bitstream Unit (OBU)\n *\n * Copyright (C) 2010 - 2022 Alfred E. Heggestad\n */\n\n#include <"
  },
  {
    "path": "src/av1/pkt.c",
    "chars": 12949,
    "preview": "/**\n * @file av1/pkt.c AV1 Packetizer\n *\n * Copyright (C) 2010 - 2022 Alfred E. Heggestad\n */\n\n#include <string.h>\n#incl"
  },
  {
    "path": "src/base64/b64.c",
    "chars": 4061,
    "preview": "/**\n * @file b64.c  Base64 encoding/decoding functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re_types.h>\n#i"
  },
  {
    "path": "src/bfcp/attr.c",
    "chars": 14694,
    "preview": "/**\n * @file bfcp/attr.c BFCP Attributes\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re_types"
  },
  {
    "path": "src/bfcp/bfcp.h",
    "chars": 1378,
    "preview": "/**\n * @file bfcp.h Internal interface to Binary Floor Control Protocol (BFCP)\n *\n * Copyright (C) 2010 Creytiv.com\n */\n"
  },
  {
    "path": "src/bfcp/conn.c",
    "chars": 6996,
    "preview": "/**\n * @file bfcp/conn.c BFCP Connection\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re_types"
  },
  {
    "path": "src/bfcp/msg.c",
    "chars": 6212,
    "preview": "/**\n * @file bfcp/msg.c BFCP Message\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re_types.h>\n"
  },
  {
    "path": "src/bfcp/reply.c",
    "chars": 2344,
    "preview": "/**\n * @file bfcp/reply.c BFCP Reply\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re_types.h>\n"
  },
  {
    "path": "src/bfcp/request.c",
    "chars": 4461,
    "preview": "/**\n * @file bfcp/request.c BFCP Request\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re_types"
  },
  {
    "path": "src/btrace/btrace.c",
    "chars": 3730,
    "preview": "/**\n * @file btrace.c Backtrace API\n *\n * Copyright (C) 2023 Sebastian Reimers\n */\n\n#ifdef HAVE_UNISTD_H\n#include <unist"
  },
  {
    "path": "src/conf/conf.c",
    "chars": 6491,
    "preview": "/**\n * @file conf.c  Configuration file parser\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <sys/types.h>\n#include "
  },
  {
    "path": "src/crc32/crc32.c",
    "chars": 5967,
    "preview": "/**\n * @file crc32.c CRC32 Implementation\n *\n *  COPYRIGHT (C) 1986 Gary S. Brown.  You may use this program, or\n *  cod"
  },
  {
    "path": "src/dbg/dbg.c",
    "chars": 3586,
    "preview": "/**\n * @file dbg.c  Debug printing\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <stdio.h>\n#ifdef HAVE_UNISTD_H\n#inc"
  },
  {
    "path": "src/dd/dd.c",
    "chars": 9852,
    "preview": "/**\n * @file dd.c Dependency Descriptor (DD) -- decoder\n *\n * Copyright (C) 2023 Alfred E. Heggestad\n */\n\n#include <stri"
  },
  {
    "path": "src/dd/dd_enc.c",
    "chars": 5334,
    "preview": "/**\n * @file dd_enc.c Dependency Descriptor (DD) -- encoder\n *\n * Copyright (C) 2023 Alfred E. Heggestad\n */\n\n#include <"
  },
  {
    "path": "src/dd/putbit.c",
    "chars": 1544,
    "preview": "/**\n * @file putbit.c Put bits helper\n *\n * Copyright (C) 2023 Alfred E. Heggestad\n */\n\n#include <string.h>\n#include <re"
  },
  {
    "path": "src/dns/client.c",
    "chars": 26777,
    "preview": "/**\n * @file dns/client.c  DNS Client\n *\n * Copyright (C) 2010 Creytiv.com\n * Copyright (C) 2022 Sebastian Reimers\n */\n#"
  },
  {
    "path": "src/dns/cstr.c",
    "chars": 1131,
    "preview": "/**\n * @file cstr.c  DNS character strings encoding\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#includ"
  },
  {
    "path": "src/dns/darwin/srv.c",
    "chars": 1398,
    "preview": "/**\n * @file darwin/srv.c  Get DNS Server IP code for Mac OS X\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re_typ"
  },
  {
    "path": "src/dns/dname.c",
    "chars": 3890,
    "preview": "/**\n * @file dname.c  DNS domain names\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re_types.h>\n#include <re_fmt.h"
  },
  {
    "path": "src/dns/dns.h",
    "chars": 298,
    "preview": "/**\n * @file dns.h  Internal DNS header file\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n#ifdef HAVE_RESOLV\nint get_resol"
  },
  {
    "path": "src/dns/hdr.c",
    "chars": 3186,
    "preview": "/**\n * @file dns/hdr.c  DNS header encoding\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re_types.h>\n#include <re_"
  },
  {
    "path": "src/dns/ns.c",
    "chars": 1690,
    "preview": "/**\n * @file ns.c  DNS Nameserver configuration\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <stdio.h>\n#include <re"
  },
  {
    "path": "src/dns/res.c",
    "chars": 1616,
    "preview": "/**\n * @file res.c  Get DNS Server IP using resolv\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <sys/types.h>\n#incl"
  },
  {
    "path": "src/dns/rr.c",
    "chars": 17099,
    "preview": "/**\n * @file dns/rr.c  DNS Resource Records\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re_ty"
  },
  {
    "path": "src/dns/rrlist.c",
    "chars": 5558,
    "preview": "/**\n * @file rrlist.c  DNS Resource Records list\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <"
  },
  {
    "path": "src/dns/win32/srv.c",
    "chars": 2128,
    "preview": "/**\n * @file win32/srv.c  Get DNS Server IP code for Windows\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <winsock2"
  },
  {
    "path": "src/fmt/ch.c",
    "chars": 458,
    "preview": "/**\n * @file ch.c Character format functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re_types.h>\n#include <re"
  },
  {
    "path": "src/fmt/hexdump.c",
    "chars": 1030,
    "preview": "/**\n * @file hexdump.c  Hexadecimal dumping\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <ctype.h>\n#include <re_typ"
  },
  {
    "path": "src/fmt/pl.c",
    "chars": 16182,
    "preview": "/**\n * @file pl.c Pointer-length functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <ctype.h>\n#include <sys/typ"
  },
  {
    "path": "src/fmt/print.c",
    "chars": 19562,
    "preview": "/**\n * @file fmt/print.c Formatted printing\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <math."
  },
  {
    "path": "src/fmt/prm.c",
    "chars": 2379,
    "preview": "/**\n * @file prm.c Generic parameter decoding\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re_types.h>\n#include <r"
  },
  {
    "path": "src/fmt/regex.c",
    "chars": 4021,
    "preview": "/**\n * @file regex.c Implements basic regular expressions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <ctype.h>\n#i"
  },
  {
    "path": "src/fmt/str.c",
    "chars": 5120,
    "preview": "/**\n * @file fmt/str.c String format functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#undef __STRICT_ANSI__ /* for mi"
  },
  {
    "path": "src/fmt/str_error.c",
    "chars": 863,
    "preview": "/**\n * @file str_error.c System error messages\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re"
  },
  {
    "path": "src/fmt/text2pcap.c",
    "chars": 991,
    "preview": "#include <re_types.h>\n#include <re_fmt.h>\n#include <re_mbuf.h>\n#include <re_trace.h>\n#include <re_mem.h>\n\n\nint re_text2p"
  },
  {
    "path": "src/fmt/time.c",
    "chars": 3365,
    "preview": "/**\n * @file time.c  Time formatting\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#ifdef __MINGW32__\n#define _POSIX_C_SOURC"
  },
  {
    "path": "src/fmt/unicode.c",
    "chars": 3764,
    "preview": "/**\n * @file unicode.c  Unicode character coding\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <ctype.h>\n#include <r"
  },
  {
    "path": "src/h264/getbit.c",
    "chars": 2182,
    "preview": "/**\n * @file h264/getbit.c Generic bit parser\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <re_types.h>\n#include <"
  },
  {
    "path": "src/h264/h264.h",
    "chars": 87,
    "preview": "/**\n * @file h264/h264.h Internal interface\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n\n"
  },
  {
    "path": "src/h264/nal.c",
    "chars": 9320,
    "preview": "/**\n * @file h264/nal.c H.264 header parser\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <re_types.h>\n#include <re"
  },
  {
    "path": "src/h264/sps.c",
    "chars": 7282,
    "preview": "/**\n * @file h264/sps.c H.264 SPS parser\n *\n * Copyright (C) 2010 Creytiv.com\n */\n\n#include <string.h>\n#include <re_type"
  },
  {
    "path": "src/h265/nal.c",
    "chars": 4804,
    "preview": "/**\n * @file h265/nal.c H.265 header parser\n *\n * Copyright (C) 2010 - 2022 Alfred E. Heggestad\n */\n\n#include <re_types."
  },
  {
    "path": "src/hash/func.c",
    "chars": 3040,
    "preview": "/**\n * @file func.c  Hashmap functions\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <ctype.h>\n#include <re_types.h>"
  },
  {
    "path": "src/hash/hash.c",
    "chars": 4480,
    "preview": "/**\n * @file hash.c  Hashmap table\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <re_types.h>\n#include <re_mem.h>\n#i"
  },
  {
    "path": "src/hmac/apple/hmac.c",
    "chars": 1396,
    "preview": "/**\n * @file apple/hmac.c  HMAC using Apple API\n *\n * Copyright (C) 2010 - 2015 Creytiv.com\n */\n\n#include <string.h>\n#in"
  },
  {
    "path": "src/hmac/hmac.c",
    "chars": 1046,
    "preview": "/**\n * @file hmac/hmac.c  HMAC-SHA1\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string.h>\n#include <re_types.h>\n#"
  },
  {
    "path": "src/hmac/hmac_sha1.c",
    "chars": 4280,
    "preview": "/**\n * @file hmac_sha1.c  Implements HMAC-SHA1 as of RFC 2202\n *\n * Copyright (C) 2010 Creytiv.com\n */\n#include <string."
  }
]

// ... and 301 more files (download for full content)

About this extraction

This page contains the full source code of the baresip/re GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 501 files (2.7 MB), approximately 717.6k tokens, and a symbol index with 6524 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!