From 2a12b812f491baec3b208f570c081f565ae136a0 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Wed, 6 Apr 2016 09:39:33 -0300 Subject: [PATCH] Indicador de SSL não estava atualizando em algumas situações. --- src/lib3270/host.c | 7 +++++++ src/lib3270/ssl.c | 22 +++++++++++----------- src/pw3270/v3270/oia.c | 2 ++ src/pw3270/v3270/widget.c | 20 +++++--------------- 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/lib3270/host.c b/src/lib3270/host.c index 41cad48..bfc4cf7 100644 --- a/src/lib3270/host.c +++ b/src/lib3270/host.c @@ -135,12 +135,19 @@ void lib3270_set_disconnected(H3270 *hSession) hSession->cstate = LIB3270_NOT_CONNECTED; hSession->starting = 0; + hSession->secure = LIB3270_SSL_UNDEFINED; set_status(hSession,OIA_FLAG_UNDERA,False); + lib3270_st_changed(hSession,LIB3270_STATE_CONNECT, False); + status_changed(hSession,LIB3270_MESSAGE_DISCONNECTED); + if(hSession->update_connect) hSession->update_connect(hSession,0); + + hSession->update_ssl(hSession,hSession->secure); + } /* Register a function interested in a state change. */ diff --git a/src/lib3270/ssl.c b/src/lib3270/ssl.c index e5b335e..fea99b0 100644 --- a/src/lib3270/ssl.c +++ b/src/lib3270/ssl.c @@ -418,16 +418,6 @@ void ssl_info_callback(INFO_CONST SSL *s, int where, int ret) #endif /*]*/ -LIB3270_EXPORT LIB3270_SSL_STATE lib3270_get_secure(H3270 *session) -{ - CHECK_SESSION_HANDLE(session); - - if(!lib3270_is_connected(session)) - return LIB3270_SSL_UNDEFINED; - - return session->secure; -} - LIB3270_EXPORT int lib3270_is_secure(H3270 *hSession) { return lib3270_get_secure(hSession) == LIB3270_SSL_SECURE; @@ -443,12 +433,22 @@ LIB3270_EXPORT long lib3270_get_SSL_verify_result(H3270 *hSession) return -1; } +LIB3270_EXPORT LIB3270_SSL_STATE lib3270_get_secure(H3270 *session) +{ + CHECK_SESSION_HANDLE(session); + + return session->secure; +} + void set_ssl_state(H3270 *session, LIB3270_SSL_STATE state) { + CHECK_SESSION_HANDLE(session); + if(state == session->secure) return; + session->secure = state; trace_dsn(session,"SSL state changes to %d\n",(int) state); - session->update_ssl(session,session->secure = state); + session->update_ssl(session,session->secure); } diff --git a/src/pw3270/v3270/oia.c b/src/pw3270/v3270/oia.c index bba95be..213e80f 100644 --- a/src/pw3270/v3270/oia.c +++ b/src/pw3270/v3270/oia.c @@ -1081,6 +1081,8 @@ void v3270_stop_timer(GtkWidget *widget) void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) { + debug("%s **************************************** %d",__FUNCTION__,(int) state); + v3270 * terminal = GTK_V3270(session->user_data); cairo_t * cr; GdkRectangle * r; diff --git a/src/pw3270/v3270/widget.c b/src/pw3270/v3270/widget.c index 584c2a7..c288e23 100644 --- a/src/pw3270/v3270/widget.c +++ b/src/pw3270/v3270/widget.c @@ -226,28 +226,22 @@ gboolean v3270_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboa { if(!lib3270_connected(GTK_V3270(widget)->host)) { -#if GTK_CHECK_VERSION(2,14,0) +#ifndef _WIN32 gtk_tooltip_set_icon_from_icon_name(tooltip,"gtk-disconnect",GTK_ICON_SIZE_MENU); -#else - gtk_tooltip_set_icon_from_stock(tooltip,GTK_STOCK_DISCONNECT,GTK_ICON_SIZE_MENU); #endif // GTK_CHECK_VERSION gtk_tooltip_set_markup(tooltip,_( "Identity not verified\nDisconnected from host" ) ); } else if(lib3270_get_secure(GTK_V3270(widget)->host) == LIB3270_SSL_UNSECURE) { -#if GTK_CHECK_VERSION(2,14,0) +#ifndef _WIN32 gtk_tooltip_set_icon_from_icon_name(tooltip,"dialog-information",GTK_ICON_SIZE_MENU); -#else - gtk_tooltip_set_icon_from_stock(tooltip,GTK_STOCK_INFO,GTK_ICON_SIZE_MENU); #endif gtk_tooltip_set_markup(tooltip,_( "Identity not verified\nThe connection is insecure" ) ); } else if(!lib3270_get_SSL_verify_result(GTK_V3270(widget)->host)) { -#if GTK_CHECK_VERSION(2,14,0) +#ifndef _WIN32 gtk_tooltip_set_icon_from_icon_name(tooltip,"gtk-dialog-authentication",GTK_ICON_SIZE_MENU); -#else - gtk_tooltip_set_icon_from_stock(tooltip,GTK_STOCK_DIALOG_AUTHENTICATION,GTK_ICON_SIZE_MENU); #endif gtk_tooltip_set_markup(tooltip,_( "Identity verified\nThe connection is secure" ) ); } @@ -258,10 +252,8 @@ gboolean v3270_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboa if(msg) { gchar *text = g_strdup_printf("%s\n%s",_("Identity not verified"),gettext(msg->text)); -#if GTK_CHECK_VERSION(2,14,0) +#ifndef _WIN32 gtk_tooltip_set_icon_from_icon_name(tooltip,msg->icon,GTK_ICON_SIZE_MENU); -#else - gtk_tooltip_set_icon_from_stock(tooltip,msg->icon,GTK_ICON_SIZE_MENU); #endif gtk_tooltip_set_markup(tooltip,text); g_free(text); @@ -269,10 +261,8 @@ gboolean v3270_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboa else { gchar *text = g_strdup_printf(_("SSL state is undefinedUnexpected SSL status %ld"),lib3270_get_SSL_verify_result(GTK_V3270(widget)->host)); -#if GTK_CHECK_VERSION(2,14,0) +#ifndef _WIN32 gtk_tooltip_set_icon_from_icon_name(tooltip,"dialog-error",GTK_ICON_SIZE_MENU); -#else - gtk_tooltip_set_icon_from_stock(tooltip,GTK_STOCK_DIALOG_ERROR,GTK_ICON_SIZE_MENU); #endif // GTK_CHECK_VERSION gtk_tooltip_set_markup(tooltip,text); g_free(text); -- libgit2 0.21.2