Commit c5f53824ce25490ed72bf62ae1ecc647153e58c1
1 parent
e1bd8880
Exists in
master
and in
5 other branches
Iniciando jni android, ajustes no processo de conexão
Showing
5 changed files
with
54 additions
and
126 deletions
Show diff stats
src/android/Makefile
| @@ -27,11 +27,8 @@ JAVAH=javah | @@ -27,11 +27,8 @@ JAVAH=javah | ||
| 27 | NDKBUILD=/opt/android-ndk-r8/ndk-build | 27 | NDKBUILD=/opt/android-ndk-r8/ndk-build |
| 28 | CLASSPATH=br/com/bb/pw3270 | 28 | CLASSPATH=br/com/bb/pw3270 |
| 29 | 29 | ||
| 30 | -all: | ||
| 31 | - @$(NDKBUILD) -C jni | ||
| 32 | - | ||
| 33 | -Debug: | ||
| 34 | - @$(NDKBUILD) -C jni | 30 | +Debug: jni/lib3270jni.h |
| 31 | + @$(NDKBUILD) | ||
| 35 | 32 | ||
| 36 | jni/lib3270jni.h: bin/classes/$(CLASSPATH)/lib3270.class | 33 | jni/lib3270jni.h: bin/classes/$(CLASSPATH)/lib3270.class |
| 37 | @$(JAVAH) -o $@ -classpath bin/classes $(subst /,.,$(CLASSPATH)).lib3270 | 34 | @$(JAVAH) -o $@ -classpath bin/classes $(subst /,.,$(CLASSPATH)).lib3270 |
src/android/jni/Android.mk
| @@ -26,9 +26,9 @@ | @@ -26,9 +26,9 @@ | ||
| 26 | LOCAL_PATH := $(call my-dir) | 26 | LOCAL_PATH := $(call my-dir) |
| 27 | 27 | ||
| 28 | include $(CLEAR_VARS) | 28 | include $(CLEAR_VARS) |
| 29 | -include ../../lib3270/sources.mak | 29 | +include ../lib3270/sources.mak |
| 30 | 30 | ||
| 31 | -LOCAL_CFLAGS=-I ../../include | 31 | +LOCAL_CFLAGS=-I../include |
| 32 | LOCAL_MODULE := lib3270 | 32 | LOCAL_MODULE := lib3270 |
| 33 | LOCAL_SRC_FILES := $(foreach SRC, $(SOURCES), ../../lib3270/$(SRC)) | 33 | LOCAL_SRC_FILES := $(foreach SRC, $(SOURCES), ../../lib3270/$(SRC)) |
| 34 | 34 |
src/android/lib3270NDK.cbp
| @@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
| 3 | <FileVersion major="1" minor="6" /> | 3 | <FileVersion major="1" minor="6" /> |
| 4 | <Project> | 4 | <Project> |
| 5 | <Option title="lib3270 android NDK" /> | 5 | <Option title="lib3270 android NDK" /> |
| 6 | + <Option makefile_is_custom="1" /> | ||
| 6 | <Option pch_mode="2" /> | 7 | <Option pch_mode="2" /> |
| 7 | <Option compiler="gcc" /> | 8 | <Option compiler="gcc" /> |
| 8 | <Build> | 9 | <Build> |
src/lib3270/telnet.c
| @@ -623,8 +623,8 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo | @@ -623,8 +623,8 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo | ||
| 623 | } | 623 | } |
| 624 | #endif | 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 | close_fail; | 628 | close_fail; |
| 629 | 629 | ||
| 630 | #if !defined(_WIN32) | 630 | #if !defined(_WIN32) |
| @@ -646,23 +646,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo | @@ -646,23 +646,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo | ||
| 646 | if(!rc) | 646 | if(!rc) |
| 647 | { | 647 | { |
| 648 | trace_dsn("Connected.\n"); | 648 | trace_dsn("Connected.\n"); |
| 649 | - | ||
| 650 | -// if(non_blocking(session,False) < 0) | ||
| 651 | -// close_fail; | ||
| 652 | - | ||
| 653 | net_connected(session); | 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 | else | 651 | else |
| 668 | { | 652 | { |
| @@ -813,7 +797,6 @@ static void net_connected(H3270 *session) | @@ -813,7 +797,6 @@ static void net_connected(H3270 *session) | ||
| 813 | } | 797 | } |
| 814 | else | 798 | else |
| 815 | { | 799 | { |
| 816 | - // non_blocking(session,False); | ||
| 817 | rc = SSL_connect(session->ssl_con); | 800 | rc = SSL_connect(session->ssl_con); |
| 818 | 801 | ||
| 819 | if(rc != 1) | 802 | if(rc != 1) |
| @@ -837,7 +820,6 @@ static void net_connected(H3270 *session) | @@ -837,7 +820,6 @@ static void net_connected(H3270 *session) | ||
| 837 | return; | 820 | return; |
| 838 | 821 | ||
| 839 | } | 822 | } |
| 840 | - non_blocking(session,True); | ||
| 841 | } | 823 | } |
| 842 | 824 | ||
| 843 | // session->secure_connection = True; | 825 | // session->secure_connection = True; |
| @@ -911,30 +893,6 @@ static void connection_complete(void) | @@ -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 | * net_disconnect | 896 | * net_disconnect |
| 939 | * Shut down the socket. | 897 | * Shut down the socket. |
| 940 | */ | 898 | */ |
| @@ -990,17 +948,17 @@ void net_input(H3270 *session) | @@ -990,17 +948,17 @@ void net_input(H3270 *session) | ||
| 990 | register unsigned char *cp; | 948 | register unsigned char *cp; |
| 991 | int nr; | 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 | if (session->sock < 0) | 957 | if (session->sock < 0) |
| 1001 | return; | 958 | return; |
| 1002 | 959 | ||
| 1003 | -#if defined(_WIN32) /*[*/ | 960 | +/* |
| 961 | +#if defined(_WIN32) | ||
| 1004 | if (HALF_CONNECTED) { | 962 | if (HALF_CONNECTED) { |
| 1005 | 963 | ||
| 1006 | if (connect(session->sock, &haddr.sa, sizeof(haddr)) < 0) { | 964 | if (connect(session->sock, &haddr.sa, sizeof(haddr)) < 0) { |
| @@ -1009,7 +967,7 @@ void net_input(H3270 *session) | @@ -1009,7 +967,7 @@ void net_input(H3270 *session) | ||
| 1009 | switch (err) { | 967 | switch (err) { |
| 1010 | case WSAEISCONN: | 968 | case WSAEISCONN: |
| 1011 | connection_complete(); | 969 | connection_complete(); |
| 1012 | - /* and go get data...? */ | 970 | + // and go get data...? |
| 1013 | break; | 971 | break; |
| 1014 | case WSAEALREADY: | 972 | case WSAEALREADY: |
| 1015 | case WSAEWOULDBLOCK: | 973 | case WSAEWOULDBLOCK: |
| @@ -1025,31 +983,26 @@ void net_input(H3270 *session) | @@ -1025,31 +983,26 @@ void net_input(H3270 *session) | ||
| 1025 | } | 983 | } |
| 1026 | } | 984 | } |
| 1027 | } | 985 | } |
| 1028 | -#endif /*]*/ | 986 | +#endif |
| 987 | +*/ | ||
| 1029 | 988 | ||
| 1030 | #if defined(X3270_ANSI) /*[*/ | 989 | #if defined(X3270_ANSI) /*[*/ |
| 1031 | ansi_data = 0; | 990 | ansi_data = 0; |
| 1032 | #endif /*]*/ | 991 | #endif /*]*/ |
| 1033 | 992 | ||
| 1034 | -// #if defined(_WIN32) | ||
| 1035 | -// (void) ResetEvent(session->sock_handle); | ||
| 1036 | -//#endif /*]*/ | ||
| 1037 | - | ||
| 1038 | #if defined(HAVE_LIBSSL) | 993 | #if defined(HAVE_LIBSSL) |
| 1039 | if (session->ssl_con != NULL) | 994 | if (session->ssl_con != NULL) |
| 1040 | nr = SSL_read(session->ssl_con, (char *) netrbuf, BUFSZ); | 995 | nr = SSL_read(session->ssl_con, (char *) netrbuf, BUFSZ); |
| 1041 | else | 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 | nr = recv(session->sock, (char *) netrbuf, BUFSZ, 0); | 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 | return; | 1006 | return; |
| 1054 | } | 1007 | } |
| 1055 | #if defined(HAVE_LIBSSL) /*[*/ | 1008 | #if defined(HAVE_LIBSSL) /*[*/ |
| @@ -1082,28 +1035,22 @@ void net_input(H3270 *session) | @@ -1082,28 +1035,22 @@ void net_input(H3270 *session) | ||
| 1082 | connection_complete(); | 1035 | connection_complete(); |
| 1083 | return; | 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 | trace_dsn("RCVD socket error %d\n", errno); | 1039 | trace_dsn("RCVD socket error %d\n", errno); |
| 1040 | + | ||
| 1095 | if (HALF_CONNECTED) | 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 | else if (socket_errno() != SE_ECONNRESET) | 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 | host_disconnect(session,True); | 1050 | host_disconnect(session,True); |
| 1105 | return; | 1051 | return; |
| 1106 | - } else if (nr == 0) { | 1052 | + } else if (nr == 0) |
| 1053 | + { | ||
| 1107 | /* Host disconnected. */ | 1054 | /* Host disconnected. */ |
| 1108 | trace_dsn("RCVD disconnect\n"); | 1055 | trace_dsn("RCVD disconnect\n"); |
| 1109 | host_disconnect(session,False); | 1056 | host_disconnect(session,False); |
| @@ -1123,50 +1070,31 @@ void net_input(H3270 *session) | @@ -1123,50 +1070,31 @@ void net_input(H3270 *session) | ||
| 1123 | net_connected(session); | 1070 | net_connected(session); |
| 1124 | } | 1071 | } |
| 1125 | 1072 | ||
| 1126 | -#if defined(X3270_TRACE) /*[*/ | ||
| 1127 | trace_netdata('<', netrbuf, nr); | 1073 | trace_netdata('<', netrbuf, nr); |
| 1128 | -#endif /*]*/ | ||
| 1129 | 1074 | ||
| 1130 | ns_brcvd += nr; | 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 | (void) ctlr_dbcs_postprocess(); | 1089 | (void) ctlr_dbcs_postprocess(); |
| 1164 | } | 1090 | } |
| 1165 | - if (ansi_data) { | 1091 | + |
| 1092 | + if (ansi_data) | ||
| 1093 | + { | ||
| 1166 | trace_dsn("\n"); | 1094 | trace_dsn("\n"); |
| 1167 | ansi_data = 0; | 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,9 +1971,7 @@ net_rawout(unsigned const char *buf, int len) | ||
| 2043 | { | 1971 | { |
| 2044 | int nw; | 1972 | int nw; |
| 2045 | 1973 | ||
| 2046 | -#if defined(X3270_TRACE) /*[*/ | ||
| 2047 | trace_netdata('>', buf, len); | 1974 | trace_netdata('>', buf, len); |
| 2048 | -#endif /*]*/ | ||
| 2049 | 1975 | ||
| 2050 | while (len) { | 1976 | while (len) { |
| 2051 | #if defined(OMTU) /*[*/ | 1977 | #if defined(OMTU) /*[*/ |
| @@ -2633,7 +2559,7 @@ check_linemode(Boolean init) | @@ -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 | * nnn | 2565 | * nnn |
| @@ -2681,11 +2607,9 @@ opt(unsigned char c) | @@ -2681,11 +2607,9 @@ opt(unsigned char c) | ||
| 2681 | return nnn((int)c); | 2607 | return nnn((int)c); |
| 2682 | } | 2608 | } |
| 2683 | 2609 | ||
| 2684 | - | ||
| 2685 | #define LINEDUMP_MAX 32 | 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 | int offset; | 2614 | int offset; |
| 2691 | struct timeval ts; | 2615 | struct timeval ts; |
| @@ -2708,7 +2632,7 @@ trace_netdata(char direction, unsigned const char *buf, int len) | @@ -2708,7 +2632,7 @@ trace_netdata(char direction, unsigned const char *buf, int len) | ||
| 2708 | } | 2632 | } |
| 2709 | trace_dsn("\n"); | 2633 | trace_dsn("\n"); |
| 2710 | } | 2634 | } |
| 2711 | -#endif /*]*/ | 2635 | +#endif // X3270_TRACE |
| 2712 | 2636 | ||
| 2713 | 2637 | ||
| 2714 | /* | 2638 | /* |
src/lib3270/telnetc.h
| @@ -55,9 +55,15 @@ LIB3270_INTERNAL void net_send_werase(void); | @@ -55,9 +55,15 @@ LIB3270_INTERNAL void net_send_werase(void); | ||
| 55 | LIB3270_INTERNAL Boolean net_snap_options(void); | 55 | LIB3270_INTERNAL Boolean net_snap_options(void); |
| 56 | LIB3270_INTERNAL void space3270out(int n); | 56 | LIB3270_INTERNAL void space3270out(int n); |
| 57 | LIB3270_INTERNAL const char *tn3270e_current_opts(void); | 57 | LIB3270_INTERNAL const char *tn3270e_current_opts(void); |
| 58 | -LIB3270_INTERNAL void trace_netdata(char direction, unsigned const char *buf, int len); | ||
| 59 | LIB3270_INTERNAL char *net_proxy_type(void); | 58 | LIB3270_INTERNAL char *net_proxy_type(void); |
| 60 | LIB3270_INTERNAL char *net_proxy_host(void); | 59 | LIB3270_INTERNAL char *net_proxy_host(void); |
| 61 | LIB3270_INTERNAL char *net_proxy_port(void); | 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 | LIB3270_INTERNAL int net_getsockname(const H3270 *h3270, void *buf, int *len); | 69 | LIB3270_INTERNAL int net_getsockname(const H3270 *h3270, void *buf, int *len); |