Commit a887bf87036ca3112e16a1f69429328021a09f8e

Authored by Perry Werneck
1 parent 1e9f6627

Fixing unexpected hangs on windows version.

@@ -60,3 +60,4 @@ certs @@ -60,3 +60,4 @@ certs
60 confdefs.h 60 confdefs.h
61 conftest.* 61 conftest.*
62 mstest.* 62 mstest.*
  63 +*.cscope_file_list
locale/pt_BR.po
@@ -5,7 +5,7 @@ msgid "" @@ -5,7 +5,7 @@ msgid ""
5 msgstr "" 5 msgstr ""
6 "Project-Id-Version: pw3270 5.0\n" 6 "Project-Id-Version: pw3270 5.0\n"
7 "Report-Msgid-Bugs-To: \n" 7 "Report-Msgid-Bugs-To: \n"
8 -"POT-Creation-Date: 2020-07-04 14:53-0300\n" 8 +"POT-Creation-Date: 2020-07-09 20:22-0300\n"
9 "PO-Revision-Date: 2020-05-08 00:52-0300\n" 9 "PO-Revision-Date: 2020-05-08 00:52-0300\n"
10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" 10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n"
11 "Language-Team: Português <>\n" 11 "Language-Team: Português <>\n"
@@ -265,8 +265,8 @@ msgstr &quot;Não foi possível criar requisição HTTP&quot; @@ -265,8 +265,8 @@ msgstr &quot;Não foi possível criar requisição HTTP&quot;
265 msgid "Can't decode CRL" 265 msgid "Can't decode CRL"
266 msgstr "Não foi possível decodificar arquivo CRL" 266 msgstr "Não foi possível decodificar arquivo CRL"
267 267
268 -#: src/ssl/windows/ldap.c:259 src/ssl/windows/http.c:74  
269 -#: src/ssl/windows/curl.c:264 268 +#: src/ssl/windows/curl.c:264 src/ssl/windows/http.c:74
  269 +#: src/ssl/windows/ldap.c:259
270 msgid "Can't decode certificate revocation list" 270 msgid "Can't decode certificate revocation list"
271 msgstr "Não foi possível decodificar a lista de certificados revogados" 271 msgstr "Não foi possível decodificar a lista de certificados revogados"
272 272
@@ -371,7 +371,7 @@ msgstr &quot;Não foi possível iniciar transferência de arquivo.&quot; @@ -371,7 +371,7 @@ msgstr &quot;Não foi possível iniciar transferência de arquivo.&quot;
371 msgid "Can't use winsock version %d.%d" 371 msgid "Can't use winsock version %d.%d"
372 msgstr "Não posso usar versão winsock %d.%d" 372 msgstr "Não posso usar versão winsock %d.%d"
373 373
374 -#: src/ssl/negotiate.c:370 src/ssl/crl.c:165 374 +#: src/ssl/crl.c:165 src/ssl/negotiate.c:370
375 msgid "Can't verify." 375 msgid "Can't verify."
376 msgstr "Não foi possível verificar" 376 msgstr "Não foi possível verificar"
377 377
@@ -637,12 +637,12 @@ msgstr &quot;Apagar campos&quot; @@ -637,12 +637,12 @@ msgstr &quot;Apagar campos&quot;
637 msgid "Error" 637 msgid "Error"
638 msgstr "Erro" 638 msgstr "Erro"
639 639
640 -#: src/core/ft/ft_dft.c:454 src/core/ft/ft_cut.c:423 640 +#: src/core/ft/ft_cut.c:423 src/core/ft/ft_dft.c:454
641 #, c-format 641 #, c-format
642 msgid "Error \"%s\" reading from local file (rc=%d)" 642 msgid "Error \"%s\" reading from local file (rc=%d)"
643 msgstr "Erro \"%s\" lendo arquivo local (rc=%d)" 643 msgstr "Erro \"%s\" lendo arquivo local (rc=%d)"
644 644
645 -#: src/core/ft/ft_dft.c:332 src/core/ft/ft_cut.c:528 645 +#: src/core/ft/ft_cut.c:528 src/core/ft/ft_dft.c:332
646 #, c-format 646 #, c-format
647 msgid "Error \"%s\" writing to local file (rc=%d)" 647 msgid "Error \"%s\" writing to local file (rc=%d)"
648 msgstr "Erro \"%s\" gravando arquivo local (rc=%d)" 648 msgstr "Erro \"%s\" gravando arquivo local (rc=%d)"
@@ -1006,8 +1006,8 @@ msgstr &quot;Move o cursor para o primeiro branco após o último não branco no camp @@ -1006,8 +1006,8 @@ msgstr &quot;Move o cursor para o primeiro branco após o último não branco no camp
1006 msgid "Move to first unprotected field on screen" 1006 msgid "Move to first unprotected field on screen"
1007 msgstr "Move para o primeiro campo desprotegido" 1007 msgstr "Move para o primeiro campo desprotegido"
1008 1008
1009 -#: src/core/telnet.c:320 src/core/windows/event_dispatcher.c:149  
1010 -#: src/core/windows/connect.c:78 1009 +#: src/core/telnet.c:320 src/core/windows/connect.c:78
  1010 +#: src/core/windows/event_dispatcher.c:149
1011 msgid "Network error" 1011 msgid "Network error"
1012 msgstr "Erro de rede" 1012 msgstr "Erro de rede"
1013 1013
@@ -1282,22 +1282,22 @@ msgstr &quot;Pesquisa não produziu nenhum valor&quot; @@ -1282,22 +1282,22 @@ msgstr &quot;Pesquisa não produziu nenhum valor&quot;
1282 msgid "Secure connection was successful." 1282 msgid "Secure connection was successful."
1283 msgstr "Conexão segura efetuada com sucesso." 1283 msgstr "Conexão segura efetuada com sucesso."
1284 1284
1285 -#: src/ssl/negotiate.c:107 src/ssl/negotiate.c:241 src/ssl/negotiate.c:275  
1286 -#: src/ssl/negotiate.c:369 src/ssl/negotiate.c:391 src/ssl/negotiate.c:412  
1287 -#: src/ssl/crl.c:164 src/ssl/windows/ldap.c:108 src/ssl/windows/ldap.c:122  
1288 -#: src/ssl/windows/ldap.c:151 src/ssl/windows/ldap.c:165  
1289 -#: src/ssl/windows/ldap.c:180 src/ssl/windows/ldap.c:210  
1290 -#: src/ssl/windows/ldap.c:222 src/ssl/windows/ldap.c:234  
1291 -#: src/ssl/windows/ldap.c:258 src/ssl/windows/init.c:91  
1292 -#: src/ssl/windows/init.c:112 src/ssl/windows/init.c:138  
1293 -#: src/ssl/windows/init.c:149 src/ssl/windows/http.c:57  
1294 -#: src/ssl/windows/http.c:73 src/ssl/windows/getcrl.c:57  
1295 -#: src/ssl/windows/getcrl.c:74 src/ssl/windows/getcrl.c:86  
1296 -#: src/ssl/windows/getcrl.c:118 src/ssl/windows/curl.c:188 1285 +#: src/ssl/crl.c:164 src/ssl/negotiate.c:107 src/ssl/negotiate.c:241
  1286 +#: src/ssl/negotiate.c:275 src/ssl/negotiate.c:369 src/ssl/negotiate.c:391
  1287 +#: src/ssl/negotiate.c:412 src/ssl/windows/curl.c:188
1297 #: src/ssl/windows/curl.c:218 src/ssl/windows/curl.c:242 1288 #: src/ssl/windows/curl.c:218 src/ssl/windows/curl.c:242
1298 #: src/ssl/windows/curl.c:263 src/ssl/windows/curl.c:272 1289 #: src/ssl/windows/curl.c:263 src/ssl/windows/curl.c:272
1299 #: src/ssl/windows/curl.c:300 src/ssl/windows/curl.c:333 1290 #: src/ssl/windows/curl.c:300 src/ssl/windows/curl.c:333
1300 -#: src/ssl/windows/curl.c:369 1291 +#: src/ssl/windows/curl.c:369 src/ssl/windows/getcrl.c:57
  1292 +#: src/ssl/windows/getcrl.c:74 src/ssl/windows/getcrl.c:86
  1293 +#: src/ssl/windows/getcrl.c:118 src/ssl/windows/http.c:57
  1294 +#: src/ssl/windows/http.c:73 src/ssl/windows/init.c:91
  1295 +#: src/ssl/windows/init.c:112 src/ssl/windows/init.c:138
  1296 +#: src/ssl/windows/init.c:149 src/ssl/windows/ldap.c:108
  1297 +#: src/ssl/windows/ldap.c:122 src/ssl/windows/ldap.c:151
  1298 +#: src/ssl/windows/ldap.c:165 src/ssl/windows/ldap.c:180
  1299 +#: src/ssl/windows/ldap.c:210 src/ssl/windows/ldap.c:222
  1300 +#: src/ssl/windows/ldap.c:234 src/ssl/windows/ldap.c:258
1301 msgid "Security error" 1301 msgid "Security error"
1302 msgstr "Erro de segurança" 1302 msgstr "Erro de segurança"
1303 1303
@@ -1781,8 +1781,8 @@ msgstr &quot;Mostrar posição do cursor&quot; @@ -1781,8 +1781,8 @@ msgstr &quot;Mostrar posição do cursor&quot;
1781 msgid "Transfer cancelled by host" 1781 msgid "Transfer cancelled by host"
1782 msgstr "Transferência cancelada pelo host" 1782 msgstr "Transferência cancelada pelo host"
1783 1783
1784 -#: src/core/ft/ft_dft.c:230 src/core/ft/ft_dft.c:373 src/core/ft/ft_cut.c:400  
1785 -#: src/core/ft/ft_cut.c:495 1784 +#: src/core/ft/ft_cut.c:400 src/core/ft/ft_cut.c:495 src/core/ft/ft_dft.c:230
  1785 +#: src/core/ft/ft_dft.c:373
1786 msgid "Transfer cancelled by user" 1786 msgid "Transfer cancelled by user"
1787 msgstr "Transferência cancelada pelo usuário" 1787 msgstr "Transferência cancelada pelo usuário"
1788 1788
src/core/connect.c
@@ -115,6 +115,10 @@ @@ -115,6 +115,10 @@
115 } 115 }
116 116
117 #if defined(HAVE_LIBSSL) 117 #if defined(HAVE_LIBSSL)
  118 + debug("%s: TLS/SSL is %s",__FUNCTION__,hSession->ssl.enabled ? "ENABLED" : "DISABLED")
  119 + trace_dsn(hSession,"TLS/SSL is %s\n", hSession->ssl.enabled ? "enabled" : "disabled" );
  120 +
  121 + if(hSession->ssl.enabled)
118 { 122 {
119 SSL_ERROR_MESSAGE ssl_error; 123 SSL_ERROR_MESSAGE ssl_error;
120 memset(&ssl_error,0,sizeof(ssl_error)); 124 memset(&ssl_error,0,sizeof(ssl_error));
src/core/iocalls.c
@@ -575,6 +575,8 @@ int non_blocking(H3270 *hSession, Boolean on) @@ -575,6 +575,8 @@ int non_blocking(H3270 *hSession, Boolean on)
575 575
576 #endif 576 #endif
577 577
  578 + debug("Socket %d is now %s",hSession->connection.sock,(on ? "Non Blocking" : "Blocking"));
  579 +
578 lib3270_set_poll_state(hSession,hSession->xio.read, on); 580 lib3270_set_poll_state(hSession,hSession->xio.read, on);
579 lib3270_set_poll_state(hSession,hSession->xio.write, on); 581 lib3270_set_poll_state(hSession,hSession->xio.write, on);
580 lib3270_set_poll_state(hSession,hSession->xio.except, on); 582 lib3270_set_poll_state(hSession,hSession->xio.except, on);
src/core/linux/connect.c
@@ -196,8 +196,6 @@ static void net_connected(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG @@ -196,8 +196,6 @@ static void net_connected(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG
196 hSession->ever_3270 = False; 196 hSession->ever_3270 = False;
197 197
198 #if defined(HAVE_LIBSSL) 198 #if defined(HAVE_LIBSSL)
199 - debug("%s: TLS/SSL is %s",__FUNCTION__,hSession->ssl.enabled ? "ENABLED" : "DISABLED")  
200 - trace_dsn(hSession,"TLS/SSL is %s\n", hSession->ssl.enabled ? "enabled" : "disabled" );  
201 if(hSession->ssl.enabled) 199 if(hSession->ssl.enabled)
202 { 200 {
203 hSession->ssl.host = 1; 201 hSession->ssl.host = 1;
src/core/telnet.c
@@ -482,6 +482,9 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession) @@ -482,6 +482,9 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession)
482 trace_ds(hSession,"SENT HOSTNAME %s:%d\n", hSession->hostname, hSession->current_port); 482 trace_ds(hSession,"SENT HOSTNAME %s:%d\n", hSession->hostname, hSession->current_port);
483 } 483 }
484 */ 484 */
  485 +
  486 + non_blocking(hSession,True);
  487 +
485 } 488 }
486 489
487 /** 490 /**
src/core/windows/connect.c
@@ -190,19 +190,22 @@ static void sockstart(H3270 *session) @@ -190,19 +190,22 @@ static void sockstart(H3270 *session)
190 for(rp = result; hSession->connection.sock < 0 && rp != NULL; rp = rp->ai_next) 190 for(rp = result; hSession->connection.sock < 0 && rp != NULL; rp = rp->ai_next)
191 { 191 {
192 hSession->connection.sock = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); 192 hSession->connection.sock = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
  193 +
193 if(hSession->connection.sock < 0) 194 if(hSession->connection.sock < 0)
194 { 195 {
195 ((struct resolver *) host)->rc = errno; 196 ((struct resolver *) host)->rc = errno;
196 ((struct resolver *) host)->message = strerror(errno); 197 ((struct resolver *) host)->message = strerror(errno);
  198 + debug("Socket error %d: %s",((struct resolver *) host)->rc,((struct resolver *) host)->message);
197 continue; 199 continue;
198 } 200 }
199 201
200 // Connected! 202 // Connected!
201 if(connect(hSession->connection.sock, rp->ai_addr, rp->ai_addrlen)) 203 if(connect(hSession->connection.sock, rp->ai_addr, rp->ai_addrlen))
202 { 204 {
203 - SOCK_CLOSE(hSession);  
204 ((struct resolver *) host)->rc = errno; 205 ((struct resolver *) host)->rc = errno;
205 ((struct resolver *) host)->message = strerror(errno); 206 ((struct resolver *) host)->message = strerror(errno);
  207 + debug("Connection error %d: %s",((struct resolver *) host)->rc,((struct resolver *) host)->message);
  208 + SOCK_CLOSE(hSession);
206 continue; 209 continue;
207 } 210 }
208 211
@@ -210,6 +213,8 @@ static void sockstart(H3270 *session) @@ -210,6 +213,8 @@ static void sockstart(H3270 *session)
210 213
211 freeaddrinfo(result); 214 freeaddrinfo(result);
212 215
  216 + debug("%s: Connected using socket %d",__FUNCTION__,hSession->connection.sock);
  217 +
213 return 0; 218 return 0;
214 219
215 } 220 }
@@ -314,6 +319,7 @@ int net_reconnect(H3270 *hSession, int seconds) @@ -314,6 +319,7 @@ int net_reconnect(H3270 *hSession, int seconds)
314 319
315 if(hSession->ssl.enabled) 320 if(hSession->ssl.enabled)
316 { 321 {
  322 + debug("%s: Enabling SSL ****************************",__FUNCTION__);
317 hSession->ssl.host = 1; 323 hSession->ssl.host = 1;
318 if(ssl_init(hSession)) 324 if(ssl_init(hSession))
319 return errno = ENOTCONN; 325 return errno = ENOTCONN;
src/testprogram/testprogram.c
@@ -36,6 +36,10 @@ static void online_group_state_changed(H3270 GNUC_UNUSED(*hSession), void GNUC_U @@ -36,6 +36,10 @@ static void online_group_state_changed(H3270 GNUC_UNUSED(*hSession), void GNUC_U
36 36
37 int main(int argc, char *argv[]) 37 int main(int argc, char *argv[])
38 { 38 {
  39 +#ifdef _WIN32
  40 + printf("Process %s running on pid %u\n",argv[0],(unsigned int) GetCurrentProcessId());
  41 +#endif // _WIN32
  42 +
39 #ifdef LC_ALL 43 #ifdef LC_ALL
40 setlocale( LC_ALL, "" ); 44 setlocale( LC_ALL, "" );
41 #endif 45 #endif