This is an automated email from the git hooks/post-receive script. intrigeri pushed a commit to branch experimental in repository libnet-dbus-perl.
commit d9c53a7ea26580f9f25bbf9b748412d3bb9d88f4 Author: Daniel P. Berrange <d...@berrange.com> Date: Mon Oct 17 21:28:01 2005 +0000 Make us relaxed about typing for incoming data, to play nicer with other languages --- lib/Net/DBus/Binding/Introspector.pm | 15 +++++++++------ lib/Net/DBus/Binding/Iterator.pm | 8 ++++++-- lib/Net/DBus/RemoteObject.pm | 4 ++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lib/Net/DBus/Binding/Introspector.pm b/lib/Net/DBus/Binding/Introspector.pm index 882429a..06a9121 100644 --- a/lib/Net/DBus/Binding/Introspector.pm +++ b/lib/Net/DBus/Binding/Introspector.pm @@ -16,7 +16,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# $Id: Introspector.pm,v 1.9 2005/10/15 13:31:42 dan Exp $ +# $Id: Introspector.pm,v 1.10 2005/10/17 22:28:01 dan Exp $ =pod @@ -697,22 +697,25 @@ sub decode { @{$self->{interfaces}->{$interface}->{$type}->{$name}} : @{$self->{interfaces}->{$interface}->{$type}->{$name}->{$direction}}; + # If there are no types defined, just return the + # actual data from the message, assuming the introspection + # data was partial. + return $message->get_args_list + unless @types; + my $iter = $message->iterator; - # XXX validate received message against instrospection data! my @rawtypes = $self->convert(@types); - return () unless @rawtypes; my @ret; do { - my $rawtype = shift @rawtypes; my $type = shift @types; - + my $rawtype = shift @rawtypes; + if (exists $magic_type_map{$type}) { push @ret, &$rawtype($message); } else { push @ret, $iter->get($rawtype); } } while ($iter->next); - return @ret; } diff --git a/lib/Net/DBus/Binding/Iterator.pm b/lib/Net/DBus/Binding/Iterator.pm index 90cbca9..c6d96dd 100644 --- a/lib/Net/DBus/Binding/Iterator.pm +++ b/lib/Net/DBus/Binding/Iterator.pm @@ -16,7 +16,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# $Id: Iterator.pm,v 1.11 2005/10/15 13:31:42 dan Exp $ +# $Id: Iterator.pm,v 1.12 2005/10/17 22:28:01 dan Exp $ =pod @@ -202,7 +202,11 @@ sub get { my $actual = $self->get_arg_type; if ($actual != $type) { - die "requested type '" . chr($type) . "' ($type) did not match wire type '" . chr($actual) . "' ($actual)"; + # "Be strict in what you send, be leniant in what you accept" + # - ie can't rely on python to send correct types, eg int32 vs uint32 + #die "requested type '" . chr($type) . "' ($type) did not match wire type '" . chr($actual) . "' ($actual)"; + warn "requested type '" . chr($type) . "' ($type) did not match wire type '" . chr($actual) . "' ($actual)"; + $type = $actual; } } else { $type = $self->get_arg_type; diff --git a/lib/Net/DBus/RemoteObject.pm b/lib/Net/DBus/RemoteObject.pm index ed5b1dd..840ea55 100644 --- a/lib/Net/DBus/RemoteObject.pm +++ b/lib/Net/DBus/RemoteObject.pm @@ -16,7 +16,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# $Id: RemoteObject.pm,v 1.15 2005/10/15 13:31:42 dan Exp $ +# $Id: RemoteObject.pm,v 1.16 2005/10/17 22:28:01 dan Exp $ =pod @@ -337,7 +337,7 @@ sub _call_method { send_with_reply_and_block($call, $timeout * 1000); my @reply; - if ($ins && 0) { # Delibrately disabled, since python wont tell us about return values + if ($ins) { @reply = $ins->decode($reply, "methods", $name, "returns"); } else { @reply = $reply->get_args_list; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libnet-dbus-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits