Commit 6fccf19ecf4f78938c8af839fd048c8744eafa3f

Authored by perry.werneck@gmail.com
1 parent 6739b90c

Iniciando jni android, ajustes no processo de conexão

Showing 2 changed files with 49 additions and 119 deletions   Show diff stats
telnet.c
... ... @@ -623,8 +623,8 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo
623 623 }
624 624 #endif
625 625  
626   - /* set the socket to be non-delaying */
627   - if (non_blocking(session,False) < 0)
  626 + /* set the socket to be non-delaying during connect */
  627 + if(non_blocking(session,False) < 0)
628 628 close_fail;
629 629  
630 630 #if !defined(_WIN32)
... ... @@ -646,23 +646,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo
646 646 if(!rc)
647 647 {
648 648 trace_dsn("Connected.\n");
649   -
650   -// if(non_blocking(session,False) < 0)
651   -// close_fail;
652   -
653 649 net_connected(session);
654   -
655   -/*
656   - break;
657   - case SE_EWOULDBLOCK: // Connection in progress
658   - case SE_EINPROGRESS:
659   - *pending = True;
660   - trace_dsn("Connection pending.\n");
661   -#if !defined(_WIN32)
662   - output_id = AddOutput(session->sock, session, output_possible);
663   -#endif
664   - break;
665   -*/
666 650 }
667 651 else
668 652 {
... ... @@ -813,7 +797,6 @@ static void net_connected(H3270 *session)
813 797 }
814 798 else
815 799 {
816   - // non_blocking(session,False);
817 800 rc = SSL_connect(session->ssl_con);
818 801  
819 802 if(rc != 1)
... ... @@ -837,7 +820,6 @@ static void net_connected(H3270 *session)
837 820 return;
838 821  
839 822 }
840   - non_blocking(session,True);
841 823 }
842 824  
843 825 // session->secure_connection = True;
... ... @@ -911,30 +893,6 @@ static void connection_complete(void)
911 893 }
912 894  
913 895 /*
914   -#if !defined(_WIN32)
915   -//
916   -// output_possible
917   -// Output is possible on the socket. Used only when a connection is
918   -// pending, to determine that the connection is complete.
919   -//
920   -static void output_possible(H3270 *session)
921   -{
922   - trace("%s: %s",__FUNCTION__,HALF_CONNECTED ? "Half connected" : "Connected");
923   - if (HALF_CONNECTED)
924   - {
925   - connection_complete();
926   - }
927   -
928   - if (output_id)
929   - {
930   - RemoveInput(output_id);
931   - output_id = 0L;
932   - }
933   -}
934   -#endif
935   -*/
936   -
937   -/*
938 896 * net_disconnect
939 897 * Shut down the socket.
940 898 */
... ... @@ -990,17 +948,17 @@ void net_input(H3270 *session)
990 948 register unsigned char *cp;
991 949 int nr;
992 950  
993   - if(!session)
994   - session = &h3270;
  951 + CHECK_SESSION_HANDLE(session);
995 952  
996   -#if defined(_WIN32) /*[*/
997   - for (;;)
998   -#endif /*]*/
  953 +// #if defined(_WIN32)
  954 +// for (;;)
  955 +// #endif
999 956 {
1000 957 if (session->sock < 0)
1001 958 return;
1002 959  
1003   -#if defined(_WIN32) /*[*/
  960 +/*
  961 +#if defined(_WIN32)
1004 962 if (HALF_CONNECTED) {
1005 963  
1006 964 if (connect(session->sock, &haddr.sa, sizeof(haddr)) < 0) {
... ... @@ -1009,7 +967,7 @@ void net_input(H3270 *session)
1009 967 switch (err) {
1010 968 case WSAEISCONN:
1011 969 connection_complete();
1012   - /* and go get data...? */
  970 + // and go get data...?
1013 971 break;
1014 972 case WSAEALREADY:
1015 973 case WSAEWOULDBLOCK:
... ... @@ -1025,31 +983,26 @@ void net_input(H3270 *session)
1025 983 }
1026 984 }
1027 985 }
1028   -#endif /*]*/
  986 +#endif
  987 +*/
1029 988  
1030 989 #if defined(X3270_ANSI) /*[*/
1031 990 ansi_data = 0;
1032 991 #endif /*]*/
1033 992  
1034   -// #if defined(_WIN32)
1035   -// (void) ResetEvent(session->sock_handle);
1036   -//#endif /*]*/
1037   -
1038 993 #if defined(HAVE_LIBSSL)
1039 994 if (session->ssl_con != NULL)
1040 995 nr = SSL_read(session->ssl_con, (char *) netrbuf, BUFSZ);
1041 996 else
1042   -#endif // HAVE_LIBSSL
1043   -/*
1044   -#if defined(LOCAL_PROCESS)
1045   - if (local_process)
1046   - nr = read(sock, (char *) netrbuf, BUFSZ);
1047   - else
1048   -#endif
1049   -*/
1050 997 nr = recv(session->sock, (char *) netrbuf, BUFSZ, 0);
1051   - if (nr < 0) {
1052   - if (socket_errno() == SE_EWOULDBLOCK) {
  998 +#else
  999 + nr = recv(session->sock, (char *) netrbuf, BUFSZ, 0);
  1000 +#endif // HAVE_LIBSSL
  1001 +
  1002 + if (nr < 0)
  1003 + {
  1004 + if (socket_errno() == SE_EWOULDBLOCK)
  1005 + {
1053 1006 return;
1054 1007 }
1055 1008 #if defined(HAVE_LIBSSL) /*[*/
... ... @@ -1082,28 +1035,22 @@ void net_input(H3270 *session)
1082 1035 connection_complete();
1083 1036 return;
1084 1037 }
1085   -/*
1086   -#if defined(LOCAL_PROCESS) /
1087   - if (errno == EIO && local_process) {
1088   - trace_dsn("RCVD local process disconnect\n");
1089   - host_disconnect(session,False);
1090   - return;
1091   - }
1092   -#endif
1093   -*/
  1038 +
1094 1039 trace_dsn("RCVD socket error %d\n", errno);
  1040 +
1095 1041 if (HALF_CONNECTED)
1096 1042 {
1097   - popup_a_sockerr(NULL, N_( "%s:%d" ),h3270.hostname, h3270.current_port);
  1043 + popup_a_sockerr(session, N_( "%s:%d" ),h3270.hostname, h3270.current_port);
1098 1044 }
1099 1045 else if (socket_errno() != SE_ECONNRESET)
1100 1046 {
1101   - popup_a_sockerr(NULL, N_( "Socket read error" ) );
  1047 + popup_a_sockerr(session, N_( "Socket read error" ) );
1102 1048 }
1103 1049  
1104 1050 host_disconnect(session,True);
1105 1051 return;
1106   - } else if (nr == 0) {
  1052 + } else if (nr == 0)
  1053 + {
1107 1054 /* Host disconnected. */
1108 1055 trace_dsn("RCVD disconnect\n");
1109 1056 host_disconnect(session,False);
... ... @@ -1123,50 +1070,31 @@ void net_input(H3270 *session)
1123 1070 net_connected(session);
1124 1071 }
1125 1072  
1126   -#if defined(X3270_TRACE) /*[*/
1127 1073 trace_netdata('<', netrbuf, nr);
1128   -#endif /*]*/
1129 1074  
1130 1075 ns_brcvd += nr;
1131   - for (cp = netrbuf; cp < (netrbuf + nr); cp++) {
1132   -/*
1133   -#if defined(LOCAL_PROCESS)
1134   - if (local_process) {
1135   - // More to do here, probably.
1136   - if (IN_NEITHER) { // now can assume ANSI mode
1137   - host_in3270(CONNECTED_ANSI);
1138   - hisopts[TELOPT_ECHO] = 1;
1139   - check_linemode(False);
1140   - kybdlock_clr(KL_AWAITING_FIRST, "telnet_fsm");
1141   - status_reset();
1142   - ps_process();
1143   - }
1144   - ansi_process((unsigned int) *cp);
1145   - } else {
1146   -#endif
1147   -*/
1148   - if (telnet_fsm(*cp))
1149   - {
1150   - (void) ctlr_dbcs_postprocess();
1151   - host_disconnect(&h3270,True);
1152   - return;
1153   - }
1154   -/*
1155   -#if defined(LOCAL_PROCESS)
  1076 + for (cp = netrbuf; cp < (netrbuf + nr); cp++)
  1077 + {
  1078 + if (telnet_fsm(*cp))
  1079 + {
  1080 + (void) ctlr_dbcs_postprocess();
  1081 + host_disconnect(session,True);
  1082 + return;
1156 1083 }
1157   -#endif
1158   -*/
1159 1084 }
1160 1085  
1161   -#if defined(X3270_ANSI) /*[*/
1162   - if (IN_ANSI) {
  1086 +#if defined(X3270_ANSI)
  1087 + if (IN_ANSI)
  1088 + {
1163 1089 (void) ctlr_dbcs_postprocess();
1164 1090 }
1165   - if (ansi_data) {
  1091 +
  1092 + if (ansi_data)
  1093 + {
1166 1094 trace_dsn("\n");
1167 1095 ansi_data = 0;
1168 1096 }
1169   -#endif /*]*/
  1097 +#endif // X3270_ANSI
1170 1098  
1171 1099 }
1172 1100  
... ... @@ -2043,9 +1971,7 @@ net_rawout(unsigned const char *buf, int len)
2043 1971 {
2044 1972 int nw;
2045 1973  
2046   -#if defined(X3270_TRACE) /*[*/
2047 1974 trace_netdata('>', buf, len);
2048   -#endif /*]*/
2049 1975  
2050 1976 while (len) {
2051 1977 #if defined(OMTU) /*[*/
... ... @@ -2633,7 +2559,7 @@ check_linemode(Boolean init)
2633 2559 }
2634 2560  
2635 2561  
2636   -#if defined(X3270_TRACE) /*[*/
  2562 +#if defined(X3270_TRACE)
2637 2563  
2638 2564 /*
2639 2565 * nnn
... ... @@ -2681,11 +2607,9 @@ opt(unsigned char c)
2681 2607 return nnn((int)c);
2682 2608 }
2683 2609  
2684   -
2685 2610 #define LINEDUMP_MAX 32
2686 2611  
2687   -void
2688   -trace_netdata(char direction, unsigned const char *buf, int len)
  2612 +void trace_netdata(char direction, unsigned const char *buf, int len)
2689 2613 {
2690 2614 int offset;
2691 2615 struct timeval ts;
... ... @@ -2708,7 +2632,7 @@ trace_netdata(char direction, unsigned const char *buf, int len)
2708 2632 }
2709 2633 trace_dsn("\n");
2710 2634 }
2711   -#endif /*]*/
  2635 +#endif // X3270_TRACE
2712 2636  
2713 2637  
2714 2638 /*
... ...
telnetc.h
... ... @@ -55,9 +55,15 @@ LIB3270_INTERNAL void net_send_werase(void);
55 55 LIB3270_INTERNAL Boolean net_snap_options(void);
56 56 LIB3270_INTERNAL void space3270out(int n);
57 57 LIB3270_INTERNAL const char *tn3270e_current_opts(void);
58   -LIB3270_INTERNAL void trace_netdata(char direction, unsigned const char *buf, int len);
59 58 LIB3270_INTERNAL char *net_proxy_type(void);
60 59 LIB3270_INTERNAL char *net_proxy_host(void);
61 60 LIB3270_INTERNAL char *net_proxy_port(void);
62 61  
  62 +#if defined(X3270_TRACE)
  63 + LIB3270_INTERNAL void trace_netdata(char direction, unsigned const char *buf, int len);
  64 +#else
  65 + #define trace_netdata(direction, buf, len) /* */
  66 +#endif // X3270_TRACE
  67 +
  68 +
63 69 LIB3270_INTERNAL int net_getsockname(const H3270 *h3270, void *buf, int *len);
... ...