Commit a81410682b8443fb123d37b12fdb6fba3f18ba47

Authored by perry.werneck@gmail.com
1 parent 2cf7edce

Ajustes para permitir que o aplicativo Android sobreponha todas as funções de I/O de rede

pw3270.cbp
... ... @@ -58,6 +58,7 @@
58 58 <Unit filename="src/include/lib3270/config.h.in" />
59 59 <Unit filename="src/include/lib3270/filetransfer.h" />
60 60 <Unit filename="src/include/lib3270/html.h" />
  61 + <Unit filename="src/include/lib3270/internals.h" />
61 62 <Unit filename="src/include/lib3270/log.h" />
62 63 <Unit filename="src/include/lib3270/macros.h" />
63 64 <Unit filename="src/include/lib3270/popup.h" />
... ...
src/include/lib3270/internals.h
... ... @@ -35,6 +35,8 @@
35 35 #endif
36 36  
37 37 LIB3270_EXPORT void lib3270_data_recv(H3270 *hSession, size_t nr, const unsigned char *netrbuf);
  38 + LIB3270_EXPORT void lib3270_set_disconnected(H3270 *hSession);
  39 + LIB3270_EXPORT void lib3270_set_connected(H3270 *hSession);
38 40  
39 41 #ifdef __cplusplus
40 42 }
... ...
src/lib3270/host.c
... ... @@ -52,6 +52,7 @@
52 52 #include "xioc.h"
53 53  
54 54 #include <errno.h>
  55 +#include <lib3270/internals.h>
55 56  
56 57 #define RECONNECT_MS 2000 /* 2 sec before reconnecting to host */
57 58 #define RECONNECT_ERR_MS 5000 /* 5 sec before reconnecting to host */
... ... @@ -550,7 +551,7 @@ static int do_connect(H3270 *hSession, const char *n)
550 551 if(net_connect(hSession, chost, port, 0, &resolving,&pending) != 0 && !resolving)
551 552 {
552 553 /* Redundantly signal a disconnect. */
553   - host_disconnected(hSession);
  554 + lib3270_set_disconnected(hSession);
554 555 return -1;
555 556 }
556 557  
... ... @@ -588,7 +589,7 @@ static int do_connect(H3270 *hSession, const char *n)
588 589 }
589 590 else
590 591 {
591   - host_connected(hSession);
  592 + lib3270_set_connected(hSession);
592 593 }
593 594  
594 595 return 0;
... ... @@ -687,7 +688,7 @@ void host_disconnect(H3270 *h, int failed)
687 688 trace_ansi_disc();
688 689 #endif /*]*/
689 690  
690   - host_disconnected(h);
  691 + lib3270_set_disconnected(h);
691 692 }
692 693 }
693 694  
... ... @@ -703,22 +704,24 @@ void host_in3270(H3270 *session, LIB3270_CSTATE new_cstate)
703 704 lib3270_st_changed(session, LIB3270_STATE_3270_MODE, now3270);
704 705 }
705 706  
706   -void host_connected(H3270 *session)
  707 +void lib3270_set_connected(H3270 *hSession)
707 708 {
708   - session->cstate = CONNECTED_INITIAL;
709   - lib3270_st_changed(session, LIB3270_STATE_CONNECT, True);
710   - if(session->update_connect)
711   - session->update_connect(session,1);
  709 + hSession->cstate = CONNECTED_INITIAL;
  710 + lib3270_st_changed(hSession, LIB3270_STATE_CONNECT, True);
  711 + if(hSession->update_connect)
  712 + hSession->update_connect(hSession,1);
712 713 }
713 714  
714   -void host_disconnected(H3270 *session)
  715 +void lib3270_set_disconnected(H3270 *hSession)
715 716 {
716   - session->cstate = NOT_CONNECTED;
717   - set_status(session,OIA_FLAG_UNDERA,False);
718   - lib3270_st_changed(session,LIB3270_STATE_CONNECT, False);
719   - status_changed(session,LIB3270_MESSAGE_DISCONNECTED);
720   - if(session->update_connect)
721   - session->update_connect(session,0);
  717 + CHECK_SESSION_HANDLE(hSession);
  718 +
  719 + hSession->cstate = NOT_CONNECTED;
  720 + set_status(hSession,OIA_FLAG_UNDERA,False);
  721 + lib3270_st_changed(hSession,LIB3270_STATE_CONNECT, False);
  722 + status_changed(hSession,LIB3270_MESSAGE_DISCONNECTED);
  723 + if(hSession->update_connect)
  724 + hSession->update_connect(hSession,0);
722 725 }
723 726  
724 727 /* Register a function interested in a state change. */
... ...
src/lib3270/hostc.h
... ... @@ -39,8 +39,6 @@
39 39 // #define st_changed(tx,mode) lib3270_st_changed(NULL,tx,mode)
40 40  
41 41 LIB3270_INTERNAL void lib3270_st_changed(H3270 *h, LIB3270_STATE tx, int mode);
42   - LIB3270_INTERNAL void host_connected(H3270 *session);
43   - LIB3270_INTERNAL void host_disconnected(H3270 *session);
44 42 LIB3270_INTERNAL void host_in3270(H3270 *session, LIB3270_CSTATE);
45 43 LIB3270_INTERNAL void host_disconnect(H3270 *h, int disable);
46 44  
... ...
src/lib3270/telnet.c
... ... @@ -867,7 +867,7 @@ static void net_connected(H3270 *session)
867 867 // trace_dsn("TLS/SSL tunneled connection complete. Connection is now secure.\n");
868 868  
869 869 /* Tell everyone else again. */
870   - host_connected(session);
  870 + lib3270_set_connected(session);
871 871 }
872 872 #endif /*]*/
873 873  
... ... @@ -927,7 +927,7 @@ static void connection_complete(H3270 *session)
927 927 host_disconnect(session,True);
928 928 return;
929 929 }
930   - host_connected(session);
  930 + lib3270_set_connected(session);
931 931 net_connected(session);
932 932 }
933 933  
... ... @@ -1098,7 +1098,7 @@ void net_input(H3270 *session)
1098 1098 host_disconnect(session,True);
1099 1099 return;
1100 1100 }
1101   - host_connected(session);
  1101 + lib3270_set_connected(session);
1102 1102 net_connected(session);
1103 1103 }
1104 1104  
... ... @@ -3396,7 +3396,7 @@ static void continue_tls(unsigned char *sbbuf, int len)
3396 3396 // trace_dsn("TLS/SSL negotiated connection complete. Connection is now secure.\n");
3397 3397  
3398 3398 /* Tell the world that we are (still) connected, now in secure mode. */
3399   - host_connected(&h3270);
  3399 + lib3270_set_connected(&h3270);
3400 3400 }
3401 3401  
3402 3402 #endif /*]*/
... ...