Commit 62771f9d2865a0bb44cb0b59dd95259aeac7fd38
1 parent
bbbc9421
Exists in
master
and in
3 other branches
Android: Iniciando implementação de conexão ao host usando socket do próprio android
Showing
2 changed files
with
49 additions
and
38 deletions
Show diff stats
ctlrc.h
... | ... | @@ -118,7 +118,7 @@ LIB3270_INTERNAL enum dbcs_state ctlr_dbcs_state(int baddr); |
118 | 118 | LIB3270_INTERNAL enum dbcs_state ctlr_lookleft_state(int baddr, enum dbcs_why *why); |
119 | 119 | LIB3270_INTERNAL int ctlr_dbcs_postprocess(void); |
120 | 120 | #else /*][*/ |
121 | -#define ctlr_dbcs_state(b) DBCS_NONE | |
122 | -#define ctlr_lookleft_state(b, w) DBCS_NONE | |
123 | -#define ctlr_dbcs_postprocess() 0 | |
121 | + #define ctlr_dbcs_state(b) DBCS_NONE | |
122 | + #define ctlr_lookleft_state(b, w) DBCS_NONE | |
123 | + #define ctlr_dbcs_postprocess() 0 | |
124 | 124 | #endif /*]*/ | ... | ... |
telnet.c
... | ... | @@ -965,6 +965,38 @@ void net_disconnect(H3270 *session) |
965 | 965 | |
966 | 966 | } |
967 | 967 | |
968 | + | |
969 | +LIB3270_EXPORT void lib3270_data_recv(H3270 *hSession, size_t nr, const unsigned char *netrbuf) | |
970 | +{ | |
971 | + register const unsigned char * cp; | |
972 | + | |
973 | + trace_netdata('<', netrbuf, nr); | |
974 | + | |
975 | + hSession->ns_brcvd += nr; | |
976 | + for (cp = netrbuf; cp < (netrbuf + nr); cp++) | |
977 | + { | |
978 | + if(telnet_fsm(hSession,*cp)) | |
979 | + { | |
980 | + (void) ctlr_dbcs_postprocess(); | |
981 | + host_disconnect(hSession,True); | |
982 | + return; | |
983 | + } | |
984 | + } | |
985 | + | |
986 | +#if defined(X3270_ANSI) | |
987 | + if (IN_ANSI) | |
988 | + { | |
989 | + (void) ctlr_dbcs_postprocess(); | |
990 | + } | |
991 | + | |
992 | + if (hSession->ansi_data) | |
993 | + { | |
994 | + trace_dsn("\n"); | |
995 | + hSession->ansi_data = 0; | |
996 | + } | |
997 | +#endif // X3270_ANSI | |
998 | +} | |
999 | + | |
968 | 1000 | |
969 | 1001 | /* |
970 | 1002 | * net_input |
... | ... | @@ -974,8 +1006,9 @@ void net_disconnect(H3270 *session) |
974 | 1006 | */ |
975 | 1007 | void net_input(H3270 *session) |
976 | 1008 | { |
977 | - register unsigned char *cp; | |
978 | - int nr; | |
1009 | +// register unsigned char * cp; | |
1010 | + int nr; | |
1011 | + unsigned char buffer[BUFSZ]; | |
979 | 1012 | |
980 | 1013 | CHECK_SESSION_HANDLE(session); |
981 | 1014 | |
... | ... | @@ -986,46 +1019,21 @@ void net_input(H3270 *session) |
986 | 1019 | if (session->sock < 0) |
987 | 1020 | return; |
988 | 1021 | |
989 | -/* | |
990 | -#if defined(_WIN32) | |
991 | - if (HALF_CONNECTED) { | |
992 | - | |
993 | - if (connect(session->sock, &haddr.sa, sizeof(haddr)) < 0) { | |
994 | - int err = GetLastError(); | |
995 | - | |
996 | - switch (err) { | |
997 | - case WSAEISCONN: | |
998 | - connection_complete(session); | |
999 | - // and go get data...? | |
1000 | - break; | |
1001 | - case WSAEALREADY: | |
1002 | - case WSAEWOULDBLOCK: | |
1003 | - case WSAEINVAL: | |
1004 | - return; | |
1005 | - default: | |
1006 | - lib3270_popup_dialog(session,LIB3270_NOTIFY_CRITICAL,N_( "Network startup error" ),N_( "Second connect() failed" ),"%s", win32_strerror(GetLastError()) ); | |
1007 | - _exit(1); | |
1008 | - } | |
1009 | - } | |
1010 | - } | |
1022 | +#if defined(X3270_ANSI) | |
1023 | + session->ansi_data = 0; | |
1011 | 1024 | #endif |
1012 | -*/ | |
1013 | - | |
1014 | -#if defined(X3270_ANSI) /*[*/ | |
1015 | - session->ansi_data = 0; | |
1016 | -#endif /*]*/ | |
1017 | 1025 | |
1018 | 1026 | #if defined(_WIN32) |
1019 | - ResetEvent(session->sockEvent); | |
1027 | + ResetEvent(session->sockEvent); | |
1020 | 1028 | #endif |
1021 | 1029 | |
1022 | 1030 | #if defined(HAVE_LIBSSL) |
1023 | 1031 | if (session->ssl_con != NULL) |
1024 | - nr = SSL_read(session->ssl_con, (char *) session->netrbuf, BUFSZ); | |
1032 | + nr = SSL_read(session->ssl_con, (char *) buffer, BUFSZ); | |
1025 | 1033 | else |
1026 | - nr = recv(session->sock, (char *) session->netrbuf, BUFSZ, 0); | |
1034 | + nr = recv(session->sock, (char *) buffer, BUFSZ, 0); | |
1027 | 1035 | #else |
1028 | - nr = recv(session->sock, (char *) session->netrbuf, BUFSZ, 0); | |
1036 | + nr = recv(session->sock, (char *) buffer, BUFSZ, 0); | |
1029 | 1037 | #endif // HAVE_LIBSSL |
1030 | 1038 | |
1031 | 1039 | if (nr < 0) |
... | ... | @@ -1064,7 +1072,7 @@ void net_input(H3270 *session) |
1064 | 1072 | |
1065 | 1073 | if (HALF_CONNECTED) |
1066 | 1074 | { |
1067 | - popup_a_sockerr(session, N_( "%s:%d" ),h3270.hostname, h3270.current_port); | |
1075 | + popup_a_sockerr(session, N_( "%s:%d" ),session->hostname, session->current_port); | |
1068 | 1076 | } |
1069 | 1077 | else if (socket_errno() != SE_ECONNRESET) |
1070 | 1078 | { |
... | ... | @@ -1093,6 +1101,9 @@ void net_input(H3270 *session) |
1093 | 1101 | net_connected(session); |
1094 | 1102 | } |
1095 | 1103 | |
1104 | + lib3270_data_recv(session, nr, buffer); | |
1105 | + | |
1106 | +/* | |
1096 | 1107 | trace_netdata('<', session->netrbuf, nr); |
1097 | 1108 | |
1098 | 1109 | session->ns_brcvd += nr; |
... | ... | @@ -1118,7 +1129,7 @@ void net_input(H3270 *session) |
1118 | 1129 | session->ansi_data = 0; |
1119 | 1130 | } |
1120 | 1131 | #endif // X3270_ANSI |
1121 | - | |
1132 | +*/ | |
1122 | 1133 | } |
1123 | 1134 | |
1124 | 1135 | } | ... | ... |