Commit 50d0aa50f71631c5cd566907ffeec4ee96e8a367
1 parent
3f62a285
Exists in
master
and in
5 other branches
Fixing hang on multiple connect/disconnect operations
Showing
1 changed file
with
34 additions
and
4 deletions
Show diff stats
src/pw3270/actions.c
... | ... | @@ -67,7 +67,10 @@ static void do_lib3270_action(GtkAction *action, GtkWidget *widget) |
67 | 67 | |
68 | 68 | trace_action(action,widget); |
69 | 69 | |
70 | - call(v3270_get_session(widget)); | |
70 | + if(call(v3270_get_session(widget))) | |
71 | + { | |
72 | + g_message("Action \"%s\" failed: %s",gtk_action_get_name(action),strerror(errno)); | |
73 | + } | |
71 | 74 | } |
72 | 75 | |
73 | 76 | static void connect_action(GtkAction *action, GtkWidget *widget) |
... | ... | @@ -77,7 +80,22 @@ static void connect_action(GtkAction *action, GtkWidget *widget) |
77 | 80 | const gchar * colortype = (const gchar *) g_object_get_data(G_OBJECT(action),"colors"); |
78 | 81 | // unsigned short colors; |
79 | 82 | |
80 | - trace_action(action,widget); | |
83 | +// trace_action(action,widget); | |
84 | + | |
85 | + lib3270_trace_event( | |
86 | + v3270_get_session(widget), | |
87 | + "Action %s activated on widget %p\nurl=%s\nsystype=%s\ncolortype=%s\n", | |
88 | + gtk_action_get_name(action), | |
89 | + widget, | |
90 | + (host ? host : "-"), | |
91 | + (systype ? systype : "-"), | |
92 | + (colortype ? colortype : "-") | |
93 | + ); | |
94 | + | |
95 | + /* | |
96 | + lib3270_trace_event( | |
97 | + v3270_get_session(widget),"Action %s activated on widget %p\n",gtk_action_get_name(a),w); | |
98 | + */ | |
81 | 99 | |
82 | 100 | if(host) |
83 | 101 | v3270_set_url(widget,host); |
... | ... | @@ -88,14 +106,26 @@ static void connect_action(GtkAction *action, GtkWidget *widget) |
88 | 106 | if(colortype) |
89 | 107 | v3270_set_session_color_type(widget,atoi(colortype)); |
90 | 108 | |
91 | - host = v3270_get_hostname(widget); | |
109 | + host = lib3270_get_url(v3270_get_session(widget)); | |
110 | + | |
111 | + trace("host=%s",host); | |
112 | + | |
92 | 113 | if(host && *host) |
93 | 114 | { |
94 | - v3270_reconnect(widget); | |
115 | + if(v3270_reconnect(widget)) | |
116 | + { | |
117 | + lib3270_trace_event( | |
118 | + v3270_get_session(widget), | |
119 | + "Recconect has failed: %s", | |
120 | + strerror(errno) | |
121 | + ); | |
122 | + } | |
95 | 123 | return; |
96 | 124 | } |
97 | 125 | |
126 | + lib3270_trace_event(v3270_get_session(widget),"No default host, opening dialog"); | |
98 | 127 | hostname_action(action,widget); |
128 | + | |
99 | 129 | } |
100 | 130 | |
101 | 131 | static void disconnect_action(GtkAction *action, GtkWidget *widget) | ... | ... |