diff --git a/src/lib3270/connect.c b/src/lib3270/connect.c index 3f4b8ed..2d4d68d 100644 --- a/src/lib3270/connect.c +++ b/src/lib3270/connect.c @@ -537,6 +537,7 @@ static void net_connected(H3270 *hSession, int fd, LIB3270_IO_FLAG flag, void *d } lib3270_disconnect(hSession); + lib3270_write_log(hSession,"connect", "%s",__FUNCTION__,strerror(ETIMEDOUT)); return ETIMEDOUT; } diff --git a/src/libpw3270cpp/remote.cc b/src/libpw3270cpp/remote.cc index d255e7c..24d214c 100644 --- a/src/libpw3270cpp/remote.cc +++ b/src/libpw3270cpp/remote.cc @@ -915,14 +915,13 @@ while(time(0) < end) { - static const dbus_int32_t delay = 2; - - int rc = query_intval("waitForReady", DBUS_TYPE_INT32, &delay, DBUS_TYPE_INVALID); + if(!is_connected()) + return ENOTCONN; - trace("waitForReady exits with rc=%d",rc); + if(is_ready()) + return 0; - if(rc != ETIMEDOUT) - return rc; + sleep(1); } return ETIMEDOUT; @@ -991,7 +990,7 @@ return 0; #elif defined(HAVE_DBUS) if(wait) - usleep(250); + sleep(1); return 0; #else return -1; diff --git a/src/libpw3270cpp/session.cc b/src/libpw3270cpp/session.cc index 45918ef..fdd15ba 100644 --- a/src/libpw3270cpp/session.cc +++ b/src/libpw3270cpp/session.cc @@ -632,7 +632,7 @@ } rc = connect(); - trace("%s: connect=%d",__FUNCTION__,rc); + trace("%s: connect=%d wait=%u",__FUNCTION__,rc,(unsigned int) wait); if(!rc && wait) { diff --git a/src/libpw3270cpp/testprogram.cc b/src/libpw3270cpp/testprogram.cc index 49776a4..5673a2d 100644 --- a/src/libpw3270cpp/testprogram.cc +++ b/src/libpw3270cpp/testprogram.cc @@ -48,6 +48,7 @@ cout << "pw3270 version: " << session->get_version() << endl; cout << "pw3270 revision: " << session->get_revision() << endl << endl; + /* if(session->is_connected()) cout << "\tConnected to host" << endl; else @@ -60,6 +61,7 @@ s = session->get_host_charset(); cout << "\tHost charset: " << s.c_str() << endl; + */ cout << "Connect: " << session->connect("fandezhi.efglobe.com:23",60) << endl << endl; @@ -69,6 +71,7 @@ cout << "\tIsReady: " << session->is_ready() << endl; cout << "\tString(3,2,14) " << session->get_string_at(3,2,14) << endl; + session->disconnect(); delete session; } diff --git a/src/plugins/dbus3270/gobject.c b/src/plugins/dbus3270/gobject.c index d12c367..0dd0853 100644 --- a/src/plugins/dbus3270/gobject.c +++ b/src/plugins/dbus3270/gobject.c @@ -342,7 +342,7 @@ void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBus void pw3270_dbus_is_connected(PW3270Dbus *object, DBusGMethodInvocation *context) { - trace("%s object=%p context=%p",__FUNCTION__,object,context); + trace("%s object=%p context=%p connected=%s",__FUNCTION__,object,context, lib3270_is_connected(pw3270_dbus_get_session_handle(object)) ? "Yes" : "No"); dbus_g_method_return(context,lib3270_is_connected(pw3270_dbus_get_session_handle(object))); } -- libgit2 0.21.2