Commit cb7afe0c04133066186f15a24a8e416f81fd7e98
1 parent
4fd1f48a
Exists in
master
and in
5 other branches
Ajustes para multi-sessão
Showing
5 changed files
with
80 additions
and
93 deletions
Show diff stats
src/lib3270/ft.c
... | ... | @@ -75,9 +75,7 @@ static void ft_in3270(H3270 *session, int ignored unused, void *unused); |
75 | 75 | #define BN (Boolean *)NULL |
76 | 76 | |
77 | 77 | // Globals. |
78 | -static H3270FT *ftsession = NULL; | |
79 | - | |
80 | -#define CHECK_FT_HANDLE(x) if(!x) x = ftsession; | |
78 | +H3270FT *ftsession = NULL; | |
81 | 79 | |
82 | 80 | // enum ft_state ft_state = FT_NONE; // File transfer state |
83 | 81 | // char *ft_local_filename; // Local file to transfer to/from | ... | ... |
src/lib3270/ftc.h
... | ... | @@ -20,25 +20,24 @@ |
20 | 20 | |
21 | 21 | #if defined(X3270_FT) /*[*/ |
22 | 22 | |
23 | -#include <lib3270/filetransfer.h> | |
23 | + #include <lib3270/filetransfer.h> | |
24 | 24 | |
25 | -LIB3270_INTERNAL Boolean ascii_flag; | |
26 | -LIB3270_INTERNAL Boolean cr_flag; | |
27 | -LIB3270_INTERNAL unsigned long ft_length; | |
25 | + #define CHECK_FT_HANDLE(x) if(!x) x = ftsession; | |
28 | 26 | |
29 | -// LIB3270_INTERNAL H3270FT * ftsession; | |
27 | + LIB3270_INTERNAL Boolean ascii_flag; | |
28 | + LIB3270_INTERNAL Boolean cr_flag; | |
29 | + LIB3270_INTERNAL unsigned long ft_length; | |
30 | 30 | |
31 | -// LIB3270_INTERNAL FILE *ft_local_file; | |
32 | -// extern char *ft_local_filename; | |
31 | + LIB3270_INTERNAL H3270FT * ftsession; | |
33 | 32 | |
34 | -LIB3270_INTERNAL Boolean ft_last_cr; | |
35 | -LIB3270_INTERNAL Boolean remap_flag; | |
33 | + LIB3270_INTERNAL Boolean ft_last_cr; | |
34 | + LIB3270_INTERNAL Boolean remap_flag; | |
36 | 35 | |
37 | -LIB3270_INTERNAL void ft_init(H3270 *session); | |
36 | + LIB3270_INTERNAL void ft_init(H3270 *session); | |
38 | 37 | |
39 | -LIB3270_INTERNAL void ft_aborting(H3270FT *h); | |
40 | -LIB3270_INTERNAL void ft_complete(H3270FT *h, const char *errmsg); | |
41 | -LIB3270_INTERNAL void ft_running(H3270FT *h, Boolean is_cut); | |
42 | -LIB3270_INTERNAL void ft_update_length(H3270FT *h); | |
38 | + LIB3270_INTERNAL void ft_aborting(H3270FT *h); | |
39 | + LIB3270_INTERNAL void ft_complete(H3270FT *h, const char *errmsg); | |
40 | + LIB3270_INTERNAL void ft_running(H3270FT *h, Boolean is_cut); | |
41 | + LIB3270_INTERNAL void ft_update_length(H3270FT *h); | |
43 | 42 | |
44 | 43 | #endif /*]*/ | ... | ... |
src/lib3270/kybd.c
... | ... | @@ -394,11 +394,11 @@ kybd_inhibit(Boolean inhibit) |
394 | 394 | if (inhibit) { |
395 | 395 | kybdlock_set(KL_ENTER_INHIBIT, "kybd_inhibit"); |
396 | 396 | if (kybdlock == KL_ENTER_INHIBIT) |
397 | - status_reset(NULL); | |
397 | + status_reset(&h3270); | |
398 | 398 | } else { |
399 | 399 | kybdlock_clr(KL_ENTER_INHIBIT, "kybd_inhibit"); |
400 | 400 | if (!kybdlock) |
401 | - status_reset(NULL); | |
401 | + status_reset(&h3270); | |
402 | 402 | } |
403 | 403 | } |
404 | 404 | |
... | ... | @@ -1406,7 +1406,7 @@ LIB3270_KEY_ACTION( backtab ) |
1406 | 1406 | if (kybdlock) { |
1407 | 1407 | if (KYBDLOCK_IS_OERR) { |
1408 | 1408 | kybdlock_clr(KL_OERR_MASK, "BackTab"); |
1409 | - status_reset(NULL); | |
1409 | + status_reset(&h3270); | |
1410 | 1410 | } else { |
1411 | 1411 | ENQUEUE_ACTION(lib3270_backtab); |
1412 | 1412 | return 0; |
... | ... | @@ -1515,7 +1515,7 @@ do_reset(Boolean explicit) |
1515 | 1515 | } |
1516 | 1516 | |
1517 | 1517 | /* Clean up other modes. */ |
1518 | - status_reset(NULL); | |
1518 | + status_reset(&h3270); | |
1519 | 1519 | mcursor_normal(&h3270); |
1520 | 1520 | |
1521 | 1521 | } |
... | ... | @@ -1586,7 +1586,7 @@ LIB3270_CURSOR_ACTION( left ) |
1586 | 1586 | if (KYBDLOCK_IS_OERR) |
1587 | 1587 | { |
1588 | 1588 | kybdlock_clr(KL_OERR_MASK, "Left"); |
1589 | - status_reset(NULL); | |
1589 | + status_reset(&h3270); | |
1590 | 1590 | } |
1591 | 1591 | else |
1592 | 1592 | { |
... | ... | @@ -1848,7 +1848,7 @@ LIB3270_CURSOR_ACTION( right ) |
1848 | 1848 | if (KYBDLOCK_IS_OERR) |
1849 | 1849 | { |
1850 | 1850 | kybdlock_clr(KL_OERR_MASK, "Right"); |
1851 | - status_reset(NULL); | |
1851 | + status_reset(&h3270); | |
1852 | 1852 | } |
1853 | 1853 | else |
1854 | 1854 | { |
... | ... | @@ -1893,7 +1893,7 @@ Left2_action(Widget w unused, XEvent *event, String *params, |
1893 | 1893 | if (kybdlock) { |
1894 | 1894 | if (KYBDLOCK_IS_OERR) { |
1895 | 1895 | kybdlock_clr(KL_OERR_MASK, "Left2"); |
1896 | - status_reset(); | |
1896 | + status_reset(&h3270); | |
1897 | 1897 | } else { |
1898 | 1898 | enq_ta(Left2_action, CN, CN); |
1899 | 1899 | return; |
... | ... | @@ -1998,7 +1998,7 @@ Right2_action(Widget w unused, XEvent *event, String *params, |
1998 | 1998 | if (kybdlock) { |
1999 | 1999 | if (KYBDLOCK_IS_OERR) { |
2000 | 2000 | kybdlock_clr(KL_OERR_MASK, "Right2"); |
2001 | - status_reset(); | |
2001 | + status_reset(&h3270); | |
2002 | 2002 | } else { |
2003 | 2003 | enq_ta(Right2_action, CN, CN); |
2004 | 2004 | return; |
... | ... | @@ -2151,7 +2151,7 @@ LIB3270_CURSOR_ACTION( up ) |
2151 | 2151 | if (KYBDLOCK_IS_OERR) |
2152 | 2152 | { |
2153 | 2153 | kybdlock_clr(KL_OERR_MASK, "Up"); |
2154 | - status_reset(NULL); | |
2154 | + status_reset(&h3270); | |
2155 | 2155 | } |
2156 | 2156 | else |
2157 | 2157 | { |
... | ... | @@ -2189,7 +2189,7 @@ LIB3270_CURSOR_ACTION( down ) |
2189 | 2189 | if (KYBDLOCK_IS_OERR) |
2190 | 2190 | { |
2191 | 2191 | kybdlock_clr(KL_OERR_MASK, "Down"); |
2192 | - status_reset(NULL); | |
2192 | + status_reset(&h3270); | |
2193 | 2193 | } else |
2194 | 2194 | { |
2195 | 2195 | ENQUEUE_ACTION(lib3270_cursor_down); | ... | ... |
src/lib3270/sf.c
... | ... | @@ -50,9 +50,11 @@ |
50 | 50 | |
51 | 51 | #include "charsetc.h" |
52 | 52 | #include "ctlrc.h" |
53 | -#if defined(X3270_FT) /*[*/ | |
54 | -#include "ft_dftc.h" | |
55 | -#endif /*]*/ | |
53 | + | |
54 | +#if defined(X3270_FT) | |
55 | + #include "ft_dftc.h" | |
56 | +#endif | |
57 | + | |
56 | 58 | #include "kybdc.h" |
57 | 59 | #include "screenc.h" |
58 | 60 | #include "seec.h" | ... | ... |
src/lib3270/telnet.c
... | ... | @@ -203,9 +203,9 @@ static char *proxy_host = CN; |
203 | 203 | static char *proxy_portname = CN; |
204 | 204 | static unsigned short proxy_port = 0; |
205 | 205 | |
206 | -static int telnet_fsm(unsigned char c); | |
206 | +static int telnet_fsm(H3270 *session, unsigned char c); | |
207 | 207 | static void net_rawout(unsigned const char *buf, int len); |
208 | -static void check_in3270(void); | |
208 | +static void check_in3270(H3270 *session); | |
209 | 209 | static void store3270in(unsigned char c); |
210 | 210 | static void check_linemode(Boolean init); |
211 | 211 | static int non_blocking(H3270 *session, Boolean on); |
... | ... | @@ -609,14 +609,14 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo |
609 | 609 | haddr.sin.sin_port = passthru_port; |
610 | 610 | ha_len = sizeof(struct sockaddr_in); |
611 | 611 | } else if (proxy_type > 0) { |
612 | - if (resolve_host_and_port(&h3270,proxy_host, proxy_portname, | |
612 | + if (resolve_host_and_port(session,proxy_host, proxy_portname, | |
613 | 613 | &proxy_port, &haddr.sa, &ha_len, errmsg, |
614 | 614 | sizeof(errmsg)) < 0) { |
615 | 615 | popup_an_error(session,errmsg); |
616 | 616 | return -1; |
617 | 617 | } |
618 | 618 | } else { |
619 | - if (resolve_host_and_port(&h3270,host, portname, | |
619 | + if (resolve_host_and_port(session,host, portname, | |
620 | 620 | &session->current_port, &haddr.sa, &ha_len, |
621 | 621 | errmsg, sizeof(errmsg)) < 0) { |
622 | 622 | popup_an_error(session,errmsg); |
... | ... | @@ -818,7 +818,7 @@ static void net_connected(H3270 *session) |
818 | 818 | if (SSL_set_fd(session->ssl_con, session->sock) != 1) |
819 | 819 | { |
820 | 820 | trace_dsn("Can't set fd!\n"); |
821 | - popup_system_error(&h3270,_( "Connection failed" ), _( "Can't set SSL socket file descriptor" ), "%s", SSL_state_string_long(session->ssl_con)); | |
821 | + popup_system_error(session,_( "Connection failed" ), _( "Can't set SSL socket file descriptor" ), "%s", SSL_state_string_long(session->ssl_con)); | |
822 | 822 | set_ssl_state(session,LIB3270_SSL_UNSECURE); |
823 | 823 | } |
824 | 824 | else |
... | ... | @@ -836,11 +836,7 @@ static void net_connected(H3270 *session) |
836 | 836 | |
837 | 837 | if(e != session->last_ssl_error) |
838 | 838 | { |
839 | - session->message( &h3270, | |
840 | - LIB3270_NOTIFY_ERROR, | |
841 | - _( "Connection failed" ), | |
842 | - _( "SSL negotiation failed" ), | |
843 | - state); | |
839 | + session->message(session,LIB3270_NOTIFY_ERROR,_( "Connection failed" ),_( "SSL negotiation failed" ),state); | |
844 | 840 | session->last_ssl_error = e; |
845 | 841 | } |
846 | 842 | return; |
... | ... | @@ -907,15 +903,15 @@ static void net_connected(H3270 *session) |
907 | 903 | * appeared ready but recv() returned EWOULDBLOCK). Complete the |
908 | 904 | * connection-completion processing. |
909 | 905 | */ |
910 | -static void connection_complete(void) | |
906 | +static void connection_complete(H3270 *session) | |
911 | 907 | { |
912 | - if (non_blocking(&h3270,False) < 0) | |
908 | + if (non_blocking(session,False) < 0) | |
913 | 909 | { |
914 | - host_disconnect(&h3270,True); | |
910 | + host_disconnect(session,True); | |
915 | 911 | return; |
916 | 912 | } |
917 | - host_connected(&h3270); | |
918 | - net_connected(&h3270); | |
913 | + host_connected(session); | |
914 | + net_connected(session); | |
919 | 915 | } |
920 | 916 | |
921 | 917 | /* |
... | ... | @@ -950,7 +946,7 @@ void net_disconnect(H3270 *session) |
950 | 946 | |
951 | 947 | /* We're not connected to an LU any more. */ |
952 | 948 | session->connected_lu = CN; |
953 | - status_lu(&h3270,CN); | |
949 | + status_lu(session,CN); | |
954 | 950 | |
955 | 951 | } |
956 | 952 | |
... | ... | @@ -984,7 +980,7 @@ void net_input(H3270 *session) |
984 | 980 | |
985 | 981 | switch (err) { |
986 | 982 | case WSAEISCONN: |
987 | - connection_complete(); | |
983 | + connection_complete(session); | |
988 | 984 | // and go get data...? |
989 | 985 | break; |
990 | 986 | case WSAEALREADY: |
... | ... | @@ -992,11 +988,7 @@ void net_input(H3270 *session) |
992 | 988 | case WSAEINVAL: |
993 | 989 | return; |
994 | 990 | default: |
995 | - lib3270_popup_dialog( &h3270, | |
996 | - LIB3270_NOTIFY_CRITICAL, | |
997 | - N_( "Network startup error" ), | |
998 | - N_( "Second connect() failed" ), | |
999 | - "%s", win32_strerror(GetLastError()) ); | |
991 | + lib3270_popup_dialog(session,LIB3270_NOTIFY_CRITICAL,N_( "Network startup error" ),N_( "Second connect() failed" ),"%s", win32_strerror(GetLastError()) ); | |
1000 | 992 | _exit(1); |
1001 | 993 | } |
1002 | 994 | } |
... | ... | @@ -1040,11 +1032,7 @@ void net_input(H3270 *session) |
1040 | 1032 | |
1041 | 1033 | trace_dsn("RCVD SSL_read error %ld (%s)\n", e,err_buf); |
1042 | 1034 | |
1043 | - h3270.message( &h3270, | |
1044 | - LIB3270_NOTIFY_ERROR, | |
1045 | - _( "SSL Error" ), | |
1046 | - _( "SSL Read error" ), | |
1047 | - err_buf ); | |
1035 | + session->message( session,LIB3270_NOTIFY_ERROR,_( "SSL Error" ),_( "SSL Read error" ),err_buf ); | |
1048 | 1036 | |
1049 | 1037 | host_disconnect(session,True); |
1050 | 1038 | return; |
... | ... | @@ -1053,7 +1041,7 @@ void net_input(H3270 *session) |
1053 | 1041 | |
1054 | 1042 | if (HALF_CONNECTED && socket_errno() == SE_EAGAIN) |
1055 | 1043 | { |
1056 | - connection_complete(); | |
1044 | + connection_complete(session); | |
1057 | 1045 | return; |
1058 | 1046 | } |
1059 | 1047 | |
... | ... | @@ -1095,7 +1083,7 @@ void net_input(H3270 *session) |
1095 | 1083 | ns_brcvd += nr; |
1096 | 1084 | for (cp = netrbuf; cp < (netrbuf + nr); cp++) |
1097 | 1085 | { |
1098 | - if (telnet_fsm(*cp)) | |
1086 | + if (telnet_fsm(session,*cp)) | |
1099 | 1087 | { |
1100 | 1088 | (void) ctlr_dbcs_postprocess(); |
1101 | 1089 | host_disconnect(session,True); |
... | ... | @@ -1177,8 +1165,7 @@ next_lu(void) |
1177 | 1165 | * Telnet finite-state machine. |
1178 | 1166 | * Returns 0 for okay, -1 for errors. |
1179 | 1167 | */ |
1180 | -static int | |
1181 | -telnet_fsm(unsigned char c) | |
1168 | +static int telnet_fsm(H3270 *session, unsigned char c) | |
1182 | 1169 | { |
1183 | 1170 | #if defined(X3270_ANSI) /*[*/ |
1184 | 1171 | char *see_chr; |
... | ... | @@ -1202,9 +1189,9 @@ telnet_fsm(unsigned char c) |
1202 | 1189 | if (linemode) |
1203 | 1190 | cooked_init(); |
1204 | 1191 | #endif /*]*/ |
1205 | - host_in3270(&h3270,CONNECTED_ANSI); | |
1192 | + host_in3270(session,CONNECTED_ANSI); | |
1206 | 1193 | kybdlock_clr(KL_AWAITING_FIRST, "telnet_fsm"); |
1207 | - status_reset(NULL); | |
1194 | + status_reset(session); | |
1208 | 1195 | ps_process(); |
1209 | 1196 | } |
1210 | 1197 | if (IN_ANSI && !IN_E) { |
... | ... | @@ -1220,9 +1207,9 @@ telnet_fsm(unsigned char c) |
1220 | 1207 | ansi_data = 4 + sl; |
1221 | 1208 | } |
1222 | 1209 | trace_dsn("%s",see_chr); |
1223 | - if (!h3270.syncing) | |
1210 | + if (!session->syncing) | |
1224 | 1211 | { |
1225 | - if (linemode && h3270.onlcr && c == '\n') | |
1212 | + if (linemode && session->onlcr && c == '\n') | |
1226 | 1213 | ansi_process((unsigned int) '\r'); |
1227 | 1214 | ansi_process((unsigned int) c); |
1228 | 1215 | // sms_store(c); |
... | ... | @@ -1289,10 +1276,10 @@ telnet_fsm(unsigned char c) |
1289 | 1276 | break; |
1290 | 1277 | case DM: |
1291 | 1278 | trace_dsn("\n"); |
1292 | - if (h3270.syncing) | |
1279 | + if (session->syncing) | |
1293 | 1280 | { |
1294 | - h3270.syncing = 0; | |
1295 | - x_except_on(&h3270); | |
1281 | + session->syncing = 0; | |
1282 | + x_except_on(session); | |
1296 | 1283 | } |
1297 | 1284 | telnet_state = TNS_DATA; |
1298 | 1285 | break; |
... | ... | @@ -1339,7 +1326,7 @@ telnet_fsm(unsigned char c) |
1339 | 1326 | cmd(WILL), opt(c)); |
1340 | 1327 | } |
1341 | 1328 | |
1342 | - check_in3270(); | |
1329 | + check_in3270(&h3270); | |
1343 | 1330 | check_linemode(False); |
1344 | 1331 | } |
1345 | 1332 | break; |
... | ... | @@ -1359,7 +1346,7 @@ telnet_fsm(unsigned char c) |
1359 | 1346 | dont_opt[2] = c; |
1360 | 1347 | net_rawout(dont_opt, sizeof(dont_opt)); |
1361 | 1348 | trace_dsn("SENT %s %s\n", cmd(DONT), opt(c)); |
1362 | - check_in3270(); | |
1349 | + check_in3270(&h3270); | |
1363 | 1350 | check_linemode(False); |
1364 | 1351 | } |
1365 | 1352 | telnet_state = TNS_DATA; |
... | ... | @@ -1379,9 +1366,9 @@ telnet_fsm(unsigned char c) |
1379 | 1366 | #if defined(HAVE_LIBSSL) /*[*/ |
1380 | 1367 | case TELOPT_STARTTLS: |
1381 | 1368 | #endif /*]*/ |
1382 | - if (c == TELOPT_TN3270E && h3270.non_tn3270e_host) | |
1369 | + if (c == TELOPT_TN3270E && session->non_tn3270e_host) | |
1383 | 1370 | goto wont; |
1384 | - if (c == TELOPT_TM && !h3270.bsd_tm) | |
1371 | + if (c == TELOPT_TM && !session->bsd_tm) | |
1385 | 1372 | goto wont; |
1386 | 1373 | |
1387 | 1374 | if (!myopts[c]) { |
... | ... | @@ -1390,7 +1377,7 @@ telnet_fsm(unsigned char c) |
1390 | 1377 | will_opt[2] = c; |
1391 | 1378 | net_rawout(will_opt, sizeof(will_opt)); |
1392 | 1379 | trace_dsn("SENT %s %s\n", cmd(WILL), opt(c)); |
1393 | - check_in3270(); | |
1380 | + check_in3270(&h3270); | |
1394 | 1381 | check_linemode(False); |
1395 | 1382 | } |
1396 | 1383 | if (c == TELOPT_NAWS) |
... | ... | @@ -1432,7 +1419,7 @@ telnet_fsm(unsigned char c) |
1432 | 1419 | wont_opt[2] = c; |
1433 | 1420 | net_rawout(wont_opt, sizeof(wont_opt)); |
1434 | 1421 | trace_dsn("SENT %s %s\n", cmd(WONT), opt(c)); |
1435 | - check_in3270(); | |
1422 | + check_in3270(&h3270); | |
1436 | 1423 | check_linemode(False); |
1437 | 1424 | } |
1438 | 1425 | telnet_state = TNS_DATA; |
... | ... | @@ -1460,19 +1447,19 @@ telnet_fsm(unsigned char c) |
1460 | 1447 | return -1; |
1461 | 1448 | } |
1462 | 1449 | |
1463 | - tt_len = strlen(h3270.termtype); | |
1450 | + tt_len = strlen(session->termtype); | |
1464 | 1451 | if (try_lu != CN && *try_lu) { |
1465 | 1452 | tt_len += strlen(try_lu) + 1; |
1466 | - h3270.connected_lu = try_lu; | |
1453 | + session->connected_lu = try_lu; | |
1467 | 1454 | } else |
1468 | - h3270.connected_lu = CN; | |
1469 | - status_lu(&h3270,h3270.connected_lu); | |
1455 | + session->connected_lu = CN; | |
1456 | + status_lu(session,session->connected_lu); | |
1470 | 1457 | |
1471 | 1458 | tb_len = 4 + tt_len + 2; |
1472 | 1459 | tt_out = lib3270_malloc(tb_len + 1); |
1473 | 1460 | (void) sprintf(tt_out, "%c%c%c%c%s%s%s%c%c", |
1474 | 1461 | IAC, SB, TELOPT_TTYPE, TELQUAL_IS, |
1475 | - h3270.termtype, | |
1462 | + session->termtype, | |
1476 | 1463 | (try_lu != CN && *try_lu) ? "@" : "", |
1477 | 1464 | (try_lu != CN && *try_lu) ? try_lu : "", |
1478 | 1465 | IAC, SE); |
... | ... | @@ -1569,7 +1556,7 @@ backoff_tn3270e(const char *why) |
1569 | 1556 | |
1570 | 1557 | /* Reset our internal state. */ |
1571 | 1558 | myopts[TELOPT_TN3270E] = 0; |
1572 | - check_in3270(); | |
1559 | + check_in3270(&h3270); | |
1573 | 1560 | } |
1574 | 1561 | |
1575 | 1562 | /* |
... | ... | @@ -1706,7 +1693,7 @@ tn3270e_negotiate(void) |
1706 | 1693 | tn3270e_subneg_send(TN3270E_OP_IS, e_funcs); |
1707 | 1694 | tn3270e_negotiated = 1; |
1708 | 1695 | trace_dsn("TN3270E option negotiation complete.\n"); |
1709 | - check_in3270(); | |
1696 | + check_in3270(&h3270); | |
1710 | 1697 | } else { |
1711 | 1698 | /* |
1712 | 1699 | * They want us to do something we can't. |
... | ... | @@ -1743,7 +1730,7 @@ tn3270e_negotiate(void) |
1743 | 1730 | } |
1744 | 1731 | tn3270e_negotiated = 1; |
1745 | 1732 | trace_dsn("TN3270E option negotiation complete.\n"); |
1746 | - check_in3270(); | |
1733 | + check_in3270(&h3270); | |
1747 | 1734 | break; |
1748 | 1735 | |
1749 | 1736 | default: |
... | ... | @@ -1894,7 +1881,7 @@ process_eor(void) |
1894 | 1881 | !tn3270e_bound) |
1895 | 1882 | return 0; |
1896 | 1883 | tn3270e_submode = E_3270; |
1897 | - check_in3270(); | |
1884 | + check_in3270(&h3270); | |
1898 | 1885 | response_required = h->response_flag; |
1899 | 1886 | rv = process_ds(ibuf + EH_SIZE, |
1900 | 1887 | (ibptr - ibuf) - EH_SIZE); |
... | ... | @@ -1912,7 +1899,7 @@ process_eor(void) |
1912 | 1899 | process_bind(ibuf + EH_SIZE, (ibptr - ibuf) - EH_SIZE); |
1913 | 1900 | trace_dsn("< BIND PLU-name '%s'\n", plu_name); |
1914 | 1901 | tn3270e_bound = 1; |
1915 | - check_in3270(); | |
1902 | + check_in3270(&h3270); | |
1916 | 1903 | return 0; |
1917 | 1904 | case TN3270E_DT_UNBIND: |
1918 | 1905 | if (!(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) |
... | ... | @@ -1920,12 +1907,12 @@ process_eor(void) |
1920 | 1907 | tn3270e_bound = 0; |
1921 | 1908 | if (tn3270e_submode == E_3270) |
1922 | 1909 | tn3270e_submode = E_NONE; |
1923 | - check_in3270(); | |
1910 | + check_in3270(&h3270); | |
1924 | 1911 | return 0; |
1925 | 1912 | case TN3270E_DT_NVT_DATA: |
1926 | 1913 | /* In tn3270e NVT mode */ |
1927 | 1914 | tn3270e_submode = E_NVT; |
1928 | - check_in3270(); | |
1915 | + check_in3270(&h3270); | |
1929 | 1916 | for (s = ibuf; s < ibptr; s++) { |
1930 | 1917 | ansi_process(*s++); |
1931 | 1918 | } |
... | ... | @@ -1934,7 +1921,7 @@ process_eor(void) |
1934 | 1921 | if (!(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) |
1935 | 1922 | return 0; |
1936 | 1923 | tn3270e_submode = E_SSCP; |
1937 | - check_in3270(); | |
1924 | + check_in3270(&h3270); | |
1938 | 1925 | ctlr_write_sscp_lu(ibuf + EH_SIZE, |
1939 | 1926 | (ibptr - ibuf) - EH_SIZE); |
1940 | 1927 | return 0; |
... | ... | @@ -2407,9 +2394,10 @@ do_lnext(char c) |
2407 | 2394 | * Check for switches between NVT, SSCP-LU and 3270 modes. |
2408 | 2395 | */ |
2409 | 2396 | static void |
2410 | -check_in3270(void) | |
2397 | +check_in3270(H3270 *session) | |
2411 | 2398 | { |
2412 | 2399 | LIB3270_CSTATE new_cstate = NOT_CONNECTED; |
2400 | + | |
2413 | 2401 | #if defined(X3270_TRACE) /*[*/ |
2414 | 2402 | static const char *state_name[] = { |
2415 | 2403 | "unconnected", |
... | ... | @@ -2451,14 +2439,14 @@ check_in3270(void) |
2451 | 2439 | hisopts[TELOPT_BINARY] && |
2452 | 2440 | hisopts[TELOPT_EOR]) { |
2453 | 2441 | new_cstate = CONNECTED_3270; |
2454 | - } else if (h3270.cstate == CONNECTED_INITIAL) { | |
2442 | + } else if (session->cstate == CONNECTED_INITIAL) { | |
2455 | 2443 | /* Nothing has happened, yet. */ |
2456 | 2444 | return; |
2457 | 2445 | } else { |
2458 | 2446 | new_cstate = CONNECTED_ANSI; |
2459 | 2447 | } |
2460 | 2448 | |
2461 | - if (new_cstate != h3270.cstate) { | |
2449 | + if (new_cstate != session->cstate) { | |
2462 | 2450 | #if defined(X3270_TN3270E) /*[*/ |
2463 | 2451 | int was_in_e = IN_E; |
2464 | 2452 | #endif /*]*/ |
... | ... | @@ -2498,7 +2486,7 @@ check_in3270(void) |
2498 | 2486 | } |
2499 | 2487 | #endif /*]*/ |
2500 | 2488 | trace_dsn("Now operating in %s mode.\n",state_name[new_cstate]); |
2501 | - host_in3270(&h3270,new_cstate); | |
2489 | + host_in3270(session,new_cstate); | |
2502 | 2490 | } |
2503 | 2491 | } |
2504 | 2492 | |
... | ... | @@ -3017,14 +3005,14 @@ net_abort(void) |
3017 | 3005 | if (tn3270e_bound || |
3018 | 3006 | !(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) { |
3019 | 3007 | tn3270e_submode = E_3270; |
3020 | - check_in3270(); | |
3008 | + check_in3270(&h3270); | |
3021 | 3009 | } |
3022 | 3010 | break; |
3023 | 3011 | case E_3270: |
3024 | 3012 | net_rawout(buf, sizeof(buf)); |
3025 | 3013 | trace_dsn("SENT AO\n"); |
3026 | 3014 | tn3270e_submode = E_SSCP; |
3027 | - check_in3270(); | |
3015 | + check_in3270(&h3270); | |
3028 | 3016 | break; |
3029 | 3017 | } |
3030 | 3018 | } | ... | ... |