Commit 770f6a8e3e5fa339feea7cf0a3d21786c803d3f0
1 parent
c8301151
Exists in
master
and in
5 other branches
Mais ajustes para multi-sessão
Showing
7 changed files
with
59 additions
and
52 deletions
Show diff stats
src/include/lib3270/session.h
src/lib3270/ctlr.c
... | ... | @@ -581,7 +581,7 @@ void ctlr_read_modified(H3270 *hSession, unsigned char aid_byte, Boolean all) |
581 | 581 | #if defined(X3270_FT) /*[*/ |
582 | 582 | if (aid_byte == AID_SF) |
583 | 583 | { |
584 | - dft_read_modified(); | |
584 | + dft_read_modified(hSession); | |
585 | 585 | return; |
586 | 586 | } |
587 | 587 | #endif /*]*/ |
... | ... | @@ -765,8 +765,9 @@ void ctlr_read_buffer(H3270 *hSession, unsigned char aid_byte) |
765 | 765 | unsigned char current_cs = 0x00; |
766 | 766 | |
767 | 767 | #if defined(X3270_FT) /*[*/ |
768 | - if (aid_byte == AID_SF) { | |
769 | - dft_read_modified(); | |
768 | + if (aid_byte == AID_SF) | |
769 | + { | |
770 | + dft_read_modified(hSession); | |
770 | 771 | return; |
771 | 772 | } |
772 | 773 | #endif /*]*/ | ... | ... |
src/lib3270/ft.c
... | ... | @@ -239,8 +239,8 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); |
239 | 239 | } |
240 | 240 | |
241 | 241 | // Set options |
242 | - dft_buffersize = dft; | |
243 | - set_dft_buffersize(); | |
242 | + session->dft_buffersize = dft; | |
243 | + set_dft_buffersize(session); | |
244 | 244 | |
245 | 245 | // Initialize ft control structure. |
246 | 246 | ft_last_cr = False; | ... | ... |
src/lib3270/ft_dft.c
... | ... | @@ -77,7 +77,7 @@ struct data_buffer { |
77 | 77 | }; |
78 | 78 | |
79 | 79 | /* Globals. */ |
80 | -int dft_buffersize = 0; /* Buffer size (LIMIN, LIMOUT) */ | |
80 | +// int dft_buffersize = 0; /* Buffer size (LIMIN, LIMOUT) */ | |
81 | 81 | |
82 | 82 | /* Statics. */ |
83 | 83 | static Boolean message_flag = False; /* Open Request for msg received */ |
... | ... | @@ -98,9 +98,11 @@ static void dft_open_request(unsigned short len, unsigned char *cp); |
98 | 98 | static void dft_set_cur_req(void); |
99 | 99 | static int filter_len(char *s, register int len); |
100 | 100 | |
101 | -/* Process a Transfer Data structured field from the host. */ | |
102 | -void | |
103 | -ft_dft_data(unsigned char *data, int length unused) | |
101 | +/** | |
102 | + * Process a Transfer Data structured field from the host. | |
103 | + * | |
104 | + */ | |
105 | +void ft_dft_data(H3270 *hSession, unsigned char *data, int length unused) | |
104 | 106 | { |
105 | 107 | struct data_buffer *data_bufr = (struct data_buffer *)data; |
106 | 108 | unsigned short data_length, data_type; |
... | ... | @@ -353,9 +355,9 @@ dft_get_request(void) |
353 | 355 | } |
354 | 356 | |
355 | 357 | /* Read a buffer's worth. */ |
356 | - set_dft_buffersize(); | |
357 | - space3270out(&h3270,dft_buffersize); | |
358 | - numbytes = dft_buffersize - 27; /* always read 5 bytes less than we're allowed */ | |
358 | + set_dft_buffersize(&h3270); | |
359 | + space3270out(&h3270,h3270.dft_buffersize); | |
360 | + numbytes = h3270.dft_buffersize - 27; /* always read 5 bytes less than we're allowed */ | |
359 | 361 | bufptr = h3270.obuf + 17; |
360 | 362 | while (!dft_eof && numbytes) { |
361 | 363 | if (ascii_flag && cr_flag) { |
... | ... | @@ -528,35 +530,35 @@ filter_len(char *s, register int len) |
528 | 530 | return t - s; |
529 | 531 | } |
530 | 532 | |
531 | -/* Processes a Read Modified command when there is upload data pending. */ | |
532 | -void | |
533 | -dft_read_modified(void) | |
533 | +/** | |
534 | + * Processes a Read Modified command when there is upload data pending. | |
535 | + */ | |
536 | +void dft_read_modified(H3270 *hSession) | |
534 | 537 | { |
535 | 538 | if (dft_savebuf_len) |
536 | 539 | { |
537 | - trace_ds(&h3270,"> WriteStructuredField FileTransferData\n"); | |
538 | - h3270.obptr = h3270.obuf; | |
539 | - space3270out(&h3270,dft_savebuf_len); | |
540 | - memcpy(h3270.obptr, dft_savebuf, dft_savebuf_len); | |
541 | - h3270.obptr += dft_savebuf_len; | |
542 | - net_output(&h3270); | |
540 | + trace_ds(hSession,"> WriteStructuredField FileTransferData\n"); | |
541 | + hSession->obptr = hSession->obuf; | |
542 | + space3270out(hSession,dft_savebuf_len); | |
543 | + memcpy(hSession->obptr, dft_savebuf, dft_savebuf_len); | |
544 | + hSession->obptr += dft_savebuf_len; | |
545 | + net_output(hSession); | |
543 | 546 | } |
544 | 547 | } |
545 | 548 | |
546 | -/* Update the buffersize for generating a Query Reply. */ | |
547 | -void | |
548 | -set_dft_buffersize(void) | |
549 | +/** | |
550 | + * Update the buffersize for generating a Query Reply. | |
551 | + */ | |
552 | +void set_dft_buffersize(H3270 *hSession) | |
549 | 553 | { |
550 | - if (dft_buffersize == 0) | |
551 | - { | |
552 | -// dft_buffersize = appres.dft_buffer_size; | |
553 | -// if (dft_buffersize == 0) | |
554 | - dft_buffersize = DFT_BUF; | |
555 | - } | |
556 | - if (dft_buffersize > DFT_MAX_BUF) | |
557 | - dft_buffersize = DFT_MAX_BUF; | |
558 | - if (dft_buffersize < DFT_MIN_BUF) | |
559 | - dft_buffersize = DFT_MIN_BUF; | |
554 | + if (hSession->dft_buffersize == 0) | |
555 | + hSession->dft_buffersize = DFT_BUF; | |
556 | + | |
557 | + if (hSession->dft_buffersize > DFT_MAX_BUF) | |
558 | + hSession->dft_buffersize = DFT_MAX_BUF; | |
559 | + | |
560 | + if (hSession->dft_buffersize < DFT_MIN_BUF) | |
561 | + hSession->dft_buffersize = DFT_MIN_BUF; | |
560 | 562 | } |
561 | 563 | |
562 | 564 | ... | ... |
src/lib3270/ft_dftc.h
... | ... | @@ -14,6 +14,6 @@ |
14 | 14 | * for more details. |
15 | 15 | */ |
16 | 16 | |
17 | -LIB3270_INTERNAL void ft_dft_data(unsigned char *data, int length); | |
18 | -LIB3270_INTERNAL void dft_read_modified(void); | |
19 | -LIB3270_INTERNAL void set_dft_buffersize(void); | |
17 | +LIB3270_INTERNAL void ft_dft_data(H3270 *hSession, unsigned char *data, int length); | |
18 | +LIB3270_INTERNAL void dft_read_modified(H3270 *hSession); | |
19 | +LIB3270_INTERNAL void set_dft_buffersize(H3270 *hSession); | ... | ... |
src/lib3270/globals.h
... | ... | @@ -144,11 +144,12 @@ enum iaction { |
144 | 144 | |
145 | 145 | LIB3270_INTERNAL H3270 h3270; |
146 | 146 | |
147 | -#if defined(X3270_DISPLAY) /*[*/ | |
147 | +/* | |
148 | +#if defined(X3270_DISPLAY) | |
148 | 149 | LIB3270_INTERNAL Atom a_3270, a_registry, a_encoding; |
149 | 150 | LIB3270_INTERNAL XtAppContext appcontext; |
150 | -#endif /*]*/ | |
151 | - | |
151 | +#endif | |
152 | +*/ | |
152 | 153 | |
153 | 154 | // Version strings |
154 | 155 | LIB3270_INTERNAL const char * build; |
... | ... | @@ -164,12 +165,12 @@ LIB3270_INTERNAL const char * build_rpq_revision; |
164 | 165 | LIB3270_INTERNAL Boolean dbcs; |
165 | 166 | #endif /*]*/ |
166 | 167 | |
167 | -#if defined(X3270_FT) /*[*/ | |
168 | - LIB3270_INTERNAL int dft_buffersize; | |
169 | -#endif /*]*/ | |
168 | +// #if defined(X3270_FT) /*[*/ | |
169 | +// LIB3270_INTERNAL int dft_buffersize; | |
170 | +// #endif /*]*/ | |
170 | 171 | |
171 | 172 | // LIB3270_INTERNAL char *efontname; |
172 | -LIB3270_INTERNAL Boolean ever_3270; | |
173 | +// LIB3270_INTERNAL Boolean ever_3270; | |
173 | 174 | // LIB3270_INTERNAL Boolean exiting; |
174 | 175 | |
175 | 176 | /* |
... | ... | @@ -218,13 +219,13 @@ LIB3270_INTERNAL Boolean ever_3270; |
218 | 219 | // LIB3270_INTERNAL char *qualified_host; |
219 | 220 | // LIB3270_INTERNAL char *reconnect_host; |
220 | 221 | // LIB3270_INTERNAL int screen_depth; |
221 | -LIB3270_INTERNAL Boolean scroll_initted; | |
222 | +// LIB3270_INTERNAL Boolean scroll_initted; | |
222 | 223 | |
223 | 224 | //#if defined(HAVE_LIBSSL) /*[*/ |
224 | 225 | // LIB3270_INTERNAL Boolean secure_connection; |
225 | 226 | //#endif /*]*/ |
226 | 227 | |
227 | -LIB3270_INTERNAL Boolean shifted; | |
228 | +// LIB3270_INTERNAL Boolean shifted; | |
228 | 229 | // LIB3270_INTERNAL Boolean ssl_host; |
229 | 230 | LIB3270_INTERNAL Boolean *standard_font; |
230 | 231 | // LIB3270_INTERNAL Boolean std_ds_host; | ... | ... |
src/lib3270/sf.c
... | ... | @@ -214,7 +214,7 @@ write_structured_field(unsigned char buf[], int buflen) |
214 | 214 | #if defined(X3270_FT) /*[*/ |
215 | 215 | case SF_TRANSFER_DATA: /* File transfer data */ |
216 | 216 | trace_ds(&h3270,"FileTransferData"); |
217 | - ft_dft_data(cp, (int)fieldlen); | |
217 | + ft_dft_data(&h3270,cp, (int)fieldlen); | |
218 | 218 | break; |
219 | 219 | #endif /*]*/ |
220 | 220 | default: |
... | ... | @@ -951,14 +951,14 @@ do_qr_charsets(void) |
951 | 951 | static void |
952 | 952 | do_qr_ddm(void) |
953 | 953 | { |
954 | - set_dft_buffersize(); | |
954 | + set_dft_buffersize(&h3270); | |
955 | 955 | |
956 | 956 | trace_ds(&h3270,"> QueryReply(DistributedDataManagement)\n"); |
957 | 957 | space3270out(&h3270,8); |
958 | - SET16(h3270.obptr,0); /* set reserved field to 0 */ | |
959 | - SET16(h3270.obptr, dft_buffersize); /* set inbound length limit INLIM */ | |
960 | - SET16(h3270.obptr, dft_buffersize); /* set outbound length limit OUTLIM */ | |
961 | - SET16(h3270.obptr, 0x0101); /* NSS=01, DDMSS=01 */ | |
958 | + SET16(h3270.obptr,0); /* set reserved field to 0 */ | |
959 | + SET16(h3270.obptr, h3270.dft_buffersize); /* set inbound length limit INLIM */ | |
960 | + SET16(h3270.obptr, h3270.dft_buffersize); /* set outbound length limit OUTLIM */ | |
961 | + SET16(h3270.obptr, 0x0101); /* NSS=01, DDMSS=01 */ | |
962 | 962 | } |
963 | 963 | #endif /*]*/ |
964 | 964 | ... | ... |