Using a pointer array instead of a linked lists allows us to directly
reference a media section by index number, without having to spool into
the linked list.
No functional changes.
Change-Id: I8b0e93f0c2e9addbcb4c938894118ed4a6aec768
Require all callers of media_block_match() and play_media_select_party()
ot provide their own "flags" and do the cleanup of them afterwards.
Change-Id: I465696e899851dd98e714c5b0d55397a6dbd5dab
It substitutes a specified `a=` line taken from the concerned
media attributes list. If such line has been not found,
the attributes list remains untouched.
It subsitutes one attribute at a time, so one attribute into
another attribute.
Change-Id: Ie0a48ba46a1b196fbe33b09dedc40e4498640e34
Track audio writes in the mix buffer to set the `active` flag to true
whenever a write occurs, which makes it possible to create the buffer in
an inactivate state and implicitly set it active on demand.
Handle the mix buffer not returning any data in the RTP sending logic
(which is what happens for an inactive buffer) by simply not sending any
packets.
Change-Id: Iaeb0f6deadb3d90020c8c62872735cc94db80504
Similar to the existing media_player, but instead of simply producing
its own standalone output media stream, the audio_player takes over the
entire media stream flowing to the receiver, including media forwarded
from the opposite side of the call, as well as media produced by the
media_player.
Change-Id: Ic34ecf08fc73b04210cfffb1a7d795b462ece5ea
In order to improve the efficieny of the code (make lookups
faster) use GQueues for CMD_ADD manipulations and
GHashTable for CMD_REM manipulations.
This gives the following benefits:
- faster lookup (check), if any SDP command is to be applied
(no need to iterate through all values of commands, as it used to be)
- keep a sequence for CMD_ADD values given by option flag(s)
In order to keep the code more lightweight and clear,
add a separate struct ptr to queues and hash tables into
the call_interfaces header.
Change-Id: I7e45aca4062750c7b8959473edb410ed76cc04e7
New section of option flags has been introduced for SDP body
attributes manipulations.
Three levels of the SDP session are concerned:
- session level (global one)
- media level - audio
- media level - video
Three different actions are supported for now:
- add
- remove
The value of the command has a wildcard matching approach.
Other attributes apart `a=` can not be edited by this functionality.
So such headers as: `c=`, `s=`, `o=` cannot be touched.
Change-Id: I939d4582839096b2399f7ded865e91ff6eb960a4
(cherry picked from commit 3f06c18793fe95e5b070044a0291a3e1528ac6e4)
Perform accumulation of stats only once (i.e. increasing an actual
counter) and report stats based on differences to previous values,
instead of carrying multiple stats counters for each metric and
resetting each counter to zero whenever stats are reported.
`rtpe_stats` is the global master accumulator.
`_intv` variables are intermediate and local storage for values sampled
from `rtpe_stats` at regular intervals.
`_rate` and `_diff` variables hold stats calculated from `rtpe_stats`
and the respective `_intv` variable whenever the sampling and reporting
occurs.
`stats_counters_calc_diff` is used to calculate stats as differences
between `rtpe_stats` and the last sampled `_intv`
`stats_counters_calc_rate` does the same but calculates a per-second
rate, based on a microsecond duration.
Eliminate now-useless struct global_stats_ax
Change-Id: Ic4ca630161787025219b67e49b41995204d60573
As Redis updates must be triggered with the call unlocked, use a
convenience wrapper function to unlock, update, unref.
fixes#1602
Change-Id: I67095f31fb605b6977c88d9e9b3db581dd71a0d9
This is a new option flag, which provides a possiblity
to select specific crypto suite(s) for the offerer from
the given list of crypto suites received in the offer.
This will be used later on, when processing an answer from
the recipient and generating an answer to be sent out towards offerer.
Furthermore, this is being decided not when the answer is processed,
but already when the offer is processed.
Flag usage example:
`SDES-offerer_pref:AES_256_CM_HMAC_SHA;AES_256_CM_HMAC_SHA1_32;`
Change-Id: I2b22b38347d24f27331482e18b92305fbadb2520
This is a new option flag, which provides the ordered list,
in which to add crypto suites into the SDP body.
Right now they're always added in the order given in the source code.
Flag usage example:
`SDES-order:AES_256_CM_HMAC_SHA;AES_256_CM_HMAC_SHA1_32;AES_192_CM_HMAC_SHA1_80;`
This means — those listed SDES crypto suites will be added
into the generated SDP body at the top of crypto suites list, in the given order.
But, each of them is added, only if it is about to be added/generated.
In other words, the `SDES-order:` flag itself doesn't add crypto suites,
it just affects the order of those suites to be added.
And the rest of non-mentioned suites, which are also to be added,
will be appended after those given, in the free manner of ordering.
Important thing to remember - it doesn't change the crypto suite tag
for the recipient, even though changing the order of them.
Additionally.
This flag does not contradict with `SDES-nonew`, `SDES-only-` and `SDES-no-` flags.
It just orders the list of crypto suites already prepared to be sent out.
Change-Id: I0fec54f9e2f3cd4913e905e8afe825712f82d1ae
New helper func: call_ng_flags_str_q_multi()
It parses given flags delimited by a separator, and stores
each of them in the given GQueue.
By default delimiter is assumed as: ';'.
Change-Id: I1e29bf3d852868e2bc4d98b1775f70b38f61054a
Add a new flag to only accept these individual crypto suites
and none of the others.
For example, `SDES-only-NULL_HMAC_SHA1_32`
would only accept the crypto suite `NULL_HMAC_SHA1_32` for
the offer being generated.
This also takes precedence over the `SDES-no-` flag(s),
if used together, so the `SDES-no` will be not taken into account.
This has two effects:
- if a given crypto suite was present in a received offer,
it will be kept, so will be present in the outgoing offer; and
- if a given crypto suite was not present in the received offer,
it will be added to it. The rest, which is not mentioned,
will be dropped/not added.
Flag name: 'SDES-only-<crypto name>'
Additionally: add another new flag 'SDES-nonew'.
It will not add any new crypto suites into the offer.
It takes precedence over the `SDES-no` and `SDES-only` flags,
if used in combination.
Change-Id: Ic4fa03957ee3d4d24b0c4f3fd003eada05f49b0b
Add a flag to force increasing the SDP version,
even if the SDP hasn't been changed.
And cover it with tests.
Flag name: 'force-increment-sdp-ver'
Additionally fix the name of the 'sdp-version' flag
in the 'rtpengine-ng-client' tool.
Change-Id: I466792668b0cd313b5e21b248dd14cd599333cbd
Support multiple tone frequencies for DTMF-security=tone to enable
audibly distinguishing multiple consecutive DTMF events from one
another.
Change-Id: I6fa33a5768aae198220d0b0cc4c53308c5661a52
Legacy UDP/TCP control protocols don't provide information about RTP
payload types, therefore don't pretend that we know that this is RTP.
Setting the RTP flag without knowing the payload types has the undesired
side effect that unknown payload types (all of them) would not be
handled by the kernel module.
Change-Id: I5882f777a5912b912ec7c870f21c77aac8127600
This distinguishes `to-label` from `set-label` for media blocking
methods, when previously they were synonymous.
Upgrade sink determination to list at the same time.
Change-Id: I5b35c78f2f307867b51b5376d5a6afbd79128d99
Create a dedicated struct to hold certain attributes shared by both sink
handlers and media subscriptions, as a preparation to simplify handling
these attributs.
Change-Id: I866159c33ed6d6a2873d2cf68c4906ea705d253e
This makes it possible to refactor and simplify the interface functions,
as pointers and offsets can't be utilised with bit fields.
Change-Id: I70f1ac0eca7d2ccf8e8d5f5794580163f3f5b7ad
Since we're already doing the full parsing of the request flags, use the
same function to parse all required flags
Change-Id: I0880ccbbbc36eae7b172440ce51afc1c544583a1
SSRC entries might be present for the same SSRC in multiple contexts,
but only one of them will hold the actual stats. Don't create output
SSRC entries unless we know they won't be empty, as otherwise we won't
be able to create the actual SSRC entries (with stats) later on as they
dict key will already exist.
Change-Id: I54e263a17e14869ebb98456963f8ca75d11e9a89
Multiple untagged monologues can exist at the same time which would lead
to a broken bencode dictionary. Instead use a pseudo label to
distinguish them.
Change-Id: I0f41c42df8ec17c1c4fb5cc6451ea039612e505f
This restores backwards compatibility with existing code parsing the
output, e.g. Kamailio to report MOS stats.
Change-Id: Ibafb2a7a3cf118166ffe1cca9a62a06b63252944
commit d15fd4a547
Author: Damir Nedžibović <damir.nedzibovic@enreach.com>
Date: Tue Jul 6 14:07:42 2021 +0200
Also free the character data.
commit 8869187215
Author: Damir Nedžibović <damir.nedzibovic@enreach.com>
Date: Mon Jul 5 16:11:32 2021 +0200
Make documentation and parameters consistant.
commit 4b15aea2ee
Author: Damir Nedžibović <damir.nedzibovic@enreach.com>
Date: Thu Jun 10 15:34:00 2021 +0200
Update documentation.
commit 6ec1b3035d
Author: Damir Nedžibović <damir.nedzibovic@enreach.com>
Date: Thu Jun 10 15:33:12 2021 +0200
Do not use metadata for setting the recording file; use output_destination instead.
commit f65a76e8a3
Author: Damir Nedžibović <damir.nedzibovic@enreach.com>
Date: Wed Jun 9 15:56:02 2021 +0200
Only append file extension if skip_filename_extension is not set.
commit 92e9d7c679
Author: Damir Nedžibović <damir.nedzibovic@enreach.com>
Date: Wed Jun 9 14:12:48 2021 +0200
Rename the option to better match its usage.
commit 11128bff49
Author: Damir Nedžibović <damir.nedzibovic@enreach.com>
Date: Wed Jun 9 13:19:10 2021 +0200
Implement support for seting an output file and folder per recording.
Change-Id: I1579d62467eaf06a7aa1ac11e59dbb374f150deb
Complete overhaul of the codec handling code:
*) obsolete flags `asymmetric codecs`, `symmetric codecs`, `reorder
codecs`
*) support proper codec offer/answer
*) split codec manipulation (strip/offer/accept/etc) into separate
functions for clarity and better code maintenance
*) fully update codec handlers in both directions after an answer
*) explicit allocation and handling of codecs and payload types in a
codec_store object
*) improve codec matchup logic during answer
*) more explicit handling of supplemental codecs (CN/DTMF)
*) remove now obsolete hacks for handling certain use cases
Change-Id: I996705ba8fe339524c2f70e6bb0fd854f9a1f4fb
This solves problems when the same SSRC is looped through the same call
multiple times in different mono/dialogues, with different parameters.
Change-Id: I1d033cb1f012574d82b5bcbfffe11eb5f983cfd8
Additionally allow `except` and `offer` (and `transcode`) to revert
masked codecs.
Also adds `mask=full` and `strip=full`
closes#1054
Change-Id: I93a2891f2a0b9d324f6804e38f992be73c46211a
An endpoint switching protocols is normally passed through to the peer,
but in an answer that is usually not desirable. Change the default
behaviour to stick to the original protocol that was offered even if the
answerer changes protocols.
Change-Id: Ib288549f4b1c9ab57a6333c6b7dd511537af96f7
Useful when someone needs to:
- completely drop early media, but stop dropping after call is answered.
- completely drop initial invite media, but stop dropping after re-invite
Adds a new option ptime-reverse to complement setting of ptime towards
the offerer. This and ptime setting are now ignored in answers.
Change-Id: Icbc04f191cbc194b75b72a97832fcaba58feb10e
The from-tag may have been added to the message automatically, so we
should first check if any other flags are present, and use it only if
nothing else was found
Change-Id: Iec95d56812c31185ecd1171d01c922e7af0f5dd4
Codecs that were implicitly accepted for transcoding had no option to
set their parameters (such as bitrate) for encoding. The codec-set
option adds this.
fixes#681
Change-Id: Ib238eb73a507af168c366579abc80da07250fe88
To avoid repeated strcmp()s and make use of switch()'s optimised binary
lookup, we employ a second build step that preprocesses certain .c files
and uses gperf to substitute pseudomacros with their respective constant
hash value.
Change-Id: Id89c4728a0fc7aa911691d4dd1ba8e7b3916a983
closes#658
Squashed commit (plus docs and minor modification) of:
commit 4187cd3b2d
Author: Muhammad Zaka <muhammad.zaka@synety.com>
Date: Mon Nov 19 18:13:43 2018 +0000
removed unnecessary pad_crypto_def variable
commit 5c7b7c0ced
Author: Muhammad Zaka <muhammad.zaka@synety.com>
Date: Mon Nov 19 17:39:18 2018 +0000
add `pad-crypto` flag to not truncate trailing '==' after base64 encode
commit 98bea79902
Author: Muhammad Zaka <muhammad.zaka@synety.com>
Date: Fri Nov 16 10:59:47 2018 +0000
crypto containing padding should be sent within sdp for pass through
Change-Id: I1f7502f34e9492100e5c3a5a7345319ed996c22c
We should offer all crypto suites that we support. If passing through
SDES, we should amend the list of crypto suites with all additional ones
that we support that weren't included in the received offer.
closes#577
Change-Id: I9b6c16e8eadecf01cdbc8043bd8361e0f683e456
The redis onekey concepts is introduced to reduce traffic to redis
and redis notification traffic.
It modifies the current structure for one call in redis, which are
multiple keys with pre- and postfixes and the callid in between to
one key with the structure "json-<callid>". The value is a json
formatted string with the previous multi-key identifiers in it.
This flag can be used by the signaling proxy in order to tell rtpengine not to persist the call into Redis upon receiving offer/answer() control commands
Updating, freeing, and writing the recording metadata is now
threadsafe. This is in regards to the metadata that we receive from
the `rtpengine_offer` or `rtpengine_answer` commands, not the
`meta_fp` file.
We can simply use the `call->master_lock` variable for protecting
updates to the recording metadata. We had to move the metadata
handling code in call_interfaces.c up into the master_lock guarded
section. The code in "recording.c:meta_finish_file" is called with
master_lock protection already.
We write out what RTP packet number the SDP came before. When we receive
an SDP offer or answer, we write out the RTP packet number that the SDP
preceeded. This will let us split the RTP recording PCAP around SDP
renegotiation for things like hold/unhold.
Also write out whether the SDP was an offer or an answer.
We want to be able to match up the source and target <IP>:<PORT> with
the IP and port info sent in SDP. I adjusted the source and target
<IP>:<PORT> we write to the IP and UDP headers in the PCAP file.
I added the offer SDP (in addition to the already written answer SDP)
to the metadata file.
As a consequence of writing out the offer SDP, we will have empty PCAP
files and associated metadata files for calls that are never answered.
squash! Fixes to match PCAP packets with SDP
Added comments detailing the types of endpoint IP/port values we can
use.
We had initialization code for recording scattered through
"call_interfaces.c", "call.c", and "recording.c". I moved more of the
actual code into functions within recording.c under the parent function
`detect_setup_recording`. We call this function from "call_interfaces.c".
I moved the disjointed bit of PCAP initialization to occur right below
where we toggle recording on or off.
We record the answer SDP (not offer) to the metadata file, separeted by
newlines. It is after the PCAP file URL and before the timestamps. Maybe
we should be writing the rewritten SDP.
I refactored the handling of the "record-call" flag in the
"rtpengine_offer" and "rtpengine_answer" handler. We now set the
recording data structures in a function called `set_record_call`.
We also only handle "record-call" flags on OP_ANSWER for SDP answers.
When we receive an offer or an answer, we will only turn recording on if
it contains the "record-call=yes" flag. Likewise, we only turn recording
off if it contains the "record-call=no" flag. If no flag is specified,
the call keeps its current recording status. It used to be the case that
not specifying "record-call=yes" would turn off call recording.
This fix is necessary to account for SDP renegotiation during
hold/unhold. If the call system sends over another offer during SDP
renegotiation to hold and then unhold, we don't want to change recording
behavior unless the call system specifically says so.
We want to be able to associate call files with a call without the
presence of identifying metadata within the metadata file. To accomplish
this, we prepend the call-id to the start of the pcap recording files
and the call metadata files.
Even though call-id is supposed to be unique, because of paranoia we
keep some of the random affix hex string, but we reduced it down to an
8-byte random value.
Also, some minor argument ordering and name refactoring for random
string generation functions.
We used to sometimes free the generic metadata (passed in through
rtpengine commands) before writing it to disk. Then we were writing
blank metadata to our metadata files. We fixed the ordering of
our `free` operations.
This involved moving all code from fs.(c|h) to recording.(c|h).
We still spoof packets, so the UDP will look like all monologues are coming
over the same port and will probably look like they are all one stream if
you look at the PCAP file.
Command line option is "--recording-dir".
Renamed inner recording spool "recordings" to "pcaps".
This is to avoid name sharing conflicts with the "--recording-dir" command
line option, which specifies the recordings spool directory, and the
"$RECORDING_DIR/recordings" inner directory. Changing the inner directory
name to "pcaps" removes this name collision.
In the process, I changed the function names in fs.h to be consistent with
other functions. The names are structure like "$OBJECT_$VERB".
Fixes and changes:
- Only create the metadata file if the call is being recorded.
- Only write to the metadata file if we actually created it (NULL check).
- Make sure we have metadata before putting it on the call object
- Correctly overwrite recording metadata without leaking memory
- Set the no kernalization flag per call instead of for *every* packet.
- Logging cleanup.
Pass in "record-call" flag over `rtpengine_offer` or `rtpengine_answer`
message. RTP Engine tracks files used to record pcaps and send them back
in the response message.
Pipes call audio (unencrypted from both ends) to recording files.
Sets up file descriptors for local files to dump RTP recordings.
A file and a file descriptor per monologue in a call.
Recorded streams will be running in user daemon mode, not in kernel mode.
This removes first 12 octets from packet to record just the rtp.
- add --subscribe_keyspace list config parameter.
- don't delete foreign calls by timers
- fix synchronization of foreign calls (use a separate redis_notify database)
- fix statistics for control channel calls.
- fix deletion of foreign calls upon del notifications
- update rtpengine-ctl tool
Removes the explicit redis-read-db configuration and reduces the option
to one redis DB and one redis write DB. If only the redis DB is
configured, then it will be used for all operations. If both are
configured, then the redis DB will be used for reading and the write DB
will be used for writing (updates).
Change-Id: I8d5a32c53c9416b514c98d69c3afe7c547e530ad
The session limit is only for calls an rtpengine is responsible for.
Foreign calls (coming in via redis notification) are not counted as
long as the rtpengine is not responsible for those calls.
At least that means that the limit may exceed if the calls the rtpengine
is responsible for plus the former foreign calls are greater than the limit.
This will happen suddenly when the rtpengine becomes responsible for the
foreign calls.
Currently, every rtpengine will subscribe to redis-keyspace notification
so it will receive a notification when an call is inserted. If the call
is not already handeled by the rtpengine, the call will be restored.
The reason for this is to have in-place redundancy. Imagine you have
multiple rtpengines running, eachone will have all calls of the others.
When one rtpengine fails somehow, infrastructure guys use BGP in order to
'move' the IP address from one rtpengine to another. Thisone can handle
the new calls instantly since they're already recovered by
redis-notification feature.
Next step is internally identify those calls in order to prevent some
timers to delete the calls where no RTP flows. Second will be
something we call 'partitioning'. It means that the subscription
to a redis notify will only be for the keyspace a dedicated rtpengine
writes to. This leads to the point that you can make redundancy groups
(partitions) of the rtpengines.
This brings master up to date with branch `rfuchs/socket-rework` at
commit `b1bcc096b7`. The branches have diverged too much for a proper
merge, so this is a manual (squashed) merge.
The old master before this merge can be found in branch
`old-master-before-socket-rework` (commit `82199216b2`).
This is a complete rewrite of all socket handling routines. The most
important functional change is that sockets aren't indiscriminately
bound to INADDR_ANY (or rather in6addr_any), but instead are always
bound to their respective local interface address and with the correct
address family.
Side effects of this are that in multi-homed environments, multiple
sockets must be opened (one per interface address and family) which must
be taken into account when considering RLIMIT_NOFILE values. As a
benefit, this change allows rtpengine to utilize the full UDP port space
per interface address, instead of just one port space per machine.
The socket abstraction also makes it possible to support RTP over TCP in
the future.
Change-Id: If6cf4f42136229490186d2d2482fb4fc140c2b53
* 0 will allow 0 sessions (e.g. can be used for draining rtpengine)
* -1 will disable the feature and will be treated the same way as if
MAX_SESSIONS variable has not been set via configuration file
(or has been set to -1 in configuration file)
* < -1 will not be taken into consideration
* add check for minint range also
This enables switching over the endpoint of a dialogue to a new client
with potentially different capabilities
Change-Id: I973b3c5d004014cc73e6ebc3e87d03c742bc1951
(cherry picked from commit 69b7586aa4)
(cherry picked from commit 93332f0f6e)
use via-branches to predict different destinations for branched SDP
offers without knowing the respective to-tag ahead of time.
Squashed commit of the following:
commit 0e81dc98285d81cf8014034a698bc57e6af14c98
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu May 21 11:06:15 2015 -0400
fix segfault due to missing reverse tagging
commit cd7a26314b3406faac910897d96cd4d7586fc567
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu May 21 08:57:42 2015 -0400
support branched offer with previously unseen to-tag
commit 77da616dd2be230b03cc480ad6dd810b2742f5aa
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Apr 29 11:15:37 2015 -0400
implement via-branch handling
Squashed commit of the following:
commit 00213e66c74d402d2c3045eabeb5a10fa68f10c7
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 27 09:40:04 2015 -0500
perform ICE restart if we change ports
commit 27fbcbd6cbebdd071c1fa960c6e55f016534d171
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 15:58:12 2015 -0500
locking fixes
commit 60c1c5ae13b2c11720ee099daea1e3cdebea6317
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 15:58:06 2015 -0500
unkernelize when ICE completes
commit 1d816f9864ce31ea9a55a0bdf243a9900e597cdf
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 15:54:44 2015 -0500
relaxed locking where not needed
commit 75b58a9093d97daa5b2f4f8c1790f3b0f64117f8
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 11:46:08 2015 -0500
use atomic bitfield instead of bitfield+mutex
commit 03552eeed92aad419c1ad3cb9cfe5a7bded7f601
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 11:24:59 2015 -0500
shuffle around aux.h a bit more
commit b9b8a3aa5ef4d1a9026977465716fdbadf96917a
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 11:16:12 2015 -0500
remove some code redundancy through a "state machine"
commit 0b4bfef1b18b75e22611f18e510209c743708cd6
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 10:10:41 2015 -0500
reorder to match struct
commit a2a51d81a8f02dbb0fd8afe103ae0b0fa2a28dcf
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 10:10:03 2015 -0500
clear more states for ICE restart
commit d554a2b858dc3655d72d037a16c12e7eea243e1b
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 09:58:29 2015 -0500
dont duplicate candidates on re-invite
commit 4c804652b7985046d0214e4a90e67da9cce8fd03
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 09:58:20 2015 -0500
retain ICE role across re-invites
commit 4a586dd72d9f31ba87fb82e1e0e3602b467c252a
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 09:42:09 2015 -0500
eliminate duplicate log messages
commit ef0be2e308e1e3c3ce063afd2854e3fb749d813a
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 26 09:32:36 2015 -0500
fix incorrect log message
commit 2544b60f00b3b03fd64ac6e4b4e8ec20423b7745
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 15:26:48 2015 -0500
better logging for ICE agents
commit c42807384efa167afa08e10296b5177526efb9ba
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 15:18:27 2015 -0500
dont run ICE checks if we dont have a password
commit 1b56cb75b5912fd5aa6e3c66bf792e56f706d249
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 15:16:19 2015 -0500
ICE pairs should go in triggered queue only once
commit d10c56f3ae6172240c2a786fcacb14e5df177f13
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 14:04:00 2015 -0500
obsolete the ICE agent running flag
commit 52237e33995d8b6ff25e898daee7d46af37992ed
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 14:02:06 2015 -0500
cease checks once ICE is completed
commit 5332d18612d5c8e068590a6b4e708b969d385844
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 13:53:57 2015 -0500
fix ICE completion logging
commit 85f5fd63aa24998d206657cabeaf3fecbe4d187a
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 13:53:33 2015 -0500
make better use of bit flags
commit 796b48bb78601e98270c182e2ad60f1c5278091a
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 12:09:46 2015 -0500
improved learned candidate pairing and completion logic
commit d15561072e24a842e4fc7f074ec6ecadcf96cd8e
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 11:21:45 2015 -0500
support upper case transport strings
commit 557da7b1c39807bad119f23e57c4d31d77962103
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 10:43:57 2015 -0500
use struct endpoint in ice candidates
commit 951040bfd62eb52bccb091d99b7b8289ccef2cc9
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 10:31:13 2015 -0500
more meaningful ICE log messages
commit 8ec2426bd3101c4f381e95cd0686b6b1a6fec658
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 09:54:49 2015 -0500
shut down agent if no components - limit number of candidates
commit 149260f3a6eaa5f58a6f9071e0b05a18914b987d
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 25 09:44:13 2015 -0500
handle ICE restarts
commit 6a18c31f81ab94df1f5d5a701339b14be0e10ee5
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 16:29:01 2015 -0500
dont clear succeeded flag when nominating
commit 93e0861d0250f9190b16b14c3f4fe33a359d5d47
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 16:21:40 2015 -0500
use correct pwd in stun binding response
commit 32ba3ea406e30d168834f93d3e454d812820cf55
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 16:03:09 2015 -0500
use deterministic foundation for prflx cands
commit 2f2dc9151566d0bf2eebbaf02845718229be0e3d
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 15:21:13 2015 -0500
handle initial ICE role
commit a6b8ad25e6c326f2a0edda12db5dff910bc3d771
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 14:43:47 2015 -0500
another ICE scheduling fix
commit c572b04e55b695af28efed4fc4dc8c798989f02d
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 14:14:29 2015 -0500
make ICE aware of rtcp-mux
commit 93cd2d2560809f82e8ab9ffb2f5e2725fb439f4c
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 14:13:27 2015 -0500
print timestamp when logging to stderr
commit 22a52ffda2f21dba37c44c9e148a4cbe830be52e
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 14:13:13 2015 -0500
ICE scheduling fixes
commit 5d2d1a7739ef7d41514352fbf84deddcbd4500af
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 13:27:59 2015 -0500
increase ICE pwd length to make chrome happy
commit ceff6698db33fa7a4500cb94a4fa377a7629b8aa
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 13:09:54 2015 -0500
dont discard RTP if ICE hasnt finished yet
commit e809877d0ee0e7d60f3826be091c59145a2a9e19
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 13:06:31 2015 -0500
implement remote-candidates (untested)
commit 41670eadbbbe99a35a70158cf054b20a84c9c51b
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 11:58:13 2015 -0500
shut down ICE agent when everything fails
commit 1ca26c4a815c3f78b0c97cc6b5a5d794a64926f4
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 11:10:46 2015 -0500
fix up SDP output for ICE candidates
commit 0287d68f3330d9b2b7e61ea77ce9c77dec83d217
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 10:09:49 2015 -0500
process ICE completion and fire up DTLS if desired
commit 5b6386036b05f43ccbdbeb63ea49d8585498cfd0
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 09:37:52 2015 -0500
use a btree to schedule ice checks
commit 2bc25f1e0f5acee9262186a866fcc851d2e911ba
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 24 09:37:02 2015 -0500
convert shutdown condition into global var
commit ecf0c5587c62fcb39c8a67e510bcc7e6e3c10162
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Mon Feb 23 14:50:46 2015 -0500
replace poller_now with timeval g_now
commit 164ecdd7ac5d37641de32c98bba7db2e23446b91
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Mon Feb 23 13:00:15 2015 -0500
handle nominations if we're controlling
commit d013659365c33a3e802e1ec734dc45361531071d
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Mon Feb 23 12:11:40 2015 -0500
copy controlling/ed role into agent
commit 09f1cae14a2dd1aaf06b1c81ebe30ad198b96ec6
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Mon Feb 23 12:02:54 2015 -0500
separate nominated pairs from valid pairs
commit f75f338cded413617318288ceb6a664771e9434c
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Mon Feb 23 11:55:30 2015 -0500
organize aux.h into sections
commit d6acee1392a9cb34bd51524d11fc3d1e40f788cd
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Mon Feb 23 11:55:17 2015 -0500
use b-tree for various ICE lists
commit af9804d139cf50c6908ac760c9179685b3a872f0
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 16:21:09 2015 -0500
prepare to finalize ice processing
commit 18df118375cb30015f703cfbd9ed5c5020ff122e
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 16:19:50 2015 -0500
prettier logging
commit 280755c61a5e014422acfd45a30e98b2ec6b9efa
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 15:02:14 2015 -0500
implement unfreezing of other components on success
commit 5d13657d5b7a962ebbbd96677909ba49f59492dc
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 15:00:24 2015 -0500
bitfield access macros
commit 71746ad6a1171234adbb274ad67159a890c59c3c
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 14:15:05 2015 -0500
handle ice updates and duplicate candidates
commit 02309d1b5b39333778e04ef61b61be3ba81cb9d3
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 12:22:29 2015 -0500
handle role conflicts
commit 52acf54ba5b2fe694f647e828ab92b0bf82bdce1
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 10:24:01 2015 -0500
proper pair priorities calculation
commit 307af79e8d347d703b065c5c7b7b0321f1ca82fb
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 09:54:18 2015 -0500
fix address family mixups
commit 7cbfd4d36a21ad917974259bcb37c5cea340bf4e
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 20 09:14:49 2015 -0500
delay dtls startup and timeout checks while ice is running
commit 2a8ab752280ebf9961137414c88c6afbf03b0df2
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 19 16:47:56 2015 -0500
process ice/stun responses
commit 92da323dcff4f725e29ab378ede1aab68d9900a1
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 19 15:14:30 2015 -0500
adding stun server script for testing
commit c5cfeb122cc8503a8f4c901e279eac2932feb3f7
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 19 13:42:40 2015 -0500
act on stun requests, learn prflx candidates
commit 1cafd35e7a5105214aa4af5b03d14054f02c668e
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 19 13:30:14 2015 -0500
fix pktinfo for ipv4 packets
commit 8e338b842606a910a34a7ced09516a0cb097b449
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 19 11:48:55 2015 -0500
rework interface handling to prepare to learn ICE candidate
commit 09e365c1429d2a1d81126661df4749567f1e109d
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 18 16:24:42 2015 -0500
add some locking
commit 8fc7b75095d09f118a4febf1f3f7b75ed333751d
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 18 16:05:20 2015 -0500
extend logic in response to stun req and implement triggered checks
commit 35eeb04376c5a590f8fc42fcb1083a2fa7126e13
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 18 12:46:42 2015 -0500
handle ice/stun retransmits and timeouts
commit b5637565b659350fefb63034e4146ace8c6019b0
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 18 11:19:19 2015 -0500
first implementation of sending ICE checks
commit f0c1928c05a2c87fe23494367670207805c0b096
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 17 14:39:11 2015 -0500
preliminary list and loop for ICE checks
commit c38d6e22c18285a7fb87e5d7a00ac61cb5b7df02
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Tue Feb 17 12:00:24 2015 -0500
pair up candidates and prepare to run checks
commit d9559b4c5935ec602fdb801ecb0bd2158b39db65
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 13 15:36:29 2015 -0500
parse and remeber basic ICE attributes
Squashed commit of the following:
commit cca40e8e311e6884204289687ba2a05d0855720b
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Feb 12 10:17:51 2015 -0500
support per-payload-type stats in kernel module
commit dcc0dc0002bd552ae7c99aa58311af2f81336a8f
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 11 12:14:44 2015 -0500
count unknown rtp type as error
commit 941bde0df59720d1d3ef6660096cf2532a5c7e1c
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Feb 11 12:01:55 2015 -0500
use the list of rtp formats from the m= line
This avoids dynamically altering the rtpstats hash table and makes
keeping packet stats lock free.
commit 9150fed671d8490f4c09fb3050002c7c558391df
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 6 15:06:04 2015 -0500
fix and simplify rtpmap hash table
commit 1f73741cbf2ac7d6b8d0a54d9562e9a550678e7c
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Fri Feb 6 13:56:07 2015 -0500
MT#9935 understand, learn, remember and report RTP payload types (codecs)
commit b0d690837c02989485cf73927a89ed860a299807
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Thu Nov 20 13:36:25 2014 -0500
parse a=rtpmap attribute
Die from/to information wird irgendwann generell in den tag geschrieben.
die info, ob der tag ein from_tag oder to_tag ist, wurde hinzugefügt.
Author: Frederic-Philippe Metz <Frederic.Metz@1und1.de>
Hinzufügen der Adresse des SIP-Proxy, der die session erstellt hat
(sowohl für command line interface als auch CDR) Nur UDP control
zunächst.
Author: Frederic-Philippe Metz <Frederic.Metz@1und1.de>