Travis Cross [Wed, 11 Jun 2014 00:52:12 +0000 (00:52 +0000)]
Retry the cowbuilder create operation on failure
Sometimes while the debian repositories are updating there are
sporadic signature failures. It's annoying to have these break the
build, and the only thing to do is to retry, so we'll retry here
automatically. We were already retrying on the update operation that
can fail in a similar manner.
Travis Cross [Tue, 10 Jun 2014 23:36:56 +0000 (23:36 +0000)]
Check for execv(3) errors when reincarnating
When -reincarnate-reexec is given we run execv to restart FS. If
argv[0] isn't a full pathname then execv is going to fail. While not
common for a FS system started by init, this is a common occurrence
when FS is started from the shell.
Now if execv fails, we'll try execvp. If that fails too then we'll
fall back on the normal reincarnation behavior.
Previously what would happen in that case is god would descend from
the heavens and become mortal. Leaving heaven absent, all hope for
reincarnation was lost.
(That is, we'd simply return from reincarnate_protect and the
supervisor process would become the new instance of FS, so the trick
would only work once.)
Travis Cross [Tue, 10 Jun 2014 22:21:38 +0000 (22:21 +0000)]
Add fsctl command to summon reincarnation
If you start freeswitch with -reincarnate or -reincarnate-reexec, FS
will restart automatically in the event of an unexpected exit.
Currently, you can cause FS to immediately call exit(0) with `fsctl
shutdown now`, or you can have it call abort() with `fsctl crash`.
Which are both nice, but if you have reincarnation engaged, you really
might want FS to call exit([non-zero]) so the great supervisor
immediately breathes life back into your system.
This is now available via `fsctl shutdown reincarnate now`.
Travis Cross [Wed, 4 Jun 2014 16:04:20 +0000 (16:04 +0000)]
Improve a parameter name for fs_cli
What we momentarily called log-uuid-chars is now better called
log-uuid-length. Setting log-uuid-length will specify a truncation
length for UUIDs displayed by setting log-uuid.
Travis Cross [Wed, 4 Jun 2014 11:07:36 +0000 (11:07 +0000)]
Add log-uuid-short option to fs_cli
If log-uuid-short is set, or -S is passed to fs_cli, we only display
the first 8 hex digits of the UUID. The log-uuid-chars option may
instead be set to specify some other truncation length for the UUID.
Travis Cross [Tue, 13 May 2014 17:36:15 +0000 (17:36 +0000)]
Avoid polluting CFLAGS for mod_snmp
Putting `net-snmp-config --cflags` into CFLAGS causes major pollution;
it overrides optimization and debugging levels, warnings, and more.
While normally we do want to automatically locate library headers,
there has to be a better way to do this. libsnmp is normally in the
usual place and doesn't need special handling. Perhaps people with
libsnmp in a weird place should just need to add the -I flag to their
CFLAGS before build.
Travis Cross [Tue, 13 May 2014 17:27:46 +0000 (17:27 +0000)]
Cleanup makefile library dependencies of mod_snmp
Calling out to net-snmp-config --agent-libs causes transitive
dependencies to get pulled in, but we don't need those -- a sensible
dynamic linker pulls those in automatically. Trying to track the
transitive dependencies manually would be a losing battle.
People were recently hitting this on Debian sid/jessie, where libpci
is in the transitive dependency list but isn't otherwise one of our
build dependencies.
FS-6506 --resolve Technically when you are not using groups you do not add a <users> tag inside <domain> you just put several <user> tags in <domain> This patch will consume an extraneous <users> tag and move on making it work either way.
sofia is treating all notify sending as if they were natted rather than when nat is detected. This causes issues on some polycoms that use strange ports in their contact for getting notifies that do not match the port the calls come from
This seems to be a paradox when running a perl script from a session then executing perl again on the same session from a different thread.
I fixed it by converting any execution of perl in the execute_on_* family of operators to only run background mode which is to store the command in the session stack to be executed only by the session thread instead of on the spot by the outide thread. changing the execute_on_answer to perl::/path/to/script.pl would also eliminate the crash in code that has not been updated with this patch.
This is just a limitation of embedded perl we have to live with.
On start DTMF packets we were showing the last write timestamp as a
signed value when it's an unsigned value, which could result in it
appearing incongruous with later packets where the value was displayed
correctly.
Previously we would continue considering phrase actions even after
receiving a break action; we would only break on the next input
clause. It appears the intent here was to break before the next
action.
We were leaking memory when break_on_match was set or when we received
back SWITCH_STATUS_BREAK from a callee as we were failing to free
field_expanded_alloc.
I found a problem here but it may not completely match your expectations.
I reviewed the RFC 4028 and checked against the code and I discovered we should not be putting a Min-SE in any response at all besides a 422:
section 5:
The Min-SE header field MUST NOT be used in responses except for
those with a 422 response code. It indicates the minimum value of
the session interval that the server is willing to accept.
I corrected this problem and implemented the 422 response so if you request a value lower than the minimum specified for the profile.
If the value is equal or higher to the minimum, it will be reflected in the Session-Expires header in the response and no Min-SE will be present.
FS-5997 regression from commit 70accd9f272472ac2081283f1927d901b409acb6 this caused some attended transfers to calls with multiple targets to get the abondoned channels to be stuck on write lock
Suppress spurious warning in phrase macro playback
Prior to this commit, if anything at all went wrong in
switch_ivr_phrase_macro_event() we would generate a warning like this:
[WARNING] switch_ivr_play_say.c:348 Macro [macro_name]: 'pattern_name' did not match any patterns
This is clearly misleading. The natural thing to do on seeing that
message is to verify that the language files are there, and that the
pattern really does exist in that macro. But none of that was usually
the problem. The message would be generated if the language wasn't
found, or if the channel had gone away, for example.
With this commit, we verify that we actually tried looking for the
pattern before displaying the warning about the pattern not matching.
For years we've been generating spurious messages like:
[WARNING] switch_ivr_play_say.c:348 Macro [voicemail_ack]: 'saved' did not match any patterns
This would happen when the caller hangs up during the playback of
certain prompts in the voicemail system where we weren't checking the
return value of vm_macro_get(). Looking closely at the log, it's
clear we were calling down into switch_ivr_phrase_macro() long after
the channel was gone.
The message above is also misleading -- switch_ivr_phrase_macro()
would have been able to find that pattern just fine, but it never
actually looked because the channel was gone. We'll clean up that
message in a follow on commit.