Check if parameters are defined instead of interpreting as booleans.

Fixes bug #359 "Yate.pm removes '0' values from all (even not handled) messages".
Patch by Vasily i. Redkin <vir@ctm.ru>


git-svn-id: http://voip.null.ro/svn/yate@5773 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2014-02-11 12:43:20 +00:00
parent fb687a8986
commit 02150d4631
1 changed files with 5 additions and 5 deletions

View File

@ -189,7 +189,7 @@ sub install($$$;$;$$) {
# filter-name and filter-value are optional. # filter-name and filter-value are optional.
if ($filter_name) { if ($filter_name) {
$filter_value = '' if (!$filter_value); $filter_value = '' unless defined $filter_value;
$query .= sprintf(':%s:%s', $self->escape($filter_name, ':'), $self->escape($filter_value, ':')); $query .= sprintf(':%s:%s', $self->escape($filter_name, ':'), $self->escape($filter_value, ':'));
} }
@ -426,7 +426,7 @@ sub param($$;$) {
return undef; return undef;
} }
if ($value) { if (defined $value) {
$self->{'params'}->{$key} = $value; $self->{'params'}->{$key} = $value;
} elsif (exists($self->{'params'}->{$key})) { } elsif (exists($self->{'params'}->{$key})) {
return $self->{'params'}->{$key}; return $self->{'params'}->{$key};
@ -525,7 +525,7 @@ sub return_message($$$) {
if (ref($self->params()) eq 'HASH') { if (ref($self->params()) eq 'HASH') {
while (my ($key, $value) = each(%{$self->params()})) { while (my ($key, $value) = each(%{$self->params()})) {
if ($key) { if ($key) {
$value = '' if (!$value); $value = '' unless defined $value;
$params .= ':' . $self->escape($key, ':') . '=' . $self->escape($value, ':'); $params .= ':' . $self->escape($key, ':') . '=' . $self->escape($value, ':');
} }
@ -590,7 +590,7 @@ sub message($$$;$;@) {
return 0; return 0;
} }
$return_value = '' if (!$return_value); $return_value = '' unless defined $return_value;
if (!$id) { if (!$id) {
$id = generate_id(); $id = generate_id();
@ -599,7 +599,7 @@ sub message($$$;$;@) {
my $params = ''; my $params = '';
while (my ($key, $value) = each(%params)) { while (my ($key, $value) = each(%params)) {
if ($key) { if ($key) {
$value = '' if (!$value); $value = '' unless defined $value;
$params .= ':' . $self->escape($key, ':') . '=' . $self->escape($value, ':'); $params .= ':' . $self->escape($key, ':') . '=' . $self->escape($value, ':');
} }
} }