Commit 0cba41a136921bb004adab04d58a69839c4dc5fa
1 parent
3f562161
Exists in
master
and in
3 other branches
Movendo globais para a estrutura de sessao
Showing
1 changed file
with
41 additions
and
41 deletions
Show diff stats
telnet.c
... | ... | @@ -166,12 +166,15 @@ Boolean local_process = False; |
166 | 166 | // static unsigned char telnet_state; |
167 | 167 | // static char ttype_tmpval[13]; |
168 | 168 | |
169 | -#if defined(X3270_TN3270E) /*[*/ | |
170 | -static unsigned long e_funcs; /* negotiated TN3270E functions */ | |
171 | -#define E_OPT(n) (1 << (n)) | |
172 | -static unsigned short e_xmit_seq; /* transmit sequence number */ | |
173 | -static int response_required; | |
174 | -#endif /*]*/ | |
169 | +#if defined(X3270_TN3270E) | |
170 | + #define E_OPT(n) (1 << (n)) | |
171 | +#endif // X3270_TN3270E | |
172 | + | |
173 | +//#if defined(X3270_TN3270E) | |
174 | +//static unsigned long e_funcs; /* negotiated TN3270E functions */ | |
175 | +//static unsigned short e_xmit_seq; /* transmit sequence number */ | |
176 | +//static int response_required; | |
177 | +//#endif | |
175 | 178 | |
176 | 179 | #if defined(X3270_ANSI) /*[*/ |
177 | 180 | static int ansi_data = 0; |
... | ... | @@ -866,11 +869,9 @@ static void net_connected(H3270 *session) |
866 | 869 | (void) memset((char *) h3270.hisopts, 0, sizeof(h3270.hisopts)); |
867 | 870 | |
868 | 871 | #if defined(X3270_TN3270E) /*[*/ |
869 | - e_funcs = E_OPT(TN3270E_FUNC_BIND_IMAGE) | | |
870 | - E_OPT(TN3270E_FUNC_RESPONSES) | | |
871 | - E_OPT(TN3270E_FUNC_SYSREQ); | |
872 | - e_xmit_seq = 0; | |
873 | - response_required = TN3270E_RSF_NO_RESPONSE; | |
872 | + h3270.e_funcs = E_OPT(TN3270E_FUNC_BIND_IMAGE) | E_OPT(TN3270E_FUNC_RESPONSES) | E_OPT(TN3270E_FUNC_SYSREQ); | |
873 | + h3270.e_xmit_seq = 0; | |
874 | + h3270.response_required = TN3270E_RSF_NO_RESPONSE; | |
874 | 875 | #endif /*]*/ |
875 | 876 | |
876 | 877 | #if defined(HAVE_LIBSSL) /*[*/ |
... | ... | @@ -1649,7 +1650,7 @@ tn3270e_negotiate(void) |
1649 | 1650 | } |
1650 | 1651 | |
1651 | 1652 | /* Tell them what we can do. */ |
1652 | - tn3270e_subneg_send(TN3270E_OP_REQUEST, e_funcs); | |
1653 | + tn3270e_subneg_send(TN3270E_OP_REQUEST, h3270.e_funcs); | |
1653 | 1654 | break; |
1654 | 1655 | } |
1655 | 1656 | case TN3270E_OP_REJECT: |
... | ... | @@ -1695,10 +1696,10 @@ tn3270e_negotiate(void) |
1695 | 1696 | tn3270e_function_names(h3270.sbbuf+3, sblen-3)); |
1696 | 1697 | |
1697 | 1698 | e_rcvd = tn3270e_fdecode(h3270.sbbuf+3, sblen-3); |
1698 | - if ((e_rcvd == e_funcs) || (e_funcs & ~e_rcvd)) { | |
1699 | + if ((e_rcvd == h3270.e_funcs) || (h3270.e_funcs & ~e_rcvd)) { | |
1699 | 1700 | /* They want what we want, or less. Done. */ |
1700 | - e_funcs = e_rcvd; | |
1701 | - tn3270e_subneg_send(TN3270E_OP_IS, e_funcs); | |
1701 | + h3270.e_funcs = e_rcvd; | |
1702 | + tn3270e_subneg_send(TN3270E_OP_IS, h3270.e_funcs); | |
1702 | 1703 | tn3270e_negotiated = 1; |
1703 | 1704 | trace_dsn("TN3270E option negotiation complete.\n"); |
1704 | 1705 | check_in3270(&h3270); |
... | ... | @@ -1707,8 +1708,8 @@ tn3270e_negotiate(void) |
1707 | 1708 | * They want us to do something we can't. |
1708 | 1709 | * Request the common subset. |
1709 | 1710 | */ |
1710 | - e_funcs &= e_rcvd; | |
1711 | - tn3270e_subneg_send(TN3270E_OP_REQUEST,e_funcs); | |
1711 | + h3270.e_funcs &= e_rcvd; | |
1712 | + tn3270e_subneg_send(TN3270E_OP_REQUEST,h3270.e_funcs); | |
1712 | 1713 | } |
1713 | 1714 | break; |
1714 | 1715 | |
... | ... | @@ -1718,14 +1719,14 @@ tn3270e_negotiate(void) |
1718 | 1719 | trace_dsn("IS %s SE\n", |
1719 | 1720 | tn3270e_function_names(h3270.sbbuf+3, sblen-3)); |
1720 | 1721 | e_rcvd = tn3270e_fdecode(h3270.sbbuf+3, sblen-3); |
1721 | - if (e_rcvd != e_funcs) { | |
1722 | - if (e_funcs & ~e_rcvd) { | |
1722 | + if (e_rcvd != h3270.e_funcs) { | |
1723 | + if (h3270.e_funcs & ~e_rcvd) { | |
1723 | 1724 | /* |
1724 | 1725 | * They've removed something. This is |
1725 | 1726 | * technically illegal, but we can |
1726 | 1727 | * live with it. |
1727 | 1728 | */ |
1728 | - e_funcs = e_rcvd; | |
1729 | + h3270.e_funcs = e_rcvd; | |
1729 | 1730 | } else { |
1730 | 1731 | /* |
1731 | 1732 | * They've added something. Abandon |
... | ... | @@ -1781,10 +1782,10 @@ tn3270e_current_opts(void) |
1781 | 1782 | static char text_buf[1024]; |
1782 | 1783 | char *s = text_buf; |
1783 | 1784 | |
1784 | - if (!e_funcs || !IN_E) | |
1785 | + if (!h3270.e_funcs || !IN_E) | |
1785 | 1786 | return CN; |
1786 | 1787 | for (i = 0; i < 32; i++) { |
1787 | - if (e_funcs & E_OPT(i)) | |
1788 | + if (h3270.e_funcs & E_OPT(i)) | |
1788 | 1789 | s += sprintf(s, "%s%s", (s == text_buf) ? "" : " ", |
1789 | 1790 | fnn(i)); |
1790 | 1791 | } |
... | ... | @@ -1884,24 +1885,24 @@ process_eor(void) |
1884 | 1885 | |
1885 | 1886 | switch (h->data_type) { |
1886 | 1887 | case TN3270E_DT_3270_DATA: |
1887 | - if ((e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE)) && | |
1888 | + if ((h3270.e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE)) && | |
1888 | 1889 | !tn3270e_bound) |
1889 | 1890 | return 0; |
1890 | 1891 | tn3270e_submode = E_3270; |
1891 | 1892 | check_in3270(&h3270); |
1892 | - response_required = h->response_flag; | |
1893 | + h3270.response_required = h->response_flag; | |
1893 | 1894 | rv = process_ds(h3270.ibuf + EH_SIZE, |
1894 | 1895 | (h3270.ibptr - h3270.ibuf) - EH_SIZE); |
1895 | 1896 | if (rv < 0 && |
1896 | - response_required != TN3270E_RSF_NO_RESPONSE) | |
1897 | + h3270.response_required != TN3270E_RSF_NO_RESPONSE) | |
1897 | 1898 | tn3270e_nak(rv); |
1898 | 1899 | else if (rv == PDS_OKAY_NO_OUTPUT && |
1899 | - response_required == TN3270E_RSF_ALWAYS_RESPONSE) | |
1900 | + h3270.response_required == TN3270E_RSF_ALWAYS_RESPONSE) | |
1900 | 1901 | tn3270e_ack(); |
1901 | - response_required = TN3270E_RSF_NO_RESPONSE; | |
1902 | + h3270.response_required = TN3270E_RSF_NO_RESPONSE; | |
1902 | 1903 | return 0; |
1903 | 1904 | case TN3270E_DT_BIND_IMAGE: |
1904 | - if (!(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) | |
1905 | + if (!(h3270.e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) | |
1905 | 1906 | return 0; |
1906 | 1907 | process_bind(h3270.ibuf + EH_SIZE, (h3270.ibptr - h3270.ibuf) - EH_SIZE); |
1907 | 1908 | trace_dsn("< BIND PLU-name '%s'\n", plu_name); |
... | ... | @@ -1909,7 +1910,7 @@ process_eor(void) |
1909 | 1910 | check_in3270(&h3270); |
1910 | 1911 | return 0; |
1911 | 1912 | case TN3270E_DT_UNBIND: |
1912 | - if (!(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) | |
1913 | + if (!(h3270.e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) | |
1913 | 1914 | return 0; |
1914 | 1915 | tn3270e_bound = 0; |
1915 | 1916 | if (tn3270e_submode == E_3270) |
... | ... | @@ -1925,7 +1926,7 @@ process_eor(void) |
1925 | 1926 | } |
1926 | 1927 | return 0; |
1927 | 1928 | case TN3270E_DT_SSCP_LU_DATA: |
1928 | - if (!(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) | |
1929 | + if (!(h3270.e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) | |
1929 | 1930 | return 0; |
1930 | 1931 | tn3270e_submode = E_SSCP; |
1931 | 1932 | check_in3270(&h3270); |
... | ... | @@ -2685,9 +2686,9 @@ net_output(void) |
2685 | 2686 | tn3270e_header *h = (tn3270e_header *) h3270.obuf_base; |
2686 | 2687 | |
2687 | 2688 | /* Check for sending a TN3270E response. */ |
2688 | - if (response_required == TN3270E_RSF_ALWAYS_RESPONSE) { | |
2689 | + if (h3270.response_required == TN3270E_RSF_ALWAYS_RESPONSE) { | |
2689 | 2690 | tn3270e_ack(); |
2690 | - response_required = TN3270E_RSF_NO_RESPONSE; | |
2691 | + h3270.response_required = TN3270E_RSF_NO_RESPONSE; | |
2691 | 2692 | } |
2692 | 2693 | |
2693 | 2694 | /* Set the outbound TN3270E header. */ |
... | ... | @@ -2695,13 +2696,12 @@ net_output(void) |
2695 | 2696 | TN3270E_DT_3270_DATA : TN3270E_DT_SSCP_LU_DATA; |
2696 | 2697 | h->request_flag = 0; |
2697 | 2698 | h->response_flag = 0; |
2698 | - h->seq_number[0] = (e_xmit_seq >> 8) & 0xff; | |
2699 | - h->seq_number[1] = e_xmit_seq & 0xff; | |
2699 | + h->seq_number[0] = (h3270.e_xmit_seq >> 8) & 0xff; | |
2700 | + h->seq_number[1] = h3270.e_xmit_seq & 0xff; | |
2700 | 2701 | |
2701 | - trace_dsn("SENT TN3270E(%s NO-RESPONSE %u)\n", | |
2702 | - IN_TN3270E ? "3270-DATA" : "SSCP-LU-DATA", e_xmit_seq); | |
2703 | - if (e_funcs & E_OPT(TN3270E_FUNC_RESPONSES)) | |
2704 | - e_xmit_seq = (e_xmit_seq + 1) & 0x7fff; | |
2702 | + trace_dsn("SENT TN3270E(%s NO-RESPONSE %u)\n",IN_TN3270E ? "3270-DATA" : "SSCP-LU-DATA", h3270.e_xmit_seq); | |
2703 | + if (h3270.e_funcs & E_OPT(TN3270E_FUNC_RESPONSES)) | |
2704 | + h3270.e_xmit_seq = (h3270.e_xmit_seq + 1) & 0x7fff; | |
2705 | 2705 | } |
2706 | 2706 | #endif /*]*/ |
2707 | 2707 | |
... | ... | @@ -2994,7 +2994,7 @@ net_abort(void) |
2994 | 2994 | { |
2995 | 2995 | static unsigned char buf[] = { IAC, AO }; |
2996 | 2996 | |
2997 | - if (e_funcs & E_OPT(TN3270E_FUNC_SYSREQ)) { | |
2997 | + if (h3270.e_funcs & E_OPT(TN3270E_FUNC_SYSREQ)) { | |
2998 | 2998 | /* |
2999 | 2999 | * I'm not sure yet what to do here. Should the host respond |
3000 | 3000 | * to the AO by sending us SSCP-LU data (and putting us into |
... | ... | @@ -3009,7 +3009,7 @@ net_abort(void) |
3009 | 3009 | net_rawout(&h3270, buf, sizeof(buf)); |
3010 | 3010 | trace_dsn("SENT AO\n"); |
3011 | 3011 | if (tn3270e_bound || |
3012 | - !(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) { | |
3012 | + !(h3270.e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) { | |
3013 | 3013 | tn3270e_submode = E_3270; |
3014 | 3014 | check_in3270(&h3270); |
3015 | 3015 | } |
... | ... | @@ -3151,7 +3151,7 @@ net_snap_options(void) |
3151 | 3151 | h3270.obptr += 4; |
3152 | 3152 | *h3270.obptr++ = TN3270E_OP_IS; |
3153 | 3153 | for (i = 0; i < 32; i++) { |
3154 | - if (e_funcs & E_OPT(i)) | |
3154 | + if (h3270.e_funcs & E_OPT(i)) | |
3155 | 3155 | *h3270.obptr++ = i; |
3156 | 3156 | } |
3157 | 3157 | *h3270.obptr++ = IAC; | ... | ... |