Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPv6 link local support #106

Merged
merged 2 commits into from
Jul 15, 2021
Merged

IPv6 link local support #106

merged 2 commits into from
Jul 15, 2021

Conversation

cspiel1
Copy link
Collaborator

@cspiel1 cspiel1 commented May 28, 2021

In order to use an IPv6 link local address as destination address
for UDP/TCP packets, the sin6_scope_id needs to be set to the used network
interface.

This PR adds the support for IPv6 link local addresses for sip and http.

SIP calls to IPv6 link local addresses and answering calls from IPv6 link local remote will be possible.

@cspiel1 cspiel1 marked this pull request as draft June 7, 2021 09:56
@cspiel1 cspiel1 marked this pull request as ready for review June 7, 2021 13:46
src/net/net.c Outdated Show resolved Hide resolved
src/net/net.c Outdated Show resolved Hide resolved
src/net/net.c Outdated Show resolved Hide resolved
src/net/net.c Outdated Show resolved Hide resolved
@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jun 9, 2021

Should we add a unit test that collects local IP addresses?

include/re_sa.h Outdated
int sa_cpy_scopeid(struct sa *sa_dst, const struct sa *sa_src);
bool sa_is_ipv6ll(const struct sa *sa);
#endif

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should not use ifdefs in the public api, because it makes the ABI different depending on the ifdef.

on a side note, we should consider remove ifdef HAVE_INET6 and always have it compiled in.
ipv6 is today pretty much standard everywhere.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will remove this for the API functions. Completely removing the switch should be another PR.

include/re_sa.h Outdated
@@ -59,5 +59,12 @@ bool sa_is_linklocal(const struct sa *sa);
bool sa_is_loopback(const struct sa *sa);
bool sa_is_any(const struct sa *sa);

#ifdef HAVE_INET6
void sa_set_scopeid(struct sa *sa, int scopeid);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the scope_id is of type uint32_t in the posix api...

should we use the same ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, yes!

include/re_sa.h Outdated
#ifdef HAVE_INET6
void sa_set_scopeid(struct sa *sa, int scopeid);
int sa_scopeid(const struct sa *sa);
int sa_cpy_scopeid(struct sa *sa_dst, const struct sa *sa_src);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be baked into sa_cpy

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is already done via memcpy.
sa_cpy_scopeid() is needed to copy the scope ID of a local IPv6ll address to a destination IPv6ll address. As far as I know this selects the correct network interface. This has also be done if there is only one network interface where the scope ID is often 2 (not zero).

src/sa/sa.c Outdated
if (!sa)
return;

sa->u.in6.sin6_scope_id = scopeid;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the AF type must be checked here.

if the AF is not INET6, it will access the wrong element in the union

src/sa/sa.c Outdated
if (!sa)
return 0;

return sa->u.in6.sin6_scope_id;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also check AF here

src/sa/sa.c Outdated
}


bool sa_is_ipv6ll(const struct sa *sa)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure if this function is needed.

the check can be done in the application

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since it is used several times it reduces the code. Your next question could make it obsolete.

@@ -207,6 +211,30 @@ static int request(struct sip_request *req, enum sip_transp tp,
}


static int dst_set_scopeid(struct sa *dst, struct sip_request *req)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure if the application should have knowledge about scope id.

this should be done on a low-level like in sa or net

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The scope ID has to be copied from chosen laddr to the destination address. @juha-h and me have already thought about choosing the laddr in a very low level. But it has to be put into the SDP. So in order to make IPv6ll work:

  • We have a destination IPv6ll address.
  • Loop over all local IPv6ll addresses.
  • Copy scope ID from local address to destination address.
  • Test if there is a route from local to destination address.
  • The found laddr has to be put into the SDP.
  • Then the destination address has the correct scope ID.

@alfredh
Copy link
Contributor

alfredh commented Jun 10, 2021

for the sa api, I think only two functions are needed:

int sa_set_scopeid(struct sa *sa, uint32_t scope_id);
uint32_t sa_scopeid(const struct sa *sa);

the struct sockaddr_in6 type is public, so I am not sure they are needed at all...

@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jun 10, 2021

for the sa api, I think only two functions are needed:

int sa_set_scopeid(struct sa *sa, uint32_t scope_id);
uint32_t sa_scopeid(const struct sa *sa);

the struct sockaddr_in6 type is public, so I am not sure they are needed at all...

I would prefer the sa_cpy_scopeid. The getter is only to make debugging easier. It could be dropped. But if you prefer I could write:

sa_set_scopeid(dst, sa_scopeid(src));

instead of

sa_cpy_scopeid(dst, src);

@alfredh
Copy link
Contributor

alfredh commented Jun 11, 2021

the patch is a bit comprehensive, so I suggest to split up the patch into logical parts.

I would like to suggest a separate PR for the sa changes:

void     sa_set_scopeid(struct sa *sa, uint32_t scopeid);
uint32_t sa_scopeid(const struct sa *sa);

src/net/net.c Outdated
err = udp_connect(us, dst);
dsttmp = *dst;
if (!sa_port(&dsttmp))
sa_set_port(&dsttmp, 53);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont think we should hardcode port 53 (DNS) into the library

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is only a dummy connection, so no real traffic. Its only for setting up the socket. macOS refuses port 0 as destination port.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what if the routing table has different rules for port 53 and port 5060 ?

it would make sense to use the same port number as the application would use.

Copy link
Member

@sreimers sreimers Jun 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, but its only a fallback if the application does not provide a valid dst port. Maybe returning a error code for dst port 0 is a better option and let the application handle this case.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok. Then I drop this and will handle this in retest. And we have to solve this also in ua.c.

@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jun 11, 2021

the patch is a bit comprehensive, so I suggest to split up the patch into logical parts.

I would like to suggest a separate PR for the sa changes:

void     sa_set_scopeid(struct sa *sa, uint32_t scopeid);
uint32_t sa_scopeid(const struct sa *sa);

Here is the PR: #108

@alfredh
Copy link
Contributor

alfredh commented Jun 11, 2021

thanks!

can you please also rebase this patch on top of master ?

include/re_net.h Outdated
@@ -40,7 +40,8 @@ struct sa;

/* Net generic */
int net_hostaddr(int af, struct sa *ip);
int net_dst_source_addr_get(struct sa *dst, struct sa *ip);
int net_dst_source_addr_get(const struct sa *dst, struct sa *ip);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you please make this change into a separate PR ?

is it just changing the type from non-const to const ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now only making parameter dst to const. PR: #109

@alfredh
Copy link
Contributor

alfredh commented Jun 11, 2021

I would also like to suggest that we split the patch into logical parts;

  • linklocal for SIP
  • linklocal for HTTP

smaller patches are easier to review and test.
if we find an error later, it is also easier to revert.

@cspiel1 cspiel1 force-pushed the ipv6ll_support branch 2 times, most recently from 01e8c8f to b72938a Compare June 14, 2021 05:27
@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jun 14, 2021

Removed the HTTP changes.

@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jun 17, 2021

As result to @alfredh-s comment in the baresip PR

  • Squashed the whole PR into two simple commits. Should I make separate PRs also for libre?
  • Could set the IPv6 scope ID directly before the send operation in transp.c. Removed all other calls to sa_set_scopeid().

@cspiel1 cspiel1 force-pushed the ipv6ll_support branch 3 times, most recently from d319655 to 7f35901 Compare June 17, 2021 10:03
@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jun 17, 2021

Don't know how to fix this build problem.

Err:21 https://packages.microsoft.com/ubuntu/20.04/prod focal Release
25
  Could not connect to packages.microsoft.com:443 (40.74.238.15), connection timed out [IP: 40.74.238.15 443]

@sreimers
Copy link
Member

I triggered re-build

@sreimers sreimers added the enhancement New feature or request label Jun 24, 2021
sa_set_scopeid(&dsttmp, sa_scopeid(laddr));

if (net_dst_source_addr_get(&dsttmp, &src))
continue;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it so that the route check is only done for link-local ?

if so the baresip PR cannot really be applied, as it assumes that multiple addr
for all address types work.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, the route check is done for each laddr.

@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jul 1, 2021

@sreimers I fixed the test in retest branch ipv6ll_support. Please could you re-run the checks?!

@sreimers
Copy link
Member

sreimers commented Jul 1, 2021

Looks like it still failing under macOS, I'll take a closer look later.

@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jul 1, 2021

On OSX getaddrinfo() makes from

fe80:0001:0000:0000:0215:58ff:fe2d:90ab

this address

fe80:0000:0000:0000:0215:58ff:fe2d:90ab

The fist might also be invalid.

@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jul 1, 2021

I replaced the first commit in baresip/retest#20 which added an invalid IPv6ll address.

Is it possible that a successful retest build+checks initiates the checks of an associated re PR?

@sreimers
Copy link
Member

sreimers commented Jul 1, 2021

Is it possible that a successful retest build+checks initiates the checks of an associated re PR?

I re-build manually, looks good now. I will have a closer look on the github action event API, maybe there is a simple solution.

@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jul 1, 2021

thanks!

@cspiel1 cspiel1 force-pushed the ipv6ll_support branch 2 times, most recently from 4d794c6 to c07347e Compare July 7, 2021 07:21
@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jul 15, 2021

@alfredh Should we start with this PR in libre? It is already small and I added also tests as retest PR which are all green.
I suggest to review and keep the two commits like they are.

Should I put the two commits into separate PRs?

@alfredh
Copy link
Contributor

alfredh commented Jul 15, 2021

I suggest to merge it, if the code is working ..

@cspiel1
Copy link
Collaborator Author

cspiel1 commented Jul 15, 2021

Thanks, I rebase again and start the tests. If it becomes green, everything is ready for the merge.

@sreimers sreimers merged commit 82dd867 into baresip:master Jul 15, 2021
@cspiel1 cspiel1 deleted the ipv6ll_support branch July 16, 2021 12:12
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Jul 18, 2022
== [v2.5.0] - 2022-07-01

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

---

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

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

---

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

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

---

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

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

---

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

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

---

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

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

=== New Contributors
* @jimying made their first contribution in baresip/re#290

---

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

=== Fixes

* mk: fix ABI versioning [#268](baresip/re#268)

---

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

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

=== New Contributors
* @I-mpossible made their first contribution in baresip/re#119
* @viordash made their first contribution in baresip/re#136
* @ydroneaud made their first contribution in baresip/re#173
* @abrodkin made their first contribution in baresip/re#194
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request network
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants