From 3138caa8ea9d5987f38f82ceaeba219f23ce2144 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Tue, 14 Jul 2020 14:05:22 -0300 Subject: [PATCH] Fixing bug on response parser. --- client/src/core/linux/request.cc | 17 +++++++++++++++++ client/src/session/remote/properties.cc | 13 ++++++++++++- client/src/testprogram/testprogram.cc | 2 ++ server/testscripts/introspect.sh | 7 +++++-- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/client/src/core/linux/request.cc b/client/src/core/linux/request.cc index b4b6ed3..8dbbb71 100644 --- a/client/src/core/linux/request.cc +++ b/client/src/core/linux/request.cc @@ -302,6 +302,17 @@ dbus_message_iter_get_basic(&iter, &rc); return (int) rc; + } else if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_UINT32) { + + dbus_uint32_t rc = 0; + dbus_message_iter_get_basic(&iter, &rc); + return (int) rc; + + } else if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_INVALID) { + + debug("Argument type is invalid"); + throw std::runtime_error("Invalid data type"); + } else if(dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_VARIANT) { DBusMessageIter sub; @@ -319,6 +330,12 @@ dbus_message_iter_get_basic(&sub, &rc); return (int) rc; + } else if (current_type == DBUS_TYPE_UINT32) { + + dbus_uint32_t rc = 0; + dbus_message_iter_get_basic(&sub, &rc); + return (int) rc; + } else if (current_type == DBUS_TYPE_INT16) { dbus_int16_t rc = 0; dbus_message_iter_get_basic(&sub, &rc); diff --git a/client/src/session/remote/properties.cc b/client/src/session/remote/properties.cc index 20f2701..5789eda 100644 --- a/client/src/session/remote/properties.cc +++ b/client/src/session/remote/properties.cc @@ -133,7 +133,18 @@ } void IPC::Session::setUnlockDelay(unsigned short delay) { - setAttribute("unlock_delay", (uint32_t) delay); + + int32_t rc = -1; + + Request(*this,true,"unlock_delay") + .push((uint32_t) delay) + .call() + .pop(rc); + + if(rc) { + throw std::system_error((int) rc, std::system_category()); + } + } void IPC::Session::setLockOnOperatorError(bool lock) { diff --git a/client/src/testprogram/testprogram.cc b/client/src/testprogram/testprogram.cc index 4edf4eb..42ac01e 100644 --- a/client/src/testprogram/testprogram.cc +++ b/client/src/testprogram/testprogram.cc @@ -131,6 +131,8 @@ << "\tConnected: " << host["Connected"] << std::endl; + host.setUnlockDelay(0); + host.setTimeout(10); host.connect(nullptr); cout diff --git a/server/testscripts/introspect.sh b/server/testscripts/introspect.sh index 013e748..eff58a8 100755 --- a/server/testscripts/introspect.sh +++ b/server/testscripts/introspect.sh @@ -1,7 +1,10 @@ #!/bin/bash + +PRODUCT_NAME=$(pkg-config --variable=product_name lib3270) + gdbus \ introspect \ --session \ - --dest=br.com.bb.$(pkg-config --variable=product_name lib3270).a \ - --object-path=/br/com/bb/tn3270/session + --dest=br.com.bb.${PRODUCT_NAME}.a \ + --object-path=/br/com/bb/${PRODUCT_NAME}/a -- libgit2 0.21.2