Commit 8a48b00257436ea165aa95edb46ce4f3ae8385da

Authored by perry.werneck@gmail.com
1 parent 9f587083

Melhorando negociação SSL

Showing 1 changed file with 16 additions and 7 deletions   Show diff stats
@@ -350,6 +350,8 @@ static void output_possible(H3270 *session); @@ -350,6 +350,8 @@ static void output_possible(H3270 *session);
350 #define SOCK_IOCTL ioctl 350 #define SOCK_IOCTL ioctl
351 #endif /*]*/ 351 #endif /*]*/
352 352
  353 +
  354 +
353 355
354 #if defined(_WIN32) /*[*/ 356 #if defined(_WIN32) /*[*/
355 void sockstart(H3270 *session) 357 void sockstart(H3270 *session)
@@ -768,7 +770,7 @@ static void net_connected(H3270 *session) @@ -768,7 +770,7 @@ static void net_connected(H3270 *session)
768 if (SSL_set_fd(session->ssl_con, session->sock) != 1) 770 if (SSL_set_fd(session->ssl_con, session->sock) != 1)
769 { 771 {
770 trace_dsn("Can't set fd!\n"); 772 trace_dsn("Can't set fd!\n");
771 - popup_system_error(&h3270,_( "Connection failed error" ), _( "Can't set SSL socket file descriptor" ), "%s", SSL_state_string_long(session->ssl_con)); 773 + popup_system_error(&h3270,_( "Connection failed" ), _( "Can't set SSL socket file descriptor" ), "%s", SSL_state_string_long(session->ssl_con));
772 } 774 }
773 775
774 non_blocking(False); 776 non_blocking(False);
@@ -3284,12 +3286,13 @@ static void ssl_init(H3270 *session) @@ -3284,12 +3286,13 @@ static void ssl_init(H3270 *session)
3284 /* Callback for tracing protocol negotiation. */ 3286 /* Callback for tracing protocol negotiation. */
3285 static void client_info_callback(INFO_CONST SSL *s, int where, int ret) 3287 static void client_info_callback(INFO_CONST SSL *s, int where, int ret)
3286 { 3288 {
3287 - if (where == SSL_CB_CONNECT_LOOP) 3289 + switch(where)
3288 { 3290 {
  3291 + case SSL_CB_CONNECT_LOOP:
3289 trace_dsn("SSL_connect: %s %s\n",SSL_state_string(s), SSL_state_string_long(s)); 3292 trace_dsn("SSL_connect: %s %s\n",SSL_state_string(s), SSL_state_string_long(s));
3290 - }  
3291 - else if (where == SSL_CB_CONNECT_EXIT)  
3292 - { 3293 + break;
  3294 +
  3295 + case SSL_CB_CONNECT_EXIT:
3293 if (ret == 0) 3296 if (ret == 0)
3294 { 3297 {
3295 trace_dsn("SSL_connect: failed in %s\n",SSL_state_string_long(s)); 3298 trace_dsn("SSL_connect: failed in %s\n",SSL_state_string_long(s));
@@ -3297,10 +3300,9 @@ static void client_info_callback(INFO_CONST SSL *s, int where, int ret) @@ -3297,10 +3300,9 @@ static void client_info_callback(INFO_CONST SSL *s, int where, int ret)
3297 } 3300 }
3298 else if (ret < 0) 3301 else if (ret < 0)
3299 { 3302 {
3300 - unsigned long e; 3303 + unsigned long e = ERR_get_error();
3301 char err_buf[1024]; 3304 char err_buf[1024];
3302 3305
3303 - e = ERR_get_error();  
3304 while(ERR_peek_error() == e) // Remove other messages with the same error 3306 while(ERR_peek_error() == e) // Remove other messages with the same error
3305 e = ERR_get_error(); 3307 e = ERR_get_error();
3306 3308
@@ -3339,7 +3341,14 @@ static void client_info_callback(INFO_CONST SSL *s, int where, int ret) @@ -3339,7 +3341,14 @@ static void client_info_callback(INFO_CONST SSL *s, int where, int ret)
3339 3341
3340 3342
3341 } 3343 }
  3344 +
  3345 +
  3346 + default:
  3347 + lib3270_write_log(NULL,"SSL","Current state is \"%s\"",SSL_state_string_long(s));
3342 } 3348 }
  3349 +
  3350 + if(where & SSL_CB_ALERT)
  3351 + lib3270_write_log(NULL,"SSL","ALERT: %s",SSL_alert_type_string_long(ret));
3343 } 3352 }
3344 3353
3345 /* Process a STARTTLS subnegotiation. */ 3354 /* Process a STARTTLS subnegotiation. */