From 50d0aa50f71631c5cd566907ffeec4ee96e8a367 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Mon, 21 Jan 2019 15:07:26 -0200 Subject: [PATCH] Fixing hang on multiple connect/disconnect operations --- src/pw3270/actions.c | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/pw3270/actions.c b/src/pw3270/actions.c index a6638a1..1906439 100644 --- a/src/pw3270/actions.c +++ b/src/pw3270/actions.c @@ -67,7 +67,10 @@ static void do_lib3270_action(GtkAction *action, GtkWidget *widget) trace_action(action,widget); - call(v3270_get_session(widget)); + if(call(v3270_get_session(widget))) + { + g_message("Action \"%s\" failed: %s",gtk_action_get_name(action),strerror(errno)); + } } static void connect_action(GtkAction *action, GtkWidget *widget) @@ -77,7 +80,22 @@ static void connect_action(GtkAction *action, GtkWidget *widget) const gchar * colortype = (const gchar *) g_object_get_data(G_OBJECT(action),"colors"); // unsigned short colors; - trace_action(action,widget); +// trace_action(action,widget); + + lib3270_trace_event( + v3270_get_session(widget), + "Action %s activated on widget %p\nurl=%s\nsystype=%s\ncolortype=%s\n", + gtk_action_get_name(action), + widget, + (host ? host : "-"), + (systype ? systype : "-"), + (colortype ? colortype : "-") + ); + + /* + lib3270_trace_event( + v3270_get_session(widget),"Action %s activated on widget %p\n",gtk_action_get_name(a),w); + */ if(host) v3270_set_url(widget,host); @@ -88,14 +106,26 @@ static void connect_action(GtkAction *action, GtkWidget *widget) if(colortype) v3270_set_session_color_type(widget,atoi(colortype)); - host = v3270_get_hostname(widget); + host = lib3270_get_url(v3270_get_session(widget)); + + trace("host=%s",host); + if(host && *host) { - v3270_reconnect(widget); + if(v3270_reconnect(widget)) + { + lib3270_trace_event( + v3270_get_session(widget), + "Recconect has failed: %s", + strerror(errno) + ); + } return; } + lib3270_trace_event(v3270_get_session(widget),"No default host, opening dialog"); hostname_action(action,widget); + } static void disconnect_action(GtkAction *action, GtkWidget *widget) -- libgit2 0.21.2