Commit Graph
100 Commits
Author SHA1 Message Date
Travis Cross 2184af8ea6 Remove explicit set of WorkingDirectory
In the systemd unit for FS/debian, if the WorkingDirectory is not set
then it defaults to '/'.  This is fine for FS, and is a common and
expected chdir choice for daemons.

We had previously set this to /run/freeswitch.  Due to Debian having
systemd-coredump(8) disabled, this was causing core files to be
written to /run/freeswitch, which is a bad place for them as it's
mounted on tmpfs.  So in commit cd68e0f we changed this to the log
directory /var/log/freeswitch.  That choice is a bit usual as well on
Debian.

It's better to leave FS as running on '/'.  This will prevent core
files from being written unless the user adjusts `sysctl
kernel.core_pattern`, which is a reasonable thing to expect if the
user wants these files.  Core files can be huge, and even having them
go to /var/log unexpectedly can be a problem.

When Debian adds the systemd-coredumps support this will all work
nicely and automatically.

ref: http://www.freedesktop.org/software/systemd/man/coredump.conf.html
ref: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=744964

References-commit: cd68e0fe1b

FS-7909
2015-09-22 05:34:15 +00:00
Travis Cross 16d0538fb5 Move chown of /etc/freeswitch/tls to postinst
Doing a chown of something in /etc/ as part of a systemd service file
is totally broken.  It's far too large a sledgehammer to point at /etc
here.  Someone may legitimately not be using /etc/freeswitch/tls in
his configuration, in which case this chown would fail and cause FS to
fail to start.  Or someone may legitimately need /etc/freeswitch/tls
to have different ownership, in which case we would clobber it here.

The right thing to do is to create this directory in the
postinst (which we already are, assuming there is not an existing
configuration) and then perform the chown of it at the same time.

FS-7697
2015-09-22 04:58:50 +00:00
Travis Cross 12e90ce989 Use systemd RuntimeDirectory for /run/freeswitch
This changes how we create the temporary directory /run/freeswitch
when starting FS with systemd.  The /run directory starts empty after
a system reboot, so we need to ensure this directory is present.

Originally for the FS systemd unit we created /run/freeswitch using
ExecStartPre and mkdir.  With commit adb5f0d this was changed to use
the tmpfiles.d(5) mechanism (but the ExecStartPre/mkdir code was not
removed).

As part of systemd.exec(5), systemd provides a mechanism to
automatically manage these directories under /run and to bind their
lifetime to the lifetime of the process.  This is actually what we
want here as compared to the more general tmpfiles.d(5) mechanism.

This commit moves to using the RuntimeDirectory= mechanism and removes
the obsolete ExecStartPre/mkdir code.

References-commit: adb5f0d278
2015-09-22 04:41:00 +00:00
Travis Cross 9cff1eb71f Cleanup non-semantic whitespace in debian/ 2015-09-15 22:36:23 +00:00
Travis Cross 9f99b12e76 Fix debian/bootstrap.sh from whitespace error
Commit e5d247d (packaging python-esl) added trailing whitespace to the
package definition.  Our trivial parser in the bootstrap script is
sensitive to this, so the change rather broke debian/bootstrap.sh.

This fixes commit e5d247df29.
2015-09-15 22:04:19 +00:00
Travis Cross 7f6f139fe5 Remove mod_celt and mod_vp8 remnants
Jeff added these directories back in commit 345e50d which causes our
debian/bootstrap.sh to add these back to debian/control-modules.
2015-06-17 19:35:13 +00:00
Travis Cross 0bc65d1547 Cleanup new module additions to debian
When the debian/control-modules file is properly ordered and
formatted, running (cd debian && ./bootstrap.sh) will result in no
changes to the debian/control-modules file and the
debian/control-modules.gen file being automatically deleted.  If there
is a debian/control-modules.gen file there, it should be used as a
start for a new debian/control-modules file after cleaning up the the
descriptions and adding long descriptions for each item.
2015-06-17 18:46:28 +00:00
Travis Cross 1d726c1d91 Fix docs on enabling cert CN/SAN validation
The correct incantations to enable certification common name / subject
alternative name verification, per our code, are `subjects_all`,
`subjects_in`, and `subjects_out` in a Sofia profile's
`tls-verify-policy`.  What we've had in our examples and documentation
for years are `all_subjects`, `in_subjects`, and `out_subjects`.

The result of this is that we've almost certainly confused people into
using the incorrect forms.  Those poor people will believe that they
are verifying the CN/SAN of the received host certificate against the
list in `tls-verify-in-subjects` when in fact they are not.

One clear issue in this case was that the incorrect forms failed to
have any effect without providing any warning or error.  This issue
could not have persisted if we had made more noise about incorrect
input.

Given how long this has been broken, it's tempting to alias the
incorrect forms to the correct ones.  However this would certainly
break many existing installations that have, because of this error,
never actually tested their setup with CN/SAN validation enabled.

In this commit, we fix the examples and documentation, and add an
error-level log output when unknown values are passed to
`tls-verify-policy`.

Thanks-to: Andrew Patrikalakis <anrp+freeswitch@anrp.net>
2015-06-17 17:10:29 +00:00
Travis Cross 2a05f8c39c Drop limit on stack size via systemd
Setting the 240k hard limit here is too aggressive and causes FS to
crash on startup.
2015-01-05 07:11:40 +00:00
Travis Cross 750b1dd807 Allow streaming binary data from mod_memcache
Previously data returned from `memcache get` would be truncated at the
first NULL byte.

By using raw_write_function here to stream the returned memcache
value, we allow mod_memcache to be used for audio and other arbitrary
binary data.

Dave has a format module planned that relies on this.

Thanks-to: Dave Olszewski <dolszewski@marchex.com>

FS-7114 #resolve
2014-12-28 00:42:01 +00:00
Travis Cross ffef746dcb Add .clang-format rules
ClangFormat is an attempt to build something like gofmt for C.

ref: http://clang.llvm.org/docs/ClangFormat.html
ref: http://clang.llvm.org/docs/ClangFormatStyleOptions.html
2014-12-26 17:22:20 +00:00
Travis Cross bca7216fdd Run dos2unix on mod_expr HTML files 2014-12-25 10:38:10 +00:00
Travis Cross 65e678ba1d Fix mod_expr clamp function
The clamp(v,a,b) function wraps v around the interval [a,b).

However prior to this commit, `clamp` was ignoring the third argument
and using the second argument again in its place.  This resulted in a
division by zero.  Hence `clamp` didn't work at all.

Even if the arguments were treated correctly, `clamp` incorrectly
multiplied rather than added whenever v < a.  This would have produced
bogus results.  (Thanks to Shona McNeill for pointing this out.)

Note that as implemented, `clamp` is undefined for b >= a.

These errors are present in the last upstream C version, v2.7.
They've been corrected in the C++ version that upstream now maintains
instead.

Thanks-to: Shona McNeill <prufrax@googlemail.com>

FS-7070 #resolve
2014-12-25 10:18:31 +00:00
Travis Cross d88bae1a62 Support optional debian parallel builds
With this commit we allow getting `make -jN` behavior by setting
`parallel=N` in `DEB_BUILD_OPTIONS`.  Setting `parallel=` will result
in `make -j` being run (i.e. no limit on the number of jobs).  The
default is to run one job at a time; this is still the safest bet when
building all modules.

Thanks to Peter Wu for suggesting a different way to do this.

ref: https://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
2014-12-25 07:13:17 +00:00
Travis Cross 430433a6d7 Improve error message 2014-12-25 04:19:05 +00:00
Travis Cross 0330b6fa6d Adjust code style of recent changes 2014-12-25 04:01:10 +00:00
Travis Cross 505cd2947a Refactor distro detection and handling 2014-12-25 03:58:49 +00:00
Travis Cross 3c8dd3e4df Handle missing lsb_release
The lsb-release package isn't a stated dependency and isn't present on
a minimal Debian install.
2014-12-25 03:51:30 +00:00
Travis Cross f1df8d6096 Allow setting CURL timeout from curl API command
Previously the `timeout` option to the curl API command set only
`CURLOPT_CONNECTTIMEOUT` -- the maximum amount of time that curl will
wait to connect to the server.  If the server accepted the connection
but then never replied, curl would wait essentially forever.  There
was no way to set `CURLOPT_TIMEOUT` -- the maximum amount of time the
entire request operation is allowed to take.

With this change, the `timeout` option sets `CURLOPT_TIMEOUT`.  We've
earlier added a `connect-timeout` option to set
`CURLOPT_CONNECTTIMEOUT`.

This is a change to existing behavior.  However, it's likely that this
is what people expected it to do all along.  The curl application
call, for example, accepts both `curl_connect_timeout` and
`curl_timeout` channel variables, with the latter setting
`CURLOPT_TIMEOUT`.

If people really were relying on this odd behavior, we'll rename the
option with the new behavior to something else and come up with a
transition plan.
2014-11-16 19:31:00 +00:00
Travis Cross 1ee325df48 Add connect-timeout option for curl API command
This option sets the maximum number of seconds that curl will wait to
connect with the server.

Right now this is a synonym for the `timeout` option.
2014-11-16 19:31:00 +00:00
Travis Cross 7b38b4f86b Avoid mod_shout on sid/jessie for now
On sid the build breaks on "undefined reference to symbol
'ogg_sync_init'".  We'll just avoid mod_shout on sid/jessie until this
is worked out.
2014-11-12 19:07:54 +00:00
Travis Cross ebb3c8fbfa Add mod_say_es_ar to debian packaging 2014-11-07 19:02:30 +00:00
Travis Cross 4b76c2aea9 Add mod_odbc_cdr to debian packaging 2014-11-07 19:02:30 +00:00
Travis Cross f4527d77cb Fix placement of build-dep for libsngtc-dev
Since we compare our generated control-modules to the one in tree, we
want to match the exact format we use to generate the file.
2014-11-07 19:02:30 +00:00
Travis Cross 070aaefaeb Fix whitespace inconsistency 2014-11-07 18:18:03 +00:00
Travis Cross b0050f519e Improve init error message when FS is unconfigured
Depending on which packages are installed, the README.Debian file
might not be there, so we'll spell out the instructions more directly.
2014-11-06 16:32:42 +00:00
Travis Cross 9bf834fe58 Handle debian's libtool-bin change
The libtool binary used to be contained in the libtool package.  As of
current sid/jessie the libtool package contains everything about
libtool but the libtool binary, and we need to install libtool-bin to
get the libtool binary itself.  Which is to say that Debian decided to
make the libtool package architecture-independent.

Without this commit the FS debian packaging will not build/bootstrap
on sid/jessie.
2014-10-30 00:25:43 +00:00
Travis Cross b5294c53d6 Fix crash on transport=tls with non-TLS profile
We use the transport of the Contact header of the remote UAC to decide
which of our own Contact addresses we should use when replying to a
SUBSCRIBE or sending a presence NOTIFY.

If TLS is not enabled on a Sofia profile, then the TLS Contacts for
that profile are NULL.  Unfortunately we were using these NULL values
uncritically when the remote UAC sent us a Contact header with a TLS
transport and our own Sofia profile did not have TLS enabled.

With this commit we fall back to our TCP Contact address when the
remote Contact is TLS and our Sofia profile does not have TLS enabled.
2014-10-10 18:36:37 +00:00
Travis Cross 63734bcde0 Add debian build option to include avoided modules
This is a convenience option that can be passed to either
debian/bootstrap.sh or to debian/util.sh to include a module in the
build that would normally be excluded.  This option, -p, can be passed
multiple times.
2014-10-08 20:45:20 +00:00
Travis Cross a8b68a14bc Add debian build option to use system sources.list
If -t is passed to debian/util.sh, then we will import the
/etc/apt/sources.list mirrors and all apt keys into the
pbuilder/cowbuilder build environment.

This is useful e.g. when the FS build depends on a library not
available in Debian yet.
2014-10-08 20:43:42 +00:00
Travis Cross 33b4eef596 Add debian build option to keep pbuilder image config
Normally we override the config of each pbuilder/cowbuilder image when
we update the image before using it for the build.  Passing this
option allows for using an existing cowbuilder image (assuming it's in
the correct location) with some existing desirable configuration.
2014-10-08 20:41:37 +00:00
Travis Cross b199aaad78 Add build-dep for mod_sangoma_codec
The packaging for libsngtc-dev is not yet in Debian.
2014-10-08 19:01:28 +00:00
Travis Cross 13d9e99ae7 Handle gcc quirk with parameter checking
At least some versions of GCC appear to take any -Wno-foo option
without error even if that option is not supported.  But they will
error out if -Wno-error=foo is used.  This sounds like a GCC bug, but
we'll work around it and test for the feature both ways.

Thanks-to: Matteo Brancaleoni <mbrancaleoni@voismart.it>

FS-6850 #resolve
2014-09-25 13:22:16 +00:00
Travis Cross 051772e4ae Add fs_cli option to disable use of history file
With this commit, passing -Q to fs_cli will cause fs_cli to not load
or save the command history file (~/.fs_cli_history).  This can be
useful e.g. on read-only systems.

This can also be set in the fs_cli configuration file with the option
`no-history-file`.
2014-09-25 11:07:49 +00:00
Travis Cross cd67dfc630 Add mod_cluechoo back to debian/control-modules
The debian/control-modules file is a comprehensive list of modules,
not a list of modules which are built.  Our build tools verify the
file is comprehensive, so modules can't be removed from here unless
we're taking them out of tree.

Partially revert "don't package mod_cluechoo and don't build/load by default"
This partially reverts commit e02e41a5c1.
2014-09-24 19:26:41 +00:00
Travis Cross 0cc7bc8db6 Add missing CURLOPT_NOSIGNAL options
To work correctly in a multi-threaded environment, curl needs to be
used with CURLOPT_NOSIGNAL set to 1.  If it's left at zero, the
default, then curl will use signals to deal with timeouts which will
often result in a crash.

ref: http://curl.haxx.se/libcurl/c/libcurl-tutorial.html#Multi-threading
ref: http://curl.haxx.se/libcurl/c/CURLOPT_NOSIGNAL.html
ref: http://stackoverflow.com/questions/9191668/error-longjmp-causes-uninitialized-stack-frame
ref: https://bugzilla.redhat.com/show_bug.cgi?id=539809
ref: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=570436
2014-09-23 00:04:21 +00:00
Travis Cross 4dc7f92aff Update document to HTTPS URLs 2014-09-19 06:38:35 +00:00
Travis Cross 10c8403689 Document guidelines for proposing a new module 2014-09-19 04:38:48 +00:00
Travis Cross 393c7c3e97 Update our contributor guidelines for PRs 2014-09-18 21:44:37 +00:00
Travis Cross b92ad9bbb5 Escape a literal pound for Markdown
Markdown treats this as an H1 otherwise.
2014-09-18 21:14:52 +00:00
Travis Cross b7b01d0144 Make example commit look like git log output
This makes it visually clearer what the reader is looking at and
highlights that we want a real name as the author name.
2014-09-18 21:10:18 +00:00
Travis Cross c166afb676 Use preformatted text for example commit message
We want to highlight that lines are hard wrapped in a commit message,
and using the typical Markdown blockquote syntax fails to achieve
that.
2014-09-18 21:09:58 +00:00
Travis Cross 1d80915637 Cleanup whitespace 2014-09-18 20:33:08 +00:00
Travis Cross 2ef2146a26 Refer to our contributor guidelines on git setup 2014-09-18 20:32:23 +00:00
Travis Cross 58110da870 Document policy against merges in a feature branch 2014-09-18 20:02:19 +00:00
Travis Cross 527016cdec Fix straggling reference to old commit hooks 2014-09-18 19:50:25 +00:00
Travis Cross 718e3c6583 Document our deviations from commit guidelines 2014-09-18 19:48:25 +00:00
Travis Cross 1379a2cc9f Document some guidelines for creating commits 2014-09-18 18:34:36 +00:00
Travis Cross 4016b93d4a Indicate we want a full name for git 2014-09-12 17:43:39 +00:00
Travis Cross 19e0de9049 Document how to setup git correctly 2014-09-12 17:42:25 +00:00
Travis Cross 3e8e2ce151 Revert commits pushed too early
Revert "depend on fs before install"
This reverts commit 6c52217920.

Revert "removing commented work in progress on SDES and logging tunning on"
This reverts commit 6df5288f5a.

Revert "more formatting and logging tuning"
This reverts commit 0e89bbd033.

Revert "logging adjustment"
This reverts commit 764faad671.

Revert "missing host to network conversion highest_sequence_number_received"
This reverts commit 50c62cdfd7.

Revert "logging correction"
This reverts commit ea973b0b4c.

Revert "[FS-6623] implement RTCP report generation"
This reverts commit 0b7863a9b7.
2014-09-12 17:07:50 +00:00
Travis Cross 5bd35471f7 Add var to suppress Privacy: none header
Apparently the MetaSwitch guys incorrectly interpret `Privacy: none`
as `Privacy: id`.

ref: RFC 3325

Reported-by: Stéphane Alnet <stephane@shimaore.net>

FS-6817 #resolve
2014-09-11 19:56:19 +00:00
Travis Cross 622e0e1a6f Check for null hash on increment of mod_hash limit
When we specifically release all limits on a channel we destroy the
hash table stored in the "limit_hash" private channel data but we
don't destroy the private data as it will be reclaimed as part of the
session.  If limit increment is called after the limit release we can
reuse that channel private, but we need to check whether the hash
table is null first.  Fortunately this makes the code look better
anyway.

FS-6775 #resolve
FS-6783 #resolve
2014-09-11 17:47:57 +00:00
Travis Cross bb84b0534c Check for libpq in core before building mod_cdr_pg_csv 2014-09-10 22:29:24 +00:00
Travis Cross eb7200bbe5 Avoid mod_java on Debian wheezy
We're already avoiding it on sid and jessie; now we're hitting build
failures with it on wheezy.

ref: FS-6811
2014-09-09 16:25:17 +00:00
Travis Cross 3382b805a5 Add mod_bert to debian packaging 2014-09-09 14:27:27 +00:00
Travis Cross c3d65e902d Merge in Moises Silva's mod_bert 2014-09-09 09:15:30 +00:00
Travis Cross c0ec552268 Set new cache_dir for debian 2014-09-04 21:09:46 +00:00
Travis Cross ad9381218d Remove stray leading slashes
ref: commit ce96d95c5e
2014-09-04 21:01:57 +00:00
Travis Cross 27e3b5b705 Name variable storage_dir
...rather than `storage`.

ref: commit ce96d95c5e
2014-09-04 20:57:28 +00:00
Travis Cross 57bd4eb9bd Add valet_park ... auto out ... to syntax string
FS-5992 #resolve
2014-09-04 20:40:53 +00:00
Travis Cross 5c29d8d4fa Show gateway uptime in seconds
In `sofia status gateway ...` let's show the uptime in seconds rather
than in microseconds.  We'll output the uptime in microseconds in
`xmlstatus` and we'll label it as such.
2014-09-04 05:39:26 +00:00
Travis Cross 5fadb52758 Fix build on gcc-4.9
GCC doesn't like when variables that are set but never used.
2014-09-04 03:43:36 +00:00
Travis Cross e79380c394 Catch more swig-generated files with gitattributes 2014-09-04 03:36:44 +00:00
Travis Cross 7d11e19983 Check for null hash or private while holding lock
What if the hash were destroyed by one thread holding the lock while
another thread was waiting for the lock?  The waiting thread would
have already checked that the hash was non-null and would proceed on
that assumption after acquiring the lock.

With this commit we check only after acquiring the lock.

ref: FS-6783
ref: FS-6775
2014-09-03 19:45:45 +00:00
Travis Cross 82a28e76e4 Re-fix memory leak
After consideration, this still looks correct.

Thanks-to: Anthony Minessale <anthm@freeswitch.org>

ref: FS-6783
ref: FS-6775
2014-09-03 19:44:43 +00:00
Travis Cross 8c0a1d17e2 Reintroduce memory leak in mod_hash to avoid crash
ref: commit 3e24b3e2c2
ref: FS-6783
ref: FS-6775
2014-09-03 18:16:11 +00:00
Travis Cross acb439ca03 Avoid leaking memory while iterating hash tables
`switch_core_hash_first` allocates an iterator on each call that is
never freed except when the hash table is empty.

By using `switch_core_hash_first_iter` we allocate only one iterator,
and that iterator is freed after the last item is processed.
2014-08-30 03:49:51 +00:00
Travis Cross 75836b603f Suppress diff output for swig-generated files 2014-08-30 03:22:59 +00:00
Travis Cross df559e0aac Add back goodness refactored out 2014-08-30 01:32:57 +00:00
Travis Cross 9481d9843c Fix comment spelling 2014-08-30 01:19:09 +00:00
Travis Cross 6f2eac6876 Fix comment spelling 2014-08-30 00:52:16 +00:00
Travis Cross 63f16425bd Refactor mod_hash limit_release_hash a bit 2014-08-29 21:44:04 +00:00
Travis Cross 1c058e0f45 Check gcc support for -Wno-unused-result
We're using -Wno-unused-result to work around what is arguably a GCC
bug, but this option is not supported on older GCC versions.  So on
those versions we won't pass -Werror either.

ref: commit b874048efc
2014-08-28 13:37:37 +00:00
Travis Cross 9dd7173b6e Avoid overaggressive chmod/chown on upgrade
It's reasonable for someone to change one or more of these directory
permissions after installation.  We shouldn't touch more than we need
on upgrade.  Each directory needs to be owned by the freeswitch user,
but past that we can leave discretion to the system administrator.
2014-08-28 12:24:44 +00:00
Travis Cross dc88617c99 Lower log level of limit increases and releases
In some configurations where many limits are used, the limit increases
and releases were generating a lot of noise and making it harder to
see when limits were exceeded, which was at the same log level.
2014-08-28 01:40:36 +00:00
Travis Cross 5a209a9680 Remove misleading tport example from configs
As an example of using mod_sofia's gateway parameter `contact-params`
we'd used the value `tport=tcp`.  Looking around, it's clear this has
misled people into believing you can specify `tport=tcp` to make the
gateway use TCP or `tport=tls` to make the gateway use TLS.  This does
not work.

The actual contact parameter is named `transport` rather than `tport`,
and you shouldn't use `transport` in `contact-params` because we
automatically add a `transport` to the Contact: based on the value of
`register-transport` (even if the gateway is set to not register).

It's clear why this would be confusing, so we'll just remove this as
an example.
2014-08-27 23:15:45 +00:00
Travis Cross 323a3d617c Avoid output of junk text by fs_cli
In some cases where `redisplay()` is called immediately after a
command is run (e.g. `log ...`) we often get a prompt, junk output,
and a second prompt.  This is due to a (known) race.

We believe we're falling afoul of this code in `el_deletestr`:

    if (el->el_line.cursor < &el->el_line.buffer[n])
            return;

Basing the length of text to delete off of the cursor position
resolves the issue of junk text, but the real solution is to eliminate
the race conditions, which will also resolve the sometimes duplicated
prompt.

FS-6764 #resolve

Thanks-to: Nathan Neulinger <nneul@neulinger.org>
2014-08-26 20:18:22 +00:00
Travis Cross b874048efc Handle gcc's overzealous unused-result warning
Modern static analyzers warn when a variable is set but not used.  GCC
warns when the result of a function marked as
`__attribute__((warn_unused_result))` is not set to some variable,
even when the function is cast to `(void)`, which is the recognized
way of indicating the intent to ignore the result.  We treat all
warnings as errors.

The combination of behaviors here makes it difficult if we really
don't care about the result of the function; the obvious workarounds
are precluded.

GCC's maintainers don't consider this to be a bug:

  Why do you think this is a bug?  warn_unused_result is for cases where
  "not checking the result is either a security problem or always a
  bug".

  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509#c1

GLIBC however marks functions like `read` and `write` with this
attribute.  While it certainly in most cases is correct to act on
their return value, in some cases we really just don't care.

So when we see that we're building with GCC, and that we're building
with all warnings enabled, we'll just pass -Wno-unused-result to
disable the warning.

ref: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509
ref: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2014-08-22 20:13:39 +00:00
Travis Cross aa1a05d0aa Help the static analyzer in handle_ice
Clang's static analyzer thinks we could be using `hosts` here when it
is NULL.  We probably weren't, but it's easy to see how it could think
so.  We were checking whether `from_addr` matched `ice->addr` three
times, and between the second on third time we might have modified the
`ice->addr`; however we only get there if it matched the second time,
so we could only make it not match at that point and avoid the third
branch.  We can't make it match where it did not before.

We'll simplify the logic a bit here so static analyzers (and humans)
can hopefully see this more readily.
2014-08-22 03:37:42 +00:00
Travis Cross 3c32dd3bc9 Return NULL from sub_alloc for zero size
When zero was passed for the size to `sub_alloc`, we were passing this
size on to `malloc` or `calloc`, which is unusual enough that static
analyzers warn about this (POSIX says that either NULL or a pointer
will be returned).

We'll instead just return NULL right away.
2014-08-22 02:47:04 +00:00
Travis Cross 959e672a94 Fix spelling "Couldnt" -> "Couldn't" 2014-08-22 02:19:45 +00:00
Travis Cross decc19ccd1 Handle zero channels when allocating for resampler
When the number of channels was zero, we were calling malloc with a
size of zero.  While defined, this is unusual.  And since we're
initializing the speex resampler as though there were one channel in
this case, we should probably just allocate the space for it.
2014-08-22 01:59:11 +00:00
Travis Cross 164fa133dc Refactor to avoid warning about realloc usage
Clang's static analyzer noticed the result of realloc was being
assigned to a pointer of a different type than was used to calculate
the new size.  We can make things simpler and more idiomatic here by
using the correct pointer type and letting C's pointer arithmetic
automatically handle some multiplication.

We also use the distributive property here to simplify the calculation
for memset.
2014-08-22 01:36:59 +00:00
Travis Cross 2cf6fd728c Remove dead assignments in switch.c 2014-08-22 01:21:43 +00:00
Travis Cross 4f81e5942a Handle null argv in switch.c 2014-08-22 01:09:05 +00:00
Travis Cross e2d67d4ead Remove dead assignment 2014-08-22 00:58:53 +00:00
Travis Cross b5a87aea7f Avoid using undefined memory in switch_fulldate_cmp
The `switch_split_date` and `switch_split_time` functions only set as
many variables as they believe exist values in the input string.
Since we didn't have defaults assigned we would read undefined stack
memory if the input string didn't contain e.g. an hour.

With this commit, we use 1970 if no year is present, January if no
month is present, the first day of the month if none is given, and
zero for each of a missing hour, minute, or second.
2014-08-22 00:47:22 +00:00
Travis Cross bf42dd65f1 Refactor switch_fulldate_cmp
We're moving the variable declarations down to the smallest possible
scope (a good idea in general) so we can address the use of undefined
memory by the function in a later commit.
2014-08-22 00:43:27 +00:00
Travis Cross b2f59dd200 Add warning when using HTTPS with mod_curl
mod_curl currently does not verify the authenticity of the peer's
certificate, and does not verify whether the common name on the
certificate matches the server.  This makes mod_curl initiated TLS
connections completely insecure.  We should fix this, but until we do,
we'll warn people that it's not doing what they may think it is.

ref: http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html
ref: http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html
2014-08-21 22:24:04 +00:00
Travis Cross 6d1469d2fb Describe how to hard-wrap text in Emacs 2014-08-21 20:37:08 +00:00
Travis Cross f2ca3c5211 Decode params to curl_sendfile
`curl_sendfile` generates a multipart message with Content-Type:
multipart/form-data with no separate Content-Type headers in the parts
for each non-file argument.  These parts therefore default to
text/plain.  However, prior to this commit, we were putting the URL
encoded POST data into these parts, which is not correct.  We should
be putting raw text into the parts.

With this commit, we urldecode each argument key and value before
composing the multipart message.

See:

  http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
2014-08-20 10:37:24 +00:00
Travis Cross 8d84aa25ec Cleanup whitespace 2014-08-13 19:29:03 +00:00
Travis Cross 8414c498cf Fix line endings per .gitattributes 2014-08-08 15:24:42 +00:00
Travis Cross 553979a250 Treat *-min.js files as minified for git 2014-08-01 16:59:11 +00:00
Travis Cross 2cb0d7901d Treat minified files as binary for git
This prevents e.g. `git log -p` from showing the content changes in
these files by default, which is what we want because line-oriented
diffs of these files are meaningless.
2014-08-01 16:54:19 +00:00
Travis Cross 5a7144c44a Add DELETE request support to mod_curl 2014-07-31 04:07:36 +00:00
Travis Cross 1933c7cb8a Fix build on Debian sid/jessie
Debian has packaged libpq version 9.4beta2.  We were parsing the minor
version as "4beta2" and then trying to treat it as a constant integer,
which obviously doesn't work.

There's not really a perfect way to handle versions like this, so
we'll just pretend it's 9.4.0.
2014-07-31 04:05:47 +00:00
Travis Cross 03c4014d0e Update bundled version of opus for debian 2014-07-23 16:10:04 +00:00
Travis Cross a537d80372 Add new module: mod_prefix
mod_prefix is an in-memory data store optimized for fast lookups
according to the longest prefix match (LPM) rule.

Tables of key-value string pairs in JSON format can be loaded at
startup via configuration and at runtime via the API.

The implementation uses a bitwise trie (aka binary prefix tree), so
arbitrary string keys are supported.
2014-07-22 15:28:31 +00:00