Commit 69991adda77ab35606b2c043d708857bfbe93a88
1 parent
ac9261ce
Exists in
master
and in
5 other branches
Ajustando macros e chamadas da GSource para tratar o handle de sessao
Showing
8 changed files
with
288 additions
and
297 deletions
Show diff stats
src/lib3270/api.h
@@ -242,16 +242,16 @@ | @@ -242,16 +242,16 @@ | ||
242 | LOCAL_EXTERN int RegisterFTCallbacks(const struct filetransfer_callbacks *cbk); | 242 | LOCAL_EXTERN int RegisterFTCallbacks(const struct filetransfer_callbacks *cbk); |
243 | */ | 243 | */ |
244 | 244 | ||
245 | - #define PCONNECTED lib3270_pconnected(NULL) | ||
246 | - #define HALF_CONNECTED lib3270_half_connected(NULL) | ||
247 | - #define CONNECTED lib3270_connected(NULL) | ||
248 | - | ||
249 | - #define IN_NEITHER lib3270_in_neither(NULL) | ||
250 | - #define IN_ANSI lib3270_in_ansi(NULL) | ||
251 | - #define IN_3270 lib3270_in_3270(NULL) | ||
252 | - #define IN_SSCP lib3270_in_sscp(NULL) | ||
253 | - #define IN_TN3270E lib3270_in_tn3270e(NULL) | ||
254 | - #define IN_E lib3270_in_e(NULL) | 245 | + #define PCONNECTED lib3270_pconnected(hSession) |
246 | + #define HALF_CONNECTED lib3270_half_connected(hSession) | ||
247 | + #define CONNECTED lib3270_connected(hSession) | ||
248 | + | ||
249 | + #define IN_NEITHER lib3270_in_neither(hSession) | ||
250 | + #define IN_ANSI lib3270_in_ansi(hSession) | ||
251 | + #define IN_3270 lib3270_in_3270(hSession) | ||
252 | + #define IN_SSCP lib3270_in_sscp(hSession) | ||
253 | + #define IN_TN3270E lib3270_in_tn3270e(hSession) | ||
254 | + #define IN_E lib3270_in_e(hSession) | ||
255 | 255 | ||
256 | #ifndef LIB3270 | 256 | #ifndef LIB3270 |
257 | 257 |
src/lib3270/ctlr.c
@@ -155,26 +155,27 @@ void ctlr_reinit(H3270 *session, unsigned cmask) | @@ -155,26 +155,27 @@ void ctlr_reinit(H3270 *session, unsigned cmask) | ||
155 | /** | 155 | /** |
156 | * Get current 3270 model. | 156 | * Get current 3270 model. |
157 | * | 157 | * |
158 | - * @param session selected 3270 session. | 158 | + * @param hSession selected 3270 session. |
159 | * @return Current model number. | 159 | * @return Current model number. |
160 | */ | 160 | */ |
161 | -int lib3270_get_model(H3270 *session) | 161 | +int lib3270_get_model(H3270 *hSession) |
162 | { | 162 | { |
163 | - return session->model_num; | 163 | + return hSession->model_num; |
164 | } | 164 | } |
165 | 165 | ||
166 | /** | 166 | /** |
167 | * Deal with the relationships between model numbers and rows/cols. | 167 | * Deal with the relationships between model numbers and rows/cols. |
168 | * | 168 | * |
169 | - * @param model New model (updates model name) | 169 | + * @param hSession Session handle. |
170 | + * @param model New model (updates model name) | ||
170 | */ | 171 | */ |
171 | -int lib3270_set_model(H3270 *session, int model) | 172 | +int lib3270_set_model(H3270 *hSession, int model) |
172 | { | 173 | { |
173 | if(CONNECTED) | 174 | if(CONNECTED) |
174 | return EBUSY; | 175 | return EBUSY; |
175 | 176 | ||
176 | - ctlr_set_rows_cols(session,model,session->ov_cols,session->ov_rows); | ||
177 | - ctlr_reinit(session,MODEL_CHANGE); | 177 | + ctlr_set_rows_cols(hSession,model,hSession->ov_cols,hSession->ov_rows); |
178 | + ctlr_reinit(hSession,MODEL_CHANGE); | ||
178 | 179 | ||
179 | return 0; | 180 | return 0; |
180 | } | 181 | } |
src/lib3270/ft.c
@@ -514,17 +514,17 @@ void ft_aborting(H3270FT *h) | @@ -514,17 +514,17 @@ void ft_aborting(H3270FT *h) | ||
514 | } | 514 | } |
515 | 515 | ||
516 | /* Process a disconnect abort. */ | 516 | /* Process a disconnect abort. */ |
517 | -static void ft_connected(H3270 *session, int ignored, void *dunno) | 517 | +static void ft_connected(H3270 *hSession, int ignored, void *dunno) |
518 | { | 518 | { |
519 | - if (!CONNECTED && lib3270_get_ft_state(session) != LIB3270_FT_STATE_NONE) | ||
520 | - ft_complete(get_ft_handle(session),_("Host disconnected, transfer cancelled")); | 519 | + if (!CONNECTED && lib3270_get_ft_state(hSession) != LIB3270_FT_STATE_NONE) |
520 | + ft_complete(get_ft_handle(hSession),_("Host disconnected, transfer cancelled")); | ||
521 | } | 521 | } |
522 | 522 | ||
523 | /* Process an abort from no longer being in 3270 mode. */ | 523 | /* Process an abort from no longer being in 3270 mode. */ |
524 | -static void ft_in3270(H3270 *session, int ignored, void *dunno) | 524 | +static void ft_in3270(H3270 *hSession, int ignored, void *dunno) |
525 | { | 525 | { |
526 | - if (!IN_3270 && lib3270_get_ft_state(session) != LIB3270_FT_STATE_NONE) | ||
527 | - ft_complete(get_ft_handle(session),_("Not in 3270 mode, transfer cancelled")); | 526 | + if (!IN_3270 && lib3270_get_ft_state(hSession) != LIB3270_FT_STATE_NONE) |
527 | + ft_complete(get_ft_handle(hSession),_("Not in 3270 mode, transfer cancelled")); | ||
528 | } | 528 | } |
529 | 529 | ||
530 | LIB3270_EXPORT LIB3270_FT_STATE lib3270_get_ft_state(H3270 *session) | 530 | LIB3270_EXPORT LIB3270_FT_STATE lib3270_get_ft_state(H3270 *session) |
src/lib3270/host.c
@@ -605,15 +605,15 @@ static int do_connect(H3270 *hSession, const char *n) | @@ -605,15 +605,15 @@ static int do_connect(H3270 *hSession, const char *n) | ||
605 | * @return 0 if the connection was ok, non zero on error. | 605 | * @return 0 if the connection was ok, non zero on error. |
606 | * | 606 | * |
607 | */ | 607 | */ |
608 | -int lib3270_connect(H3270 *h, const char *n, int wait) | 608 | +int lib3270_connect(H3270 *hSession, const char *n, int wait) |
609 | { | 609 | { |
610 | int rc; | 610 | int rc; |
611 | 611 | ||
612 | - CHECK_SESSION_HANDLE(h); | 612 | + CHECK_SESSION_HANDLE(hSession); |
613 | 613 | ||
614 | - lib3270_main_iterate(h,0); | 614 | + lib3270_main_iterate(hSession,0); |
615 | 615 | ||
616 | - if(h->auto_reconnect_inprogress) | 616 | + if(hSession->auto_reconnect_inprogress) |
617 | return EAGAIN; | 617 | return EAGAIN; |
618 | 618 | ||
619 | if(PCONNECTED) | 619 | if(PCONNECTED) |
@@ -621,12 +621,12 @@ int lib3270_connect(H3270 *h, const char *n, int wait) | @@ -621,12 +621,12 @@ int lib3270_connect(H3270 *h, const char *n, int wait) | ||
621 | 621 | ||
622 | if(!n) | 622 | if(!n) |
623 | { | 623 | { |
624 | - n = h->full_current_host; | 624 | + n = hSession->full_current_host; |
625 | if(!n) | 625 | if(!n) |
626 | return EINVAL; | 626 | return EINVAL; |
627 | } | 627 | } |
628 | 628 | ||
629 | - rc = do_connect(h,n); | 629 | + rc = do_connect(hSession,n); |
630 | if(rc) | 630 | if(rc) |
631 | return rc; | 631 | return rc; |
632 | 632 | ||
@@ -634,7 +634,7 @@ int lib3270_connect(H3270 *h, const char *n, int wait) | @@ -634,7 +634,7 @@ int lib3270_connect(H3270 *h, const char *n, int wait) | ||
634 | { | 634 | { |
635 | while(!IN_ANSI && !IN_3270) | 635 | while(!IN_ANSI && !IN_3270) |
636 | { | 636 | { |
637 | - lib3270_main_iterate(h,1); | 637 | + lib3270_main_iterate(hSession,1); |
638 | 638 | ||
639 | if(!PCONNECTED) | 639 | if(!PCONNECTED) |
640 | { | 640 | { |
@@ -661,22 +661,22 @@ LIB3270_EXPORT void lib3270_disconnect(H3270 *h) | @@ -661,22 +661,22 @@ LIB3270_EXPORT void lib3270_disconnect(H3270 *h) | ||
661 | host_disconnect(h,0); | 661 | host_disconnect(h,0); |
662 | } | 662 | } |
663 | 663 | ||
664 | -void host_disconnect(H3270 *h, int failed) | 664 | +void host_disconnect(H3270 *hSession, int failed) |
665 | { | 665 | { |
666 | - CHECK_SESSION_HANDLE(h); | 666 | + CHECK_SESSION_HANDLE(hSession); |
667 | 667 | ||
668 | if (CONNECTED || HALF_CONNECTED) | 668 | if (CONNECTED || HALF_CONNECTED) |
669 | { | 669 | { |
670 | // Disconecting, disable input | 670 | // Disconecting, disable input |
671 | - remove_input_calls(h); | ||
672 | - net_disconnect(h); | 671 | + remove_input_calls(hSession); |
672 | + net_disconnect(hSession); | ||
673 | 673 | ||
674 | - trace("Disconnected (Failed: %d Reconnect: %d in_progress: %d)",failed,lib3270_get_toggle(h,LIB3270_TOGGLE_RECONNECT),h->auto_reconnect_inprogress); | ||
675 | - if (lib3270_get_toggle(h,LIB3270_TOGGLE_RECONNECT) && !h->auto_reconnect_inprogress) | 674 | + trace("Disconnected (Failed: %d Reconnect: %d in_progress: %d)",failed,lib3270_get_toggle(hSession,LIB3270_TOGGLE_RECONNECT),hSession->auto_reconnect_inprogress); |
675 | + if (lib3270_get_toggle(hSession,LIB3270_TOGGLE_RECONNECT) && !hSession->auto_reconnect_inprogress) | ||
676 | { | 676 | { |
677 | /* Schedule an automatic reconnection. */ | 677 | /* Schedule an automatic reconnection. */ |
678 | - h->auto_reconnect_inprogress = 1; | ||
679 | - (void) AddTimeOut(failed ? RECONNECT_ERR_MS: RECONNECT_MS, h, try_reconnect); | 678 | + hSession->auto_reconnect_inprogress = 1; |
679 | + (void) AddTimeOut(failed ? RECONNECT_ERR_MS: RECONNECT_MS, hSession, try_reconnect); | ||
680 | } | 680 | } |
681 | 681 | ||
682 | /* | 682 | /* |
@@ -684,24 +684,24 @@ void host_disconnect(H3270 *h, int failed) | @@ -684,24 +684,24 @@ void host_disconnect(H3270 *h, int failed) | ||
684 | * in sync. | 684 | * in sync. |
685 | */ | 685 | */ |
686 | #if defined(X3270_TRACE) /*[*/ | 686 | #if defined(X3270_TRACE) /*[*/ |
687 | - if (IN_ANSI && lib3270_get_toggle(h,LIB3270_TOGGLE_SCREEN_TRACE)) | ||
688 | - trace_ansi_disc(h); | 687 | + if (IN_ANSI && lib3270_get_toggle(hSession,LIB3270_TOGGLE_SCREEN_TRACE)) |
688 | + trace_ansi_disc(hSession); | ||
689 | #endif /*]*/ | 689 | #endif /*]*/ |
690 | 690 | ||
691 | - lib3270_set_disconnected(h); | 691 | + lib3270_set_disconnected(hSession); |
692 | } | 692 | } |
693 | } | 693 | } |
694 | 694 | ||
695 | /* The host has entered 3270 or ANSI mode, or switched between them. */ | 695 | /* The host has entered 3270 or ANSI mode, or switched between them. */ |
696 | -void host_in3270(H3270 *session, LIB3270_CSTATE new_cstate) | 696 | +void host_in3270(H3270 *hSession, LIB3270_CSTATE new_cstate) |
697 | { | 697 | { |
698 | Boolean now3270 = (new_cstate == CONNECTED_3270 || | 698 | Boolean now3270 = (new_cstate == CONNECTED_3270 || |
699 | new_cstate == CONNECTED_SSCP || | 699 | new_cstate == CONNECTED_SSCP || |
700 | new_cstate == CONNECTED_TN3270E); | 700 | new_cstate == CONNECTED_TN3270E); |
701 | 701 | ||
702 | - session->cstate = new_cstate; | ||
703 | - session->ever_3270 = now3270; | ||
704 | - lib3270_st_changed(session, LIB3270_STATE_3270_MODE, now3270); | 702 | + hSession->cstate = new_cstate; |
703 | + hSession->ever_3270 = now3270; | ||
704 | + lib3270_st_changed(hSession, LIB3270_STATE_3270_MODE, now3270); | ||
705 | } | 705 | } |
706 | 706 | ||
707 | void lib3270_set_connected(H3270 *hSession) | 707 | void lib3270_set_connected(H3270 *hSession) |
@@ -805,26 +805,26 @@ LIB3270_EXPORT const char * lib3270_get_host(H3270 *h) | @@ -805,26 +805,26 @@ LIB3270_EXPORT const char * lib3270_get_host(H3270 *h) | ||
805 | return h->full_current_host; | 805 | return h->full_current_host; |
806 | } | 806 | } |
807 | 807 | ||
808 | -LIB3270_EXPORT int lib3270_reconnect(H3270 *h,int wait) | 808 | +LIB3270_EXPORT int lib3270_reconnect(H3270 *hSession,int wait) |
809 | { | 809 | { |
810 | int rc; | 810 | int rc; |
811 | 811 | ||
812 | - CHECK_SESSION_HANDLE(h); | 812 | + CHECK_SESSION_HANDLE(hSession); |
813 | 813 | ||
814 | if (CONNECTED || HALF_CONNECTED) | 814 | if (CONNECTED || HALF_CONNECTED) |
815 | return EBUSY; | 815 | return EBUSY; |
816 | 816 | ||
817 | - if (h->full_current_host == CN) | 817 | + if (hSession->full_current_host == CN) |
818 | return EINVAL; | 818 | return EINVAL; |
819 | 819 | ||
820 | - if (h->auto_reconnect_inprogress) | 820 | + if (hSession->auto_reconnect_inprogress) |
821 | return EBUSY; | 821 | return EBUSY; |
822 | 822 | ||
823 | - rc = lib3270_connect(h,h->full_current_host,wait); | 823 | + rc = lib3270_connect(hSession,hSession->full_current_host,wait); |
824 | 824 | ||
825 | if(rc) | 825 | if(rc) |
826 | { | 826 | { |
827 | - h->auto_reconnect_inprogress = 0; | 827 | + hSession->auto_reconnect_inprogress = 0; |
828 | return rc; | 828 | return rc; |
829 | } | 829 | } |
830 | 830 |
src/lib3270/kybd.c
@@ -456,15 +456,15 @@ void kybd_connect(H3270 *session, int connected, void *dunno) | @@ -456,15 +456,15 @@ void kybd_connect(H3270 *session, int connected, void *dunno) | ||
456 | /* | 456 | /* |
457 | * Called when we switch between 3270 and ANSI modes. | 457 | * Called when we switch between 3270 and ANSI modes. |
458 | */ | 458 | */ |
459 | -void kybd_in3270(H3270 *session, int in3270 unused, void *dunno) | 459 | +void kybd_in3270(H3270 *hSession, int in3270 unused, void *dunno) |
460 | { | 460 | { |
461 | - if (session->kybdlock & KL_DEFERRED_UNLOCK) | ||
462 | - RemoveTimeOut(session->unlock_id); | ||
463 | - lib3270_kybdlock_clear(session,~KL_AWAITING_FIRST); | 461 | + if (hSession->kybdlock & KL_DEFERRED_UNLOCK) |
462 | + RemoveTimeOut(hSession->unlock_id); | ||
463 | + lib3270_kybdlock_clear(hSession,~KL_AWAITING_FIRST); | ||
464 | 464 | ||
465 | /* There might be a macro pending. */ | 465 | /* There might be a macro pending. */ |
466 | if (CONNECTED) | 466 | if (CONNECTED) |
467 | - ps_process(session); | 467 | + ps_process(hSession); |
468 | } | 468 | } |
469 | 469 | ||
470 | /* | 470 | /* |
@@ -1113,19 +1113,19 @@ LIB3270_ACTION( previousfield ) | @@ -1113,19 +1113,19 @@ LIB3270_ACTION( previousfield ) | ||
1113 | * Deferred keyboard unlock. | 1113 | * Deferred keyboard unlock. |
1114 | */ | 1114 | */ |
1115 | 1115 | ||
1116 | -static void defer_unlock(H3270 *session) | 1116 | +static void defer_unlock(H3270 *hSession) |
1117 | { | 1117 | { |
1118 | // trace("%s",__FUNCTION__); | 1118 | // trace("%s",__FUNCTION__); |
1119 | - lib3270_kybdlock_clear(session,KL_DEFERRED_UNLOCK); | ||
1120 | - status_reset(session); | 1119 | + lib3270_kybdlock_clear(hSession,KL_DEFERRED_UNLOCK); |
1120 | + status_reset(hSession); | ||
1121 | if(CONNECTED) | 1121 | if(CONNECTED) |
1122 | - ps_process(session); | 1122 | + ps_process(hSession); |
1123 | } | 1123 | } |
1124 | 1124 | ||
1125 | /* | 1125 | /* |
1126 | * Reset keyboard lock. | 1126 | * Reset keyboard lock. |
1127 | */ | 1127 | */ |
1128 | -void do_reset(H3270 *session, Boolean explicit) | 1128 | +void do_reset(H3270 *hSession, Boolean explicit) |
1129 | { | 1129 | { |
1130 | /* | 1130 | /* |
1131 | * If explicit (from the keyboard) and there is typeahead or | 1131 | * If explicit (from the keyboard) and there is typeahead or |
@@ -1134,12 +1134,12 @@ void do_reset(H3270 *session, Boolean explicit) | @@ -1134,12 +1134,12 @@ void do_reset(H3270 *session, Boolean explicit) | ||
1134 | 1134 | ||
1135 | if (explicit | 1135 | if (explicit |
1136 | #if defined(X3270_FT) /*[*/ | 1136 | #if defined(X3270_FT) /*[*/ |
1137 | - || lib3270_get_ft_state(session) != LIB3270_FT_STATE_NONE | 1137 | + || lib3270_get_ft_state(hSession) != LIB3270_FT_STATE_NONE |
1138 | #endif /*]*/ | 1138 | #endif /*]*/ |
1139 | ) { | 1139 | ) { |
1140 | Boolean half_reset = False; | 1140 | Boolean half_reset = False; |
1141 | 1141 | ||
1142 | - if (flush_ta(session)) | 1142 | + if (flush_ta(hSession)) |
1143 | half_reset = True; | 1143 | half_reset = True; |
1144 | 1144 | ||
1145 | if (half_reset) | 1145 | if (half_reset) |
@@ -1147,7 +1147,7 @@ void do_reset(H3270 *session, Boolean explicit) | @@ -1147,7 +1147,7 @@ void do_reset(H3270 *session, Boolean explicit) | ||
1147 | } | 1147 | } |
1148 | 1148 | ||
1149 | /* Always clear insert mode. */ | 1149 | /* Always clear insert mode. */ |
1150 | - lib3270_set_toggle(session,LIB3270_TOGGLE_INSERT,0); | 1150 | + lib3270_set_toggle(hSession,LIB3270_TOGGLE_INSERT,0); |
1151 | 1151 | ||
1152 | /* Otherwise, if not connect, reset is a no-op. */ | 1152 | /* Otherwise, if not connect, reset is a no-op. */ |
1153 | if (!CONNECTED) | 1153 | if (!CONNECTED) |
@@ -1157,8 +1157,8 @@ void do_reset(H3270 *session, Boolean explicit) | @@ -1157,8 +1157,8 @@ void do_reset(H3270 *session, Boolean explicit) | ||
1157 | * Remove any deferred keyboard unlock. We will either unlock the | 1157 | * Remove any deferred keyboard unlock. We will either unlock the |
1158 | * keyboard now, or want to defer further into the future. | 1158 | * keyboard now, or want to defer further into the future. |
1159 | */ | 1159 | */ |
1160 | - if (session->kybdlock & KL_DEFERRED_UNLOCK) | ||
1161 | - RemoveTimeOut(session->unlock_id); | 1160 | + if (hSession->kybdlock & KL_DEFERRED_UNLOCK) |
1161 | + RemoveTimeOut(hSession->unlock_id); | ||
1162 | 1162 | ||
1163 | /* | 1163 | /* |
1164 | * If explicit (from the keyboard), unlock the keyboard now. | 1164 | * If explicit (from the keyboard), unlock the keyboard now. |
@@ -1166,21 +1166,21 @@ void do_reset(H3270 *session, Boolean explicit) | @@ -1166,21 +1166,21 @@ void do_reset(H3270 *session, Boolean explicit) | ||
1166 | */ | 1166 | */ |
1167 | if (explicit | 1167 | if (explicit |
1168 | #if defined(X3270_FT) /*[*/ | 1168 | #if defined(X3270_FT) /*[*/ |
1169 | - || lib3270_get_ft_state(session) != LIB3270_FT_STATE_NONE | 1169 | + || lib3270_get_ft_state(hSession) != LIB3270_FT_STATE_NONE |
1170 | #endif /*]*/ | 1170 | #endif /*]*/ |
1171 | - || (!session->unlock_delay) // && !sms_in_macro()) | ||
1172 | - || (session->unlock_delay_time != 0 && (time(NULL) - session->unlock_delay_time) > 1)) { | ||
1173 | - lib3270_kybdlock_clear(session,-1); | ||
1174 | - } else if (session->kybdlock & | 1171 | + || (!hSession->unlock_delay) // && !sms_in_macro()) |
1172 | + || (hSession->unlock_delay_time != 0 && (time(NULL) - hSession->unlock_delay_time) > 1)) { | ||
1173 | + lib3270_kybdlock_clear(hSession,-1); | ||
1174 | + } else if (hSession->kybdlock & | ||
1175 | (KL_DEFERRED_UNLOCK | KL_OIA_TWAIT | KL_OIA_LOCKED | KL_AWAITING_FIRST)) { | 1175 | (KL_DEFERRED_UNLOCK | KL_OIA_TWAIT | KL_OIA_LOCKED | KL_AWAITING_FIRST)) { |
1176 | - lib3270_kybdlock_clear(session,~KL_DEFERRED_UNLOCK); | ||
1177 | - kybdlock_set(session,KL_DEFERRED_UNLOCK); | ||
1178 | - session->unlock_id = AddTimeOut(UNLOCK_MS, session, defer_unlock); | 1176 | + lib3270_kybdlock_clear(hSession,~KL_DEFERRED_UNLOCK); |
1177 | + kybdlock_set(hSession,KL_DEFERRED_UNLOCK); | ||
1178 | + hSession->unlock_id = AddTimeOut(UNLOCK_MS, hSession, defer_unlock); | ||
1179 | } | 1179 | } |
1180 | 1180 | ||
1181 | /* Clean up other modes. */ | 1181 | /* Clean up other modes. */ |
1182 | - status_reset(session); | ||
1183 | - mcursor_normal(session); | 1182 | + status_reset(hSession); |
1183 | + mcursor_normal(hSession); | ||
1184 | 1184 | ||
1185 | } | 1185 | } |
1186 | 1186 |
src/lib3270/screen.c
@@ -538,51 +538,41 @@ void status_lu(H3270 *session, const char *lu) | @@ -538,51 +538,41 @@ void status_lu(H3270 *session, const char *lu) | ||
538 | 538 | ||
539 | } | 539 | } |
540 | 540 | ||
541 | -static void status_connect(H3270 *session, int connected, void *dunno) | 541 | +static void status_connect(H3270 *hSession, int connected, void *dunno) |
542 | { | 542 | { |
543 | LIB3270_STATUS id = LIB3270_STATUS_USER; | 543 | LIB3270_STATUS id = LIB3270_STATUS_USER; |
544 | 544 | ||
545 | - ctlr_erase(session,1); | 545 | + ctlr_erase(hSession,1); |
546 | 546 | ||
547 | if (connected) | 547 | if (connected) |
548 | { | 548 | { |
549 | - set_status(session,OIA_FLAG_BOXSOLID,IN_3270 && !IN_SSCP); | 549 | + set_status(hSession,OIA_FLAG_BOXSOLID,IN_3270 && !IN_SSCP); |
550 | 550 | ||
551 | - if (session->kybdlock & KL_AWAITING_FIRST) | 551 | + if (hSession->kybdlock & KL_AWAITING_FIRST) |
552 | id = LIB3270_STATUS_AWAITING_FIRST; | 552 | id = LIB3270_STATUS_AWAITING_FIRST; |
553 | else | 553 | else |
554 | id = LIB3270_STATUS_CONNECTED; | 554 | id = LIB3270_STATUS_CONNECTED; |
555 | 555 | ||
556 | -/* | ||
557 | -#if defined(HAVE_LIBSSL) | ||
558 | - set_status(session,OIA_FLAG_SECURE,session->secure_connection); | ||
559 | -#endif | ||
560 | -*/ | ||
561 | - | ||
562 | } | 556 | } |
563 | else | 557 | else |
564 | { | 558 | { |
565 | - set_status(session,OIA_FLAG_BOXSOLID,False); | ||
566 | -/* | ||
567 | - set_status(session,OIA_FLAG_SECURE,False); | ||
568 | -*/ | ||
569 | - | 559 | + set_status(hSession,OIA_FLAG_BOXSOLID,False); |
570 | id = LIB3270_STATUS_DISCONNECTED; | 560 | id = LIB3270_STATUS_DISCONNECTED; |
571 | } | 561 | } |
572 | 562 | ||
573 | - status_changed(session,id); | 563 | + status_changed(hSession,id); |
574 | 564 | ||
575 | } | 565 | } |
576 | 566 | ||
577 | -static void status_3270_mode(H3270 *session, int ignored unused, void *dunno) | 567 | +static void status_3270_mode(H3270 *hSession, int ignored unused, void *dunno) |
578 | { | 568 | { |
579 | Boolean oia_boxsolid = (IN_3270 && !IN_SSCP); | 569 | Boolean oia_boxsolid = (IN_3270 && !IN_SSCP); |
580 | 570 | ||
581 | - CHECK_SESSION_HANDLE(session); | 571 | + CHECK_SESSION_HANDLE(hSession); |
582 | 572 | ||
583 | if(oia_boxsolid) | 573 | if(oia_boxsolid) |
584 | - set_status(session,OIA_FLAG_UNDERA,True); | ||
585 | - set_status(session,OIA_FLAG_BOXSOLID,oia_boxsolid); | 574 | + set_status(hSession,OIA_FLAG_UNDERA,True); |
575 | + set_status(hSession,OIA_FLAG_BOXSOLID,oia_boxsolid); | ||
586 | 576 | ||
587 | } | 577 | } |
588 | 578 |
src/lib3270/telnet.c
@@ -1009,43 +1009,46 @@ LIB3270_EXPORT void lib3270_data_recv(H3270 *hSession, size_t nr, const unsigned | @@ -1009,43 +1009,46 @@ LIB3270_EXPORT void lib3270_data_recv(H3270 *hSession, size_t nr, const unsigned | ||
1009 | #endif // X3270_ANSI | 1009 | #endif // X3270_ANSI |
1010 | } | 1010 | } |
1011 | 1011 | ||
1012 | - | ||
1013 | -/* | ||
1014 | - * net_input | ||
1015 | - * Called by the toolkit whenever there is input available on the | ||
1016 | - * socket. Reads the data, processes the special telnet commands | ||
1017 | - * and calls process_ds to process the 3270 data stream. | 1012 | +/** |
1013 | + * net_input. | ||
1014 | + * | ||
1015 | + * Called by the toolkit whenever there is input available on the | ||
1016 | + * socket. Reads the data, processes the special telnet commands | ||
1017 | + * and calls process_ds to process the 3270 data stream. | ||
1018 | + * | ||
1019 | + * @param hSession Session handle | ||
1020 | + * | ||
1018 | */ | 1021 | */ |
1019 | -void net_input(H3270 *session) | 1022 | +void net_input(H3270 *hSession) |
1020 | { | 1023 | { |
1021 | // register unsigned char * cp; | 1024 | // register unsigned char * cp; |
1022 | int nr; | 1025 | int nr; |
1023 | unsigned char buffer[BUFSZ]; | 1026 | unsigned char buffer[BUFSZ]; |
1024 | 1027 | ||
1025 | - CHECK_SESSION_HANDLE(session); | 1028 | + CHECK_SESSION_HANDLE(hSession); |
1026 | 1029 | ||
1027 | #if defined(_WIN32) | 1030 | #if defined(_WIN32) |
1028 | for (;;) | 1031 | for (;;) |
1029 | #endif | 1032 | #endif |
1030 | { | 1033 | { |
1031 | - if (session->sock < 0) | 1034 | + if (hSession->sock < 0) |
1032 | return; | 1035 | return; |
1033 | 1036 | ||
1034 | #if defined(X3270_ANSI) | 1037 | #if defined(X3270_ANSI) |
1035 | - session->ansi_data = 0; | 1038 | + hSession->ansi_data = 0; |
1036 | #endif | 1039 | #endif |
1037 | 1040 | ||
1038 | #if defined(_WIN32) | 1041 | #if defined(_WIN32) |
1039 | - ResetEvent(session->sockEvent); | 1042 | + ResetEvent(hSession->sockEvent); |
1040 | #endif | 1043 | #endif |
1041 | 1044 | ||
1042 | #if defined(HAVE_LIBSSL) | 1045 | #if defined(HAVE_LIBSSL) |
1043 | - if (session->ssl_con != NULL) | ||
1044 | - nr = SSL_read(session->ssl_con, (char *) buffer, BUFSZ); | 1046 | + if (hSession->ssl_con != NULL) |
1047 | + nr = SSL_read(hSession->ssl_con, (char *) buffer, BUFSZ); | ||
1045 | else | 1048 | else |
1046 | - nr = recv(session->sock, (char *) buffer, BUFSZ, 0); | 1049 | + nr = recv(hSession->sock, (char *) buffer, BUFSZ, 0); |
1047 | #else | 1050 | #else |
1048 | - nr = recv(session->sock, (char *) buffer, BUFSZ, 0); | 1051 | + nr = recv(hSession->sock, (char *) buffer, BUFSZ, 0); |
1049 | #endif // HAVE_LIBSSL | 1052 | #endif // HAVE_LIBSSL |
1050 | 1053 | ||
1051 | if (nr < 0) | 1054 | if (nr < 0) |
@@ -1054,7 +1057,7 @@ void net_input(H3270 *session) | @@ -1054,7 +1057,7 @@ void net_input(H3270 *session) | ||
1054 | return; | 1057 | return; |
1055 | 1058 | ||
1056 | #if defined(HAVE_LIBSSL) /*[*/ | 1059 | #if defined(HAVE_LIBSSL) /*[*/ |
1057 | - if(session->ssl_con != NULL) | 1060 | + if(hSession->ssl_con != NULL) |
1058 | { | 1061 | { |
1059 | unsigned long e; | 1062 | unsigned long e; |
1060 | char err_buf[120]; | 1063 | char err_buf[120]; |
@@ -1065,55 +1068,55 @@ void net_input(H3270 *session) | @@ -1065,55 +1068,55 @@ void net_input(H3270 *session) | ||
1065 | else | 1068 | else |
1066 | strcpy(err_buf, _( "unknown error" ) ); | 1069 | strcpy(err_buf, _( "unknown error" ) ); |
1067 | 1070 | ||
1068 | - trace_dsn(session,"RCVD SSL_read error %ld (%s)\n", e,err_buf); | 1071 | + trace_dsn(hSession,"RCVD SSL_read error %ld (%s)\n", e,err_buf); |
1069 | 1072 | ||
1070 | - session->message( session,LIB3270_NOTIFY_ERROR,_( "SSL Error" ),_( "SSL Read error" ),err_buf ); | 1073 | + hSession->message(hSession,LIB3270_NOTIFY_ERROR,_( "SSL Error" ),_( "SSL Read error" ),err_buf ); |
1071 | 1074 | ||
1072 | - host_disconnect(session,True); | 1075 | + host_disconnect(hSession,True); |
1073 | return; | 1076 | return; |
1074 | } | 1077 | } |
1075 | #endif /*]*/ | 1078 | #endif /*]*/ |
1076 | 1079 | ||
1077 | if (HALF_CONNECTED && socket_errno() == SE_EAGAIN) | 1080 | if (HALF_CONNECTED && socket_errno() == SE_EAGAIN) |
1078 | { | 1081 | { |
1079 | - connection_complete(session); | 1082 | + connection_complete(hSession); |
1080 | return; | 1083 | return; |
1081 | } | 1084 | } |
1082 | 1085 | ||
1083 | - trace_dsn(session,"RCVD socket error %d\n", errno); | 1086 | + trace_dsn(hSession,"RCVD socket error %d\n", errno); |
1084 | 1087 | ||
1085 | if (HALF_CONNECTED) | 1088 | if (HALF_CONNECTED) |
1086 | { | 1089 | { |
1087 | - popup_a_sockerr(session, N_( "%s:%d" ),session->hostname, session->current_port); | 1090 | + popup_a_sockerr(hSession, N_( "%s:%d" ),hSession->hostname, hSession->current_port); |
1088 | } | 1091 | } |
1089 | else if (socket_errno() != SE_ECONNRESET) | 1092 | else if (socket_errno() != SE_ECONNRESET) |
1090 | { | 1093 | { |
1091 | - popup_a_sockerr(session, N_( "Socket read error" ) ); | 1094 | + popup_a_sockerr(hSession, N_( "Socket read error" ) ); |
1092 | } | 1095 | } |
1093 | 1096 | ||
1094 | - host_disconnect(session,True); | 1097 | + host_disconnect(hSession,True); |
1095 | return; | 1098 | return; |
1096 | } else if (nr == 0) | 1099 | } else if (nr == 0) |
1097 | { | 1100 | { |
1098 | /* Host disconnected. */ | 1101 | /* Host disconnected. */ |
1099 | - trace_dsn(session,"RCVD disconnect\n"); | ||
1100 | - host_disconnect(session,False); | 1102 | + trace_dsn(hSession,"RCVD disconnect\n"); |
1103 | + host_disconnect(hSession,False); | ||
1101 | return; | 1104 | return; |
1102 | } | 1105 | } |
1103 | 1106 | ||
1104 | /* Process the data. */ | 1107 | /* Process the data. */ |
1105 | if (HALF_CONNECTED) | 1108 | if (HALF_CONNECTED) |
1106 | { | 1109 | { |
1107 | - if (non_blocking(session,False) < 0) | 1110 | + if (non_blocking(hSession,False) < 0) |
1108 | { | 1111 | { |
1109 | - host_disconnect(session,True); | 1112 | + host_disconnect(hSession,True); |
1110 | return; | 1113 | return; |
1111 | } | 1114 | } |
1112 | - lib3270_set_connected(session); | ||
1113 | - net_connected(session); | 1115 | + lib3270_set_connected(hSession); |
1116 | + net_connected(hSession); | ||
1114 | } | 1117 | } |
1115 | 1118 | ||
1116 | - lib3270_data_recv(session, nr, buffer); | 1119 | + lib3270_data_recv(hSession, nr, buffer); |
1117 | 1120 | ||
1118 | /* | 1121 | /* |
1119 | trace_netdata('<', session->netrbuf, nr); | 1122 | trace_netdata('<', session->netrbuf, nr); |
@@ -1201,65 +1204,64 @@ static void next_lu(H3270 *hSession) | @@ -1201,65 +1204,64 @@ static void next_lu(H3270 *hSession) | ||
1201 | * Telnet finite-state machine. | 1204 | * Telnet finite-state machine. |
1202 | * Returns 0 for okay, -1 for errors. | 1205 | * Returns 0 for okay, -1 for errors. |
1203 | */ | 1206 | */ |
1204 | -static int telnet_fsm(H3270 *session, unsigned char c) | 1207 | +static int telnet_fsm(H3270 *hSession, unsigned char c) |
1205 | { | 1208 | { |
1206 | #if defined(X3270_ANSI) /*[*/ | 1209 | #if defined(X3270_ANSI) /*[*/ |
1207 | char *see_chr; | 1210 | char *see_chr; |
1208 | int sl; | 1211 | int sl; |
1209 | #endif /*]*/ | 1212 | #endif /*]*/ |
1210 | 1213 | ||
1211 | - switch (session->telnet_state) | 1214 | + switch (hSession->telnet_state) |
1212 | { | 1215 | { |
1213 | case TNS_DATA: /* normal data processing */ | 1216 | case TNS_DATA: /* normal data processing */ |
1214 | if (c == IAC) { /* got a telnet command */ | 1217 | if (c == IAC) { /* got a telnet command */ |
1215 | - session->telnet_state = TNS_IAC; | 1218 | + hSession->telnet_state = TNS_IAC; |
1216 | #if defined(X3270_ANSI) /*[*/ | 1219 | #if defined(X3270_ANSI) /*[*/ |
1217 | - if (session->ansi_data) { | ||
1218 | - trace_dsn(session,"\n"); | ||
1219 | - session->ansi_data = 0; | 1220 | + if (hSession->ansi_data) { |
1221 | + trace_dsn(hSession,"\n"); | ||
1222 | + hSession->ansi_data = 0; | ||
1220 | } | 1223 | } |
1221 | #endif /*]*/ | 1224 | #endif /*]*/ |
1222 | break; | 1225 | break; |
1223 | } | 1226 | } |
1224 | if (IN_NEITHER) { /* now can assume ANSI mode */ | 1227 | if (IN_NEITHER) { /* now can assume ANSI mode */ |
1225 | #if defined(X3270_ANSI)/*[*/ | 1228 | #if defined(X3270_ANSI)/*[*/ |
1226 | - if (session->linemode) | ||
1227 | - cooked_init(session); | 1229 | + if (hSession->linemode) |
1230 | + cooked_init(hSession); | ||
1228 | #endif /*]*/ | 1231 | #endif /*]*/ |
1229 | - host_in3270(session,CONNECTED_ANSI); | ||
1230 | - lib3270_kybdlock_clear(session,KL_AWAITING_FIRST); | ||
1231 | - status_reset(session); | ||
1232 | - ps_process(session); | 1232 | + host_in3270(hSession,CONNECTED_ANSI); |
1233 | + lib3270_kybdlock_clear(hSession,KL_AWAITING_FIRST); | ||
1234 | + status_reset(hSession); | ||
1235 | + ps_process(hSession); | ||
1233 | } | 1236 | } |
1234 | if (IN_ANSI && !IN_E) { | 1237 | if (IN_ANSI && !IN_E) { |
1235 | #if defined(X3270_ANSI) /*[*/ | 1238 | #if defined(X3270_ANSI) /*[*/ |
1236 | - if (!session->ansi_data) { | ||
1237 | - trace_dsn(session,"<.. "); | ||
1238 | - session->ansi_data = 4; | 1239 | + if (!hSession->ansi_data) { |
1240 | + trace_dsn(hSession,"<.. "); | ||
1241 | + hSession->ansi_data = 4; | ||
1239 | } | 1242 | } |
1240 | see_chr = ctl_see((int) c); | 1243 | see_chr = ctl_see((int) c); |
1241 | - session->ansi_data += (sl = strlen(see_chr)); | ||
1242 | - if (session->ansi_data >= TRACELINE) { | ||
1243 | - trace_dsn(session," ...\n... "); | ||
1244 | - session->ansi_data = 4 + sl; | 1244 | + hSession->ansi_data += (sl = strlen(see_chr)); |
1245 | + if (hSession->ansi_data >= TRACELINE) { | ||
1246 | + trace_dsn(hSession," ...\n... "); | ||
1247 | + hSession->ansi_data = 4 + sl; | ||
1245 | } | 1248 | } |
1246 | - trace_dsn(session,"%s",see_chr); | ||
1247 | - if (!session->syncing) | 1249 | + trace_dsn(hSession,"%s",see_chr); |
1250 | + if (!hSession->syncing) | ||
1248 | { | 1251 | { |
1249 | - if (session->linemode && session->onlcr && c == '\n') | ||
1250 | - ansi_process(session,(unsigned int) '\r'); | ||
1251 | - ansi_process(session,(unsigned int) c); | ||
1252 | -// sms_store(c); | 1252 | + if (hSession->linemode && hSession->onlcr && c == '\n') |
1253 | + ansi_process(hSession,(unsigned int) '\r'); | ||
1254 | + ansi_process(hSession,(unsigned int) c); | ||
1253 | } | 1255 | } |
1254 | #endif /*]*/ | 1256 | #endif /*]*/ |
1255 | } else { | 1257 | } else { |
1256 | - store3270in(session,c); | 1258 | + store3270in(hSession,c); |
1257 | } | 1259 | } |
1258 | break; | 1260 | break; |
1259 | case TNS_IAC: /* process a telnet command */ | 1261 | case TNS_IAC: /* process a telnet command */ |
1260 | if (c != EOR && c != IAC) | 1262 | if (c != EOR && c != IAC) |
1261 | { | 1263 | { |
1262 | - trace_dsn(session,"RCVD %s ", cmd(c)); | 1264 | + trace_dsn(hSession,"RCVD %s ", cmd(c)); |
1263 | } | 1265 | } |
1264 | 1266 | ||
1265 | switch (c) | 1267 | switch (c) |
@@ -1268,91 +1270,91 @@ static int telnet_fsm(H3270 *session, unsigned char c) | @@ -1268,91 +1270,91 @@ static int telnet_fsm(H3270 *session, unsigned char c) | ||
1268 | if (IN_ANSI && !IN_E) | 1270 | if (IN_ANSI && !IN_E) |
1269 | { | 1271 | { |
1270 | #if defined(X3270_ANSI) /*[*/ | 1272 | #if defined(X3270_ANSI) /*[*/ |
1271 | - if (!session->ansi_data) | 1273 | + if (!hSession->ansi_data) |
1272 | { | 1274 | { |
1273 | - trace_dsn(session,"<.. "); | ||
1274 | - session->ansi_data = 4; | 1275 | + trace_dsn(hSession,"<.. "); |
1276 | + hSession->ansi_data = 4; | ||
1275 | } | 1277 | } |
1276 | see_chr = ctl_see((int) c); | 1278 | see_chr = ctl_see((int) c); |
1277 | - session->ansi_data += (sl = strlen(see_chr)); | ||
1278 | - if (session->ansi_data >= TRACELINE) | 1279 | + hSession->ansi_data += (sl = strlen(see_chr)); |
1280 | + if (hSession->ansi_data >= TRACELINE) | ||
1279 | { | 1281 | { |
1280 | - trace_dsn(session," ...\n ..."); | ||
1281 | - session->ansi_data = 4 + sl; | 1282 | + trace_dsn(hSession," ...\n ..."); |
1283 | + hSession->ansi_data = 4 + sl; | ||
1282 | } | 1284 | } |
1283 | - trace_dsn(session,"%s",see_chr); | ||
1284 | - ansi_process(session,(unsigned int) c); | 1285 | + trace_dsn(hSession,"%s",see_chr); |
1286 | + ansi_process(hSession,(unsigned int) c); | ||
1285 | #endif /*]*/ | 1287 | #endif /*]*/ |
1286 | } | 1288 | } |
1287 | else | 1289 | else |
1288 | { | 1290 | { |
1289 | - store3270in(session,c); | 1291 | + store3270in(hSession,c); |
1290 | } | 1292 | } |
1291 | - session->telnet_state = TNS_DATA; | 1293 | + hSession->telnet_state = TNS_DATA; |
1292 | break; | 1294 | break; |
1293 | 1295 | ||
1294 | case EOR: /* eor, process accumulated input */ | 1296 | case EOR: /* eor, process accumulated input */ |
1295 | 1297 | ||
1296 | - if (IN_3270 || (IN_E && session->tn3270e_negotiated)) | 1298 | + if (IN_3270 || (IN_E && hSession->tn3270e_negotiated)) |
1297 | { | 1299 | { |
1298 | - session->ns_rrcvd++; | ||
1299 | - if (process_eor(session)) | 1300 | + hSession->ns_rrcvd++; |
1301 | + if (process_eor(hSession)) | ||
1300 | return -1; | 1302 | return -1; |
1301 | } else | 1303 | } else |
1302 | - Warning(session, _( "EOR received when not in 3270 mode, ignored." )); | 1304 | + Warning(hSession, _( "EOR received when not in 3270 mode, ignored." )); |
1303 | 1305 | ||
1304 | - trace_dsn(session,"RCVD EOR\n"); | ||
1305 | - session->ibptr = session->ibuf; | ||
1306 | - session->telnet_state = TNS_DATA; | 1306 | + trace_dsn(hSession,"RCVD EOR\n"); |
1307 | + hSession->ibptr = hSession->ibuf; | ||
1308 | + hSession->telnet_state = TNS_DATA; | ||
1307 | break; | 1309 | break; |
1308 | 1310 | ||
1309 | case WILL: | 1311 | case WILL: |
1310 | - session->telnet_state = TNS_WILL; | 1312 | + hSession->telnet_state = TNS_WILL; |
1311 | break; | 1313 | break; |
1312 | 1314 | ||
1313 | case WONT: | 1315 | case WONT: |
1314 | - session->telnet_state = TNS_WONT; | 1316 | + hSession->telnet_state = TNS_WONT; |
1315 | break; | 1317 | break; |
1316 | 1318 | ||
1317 | case DO: | 1319 | case DO: |
1318 | - session->telnet_state = TNS_DO; | 1320 | + hSession->telnet_state = TNS_DO; |
1319 | break; | 1321 | break; |
1320 | 1322 | ||
1321 | case DONT: | 1323 | case DONT: |
1322 | - session->telnet_state = TNS_DONT; | 1324 | + hSession->telnet_state = TNS_DONT; |
1323 | break; | 1325 | break; |
1324 | 1326 | ||
1325 | case SB: | 1327 | case SB: |
1326 | - session->telnet_state = TNS_SB; | ||
1327 | - if (session->sbbuf == (unsigned char *)NULL) | ||
1328 | - session->sbbuf = (unsigned char *)lib3270_malloc(1024); | ||
1329 | - session->sbptr = session->sbbuf; | 1328 | + hSession->telnet_state = TNS_SB; |
1329 | + if (hSession->sbbuf == (unsigned char *)NULL) | ||
1330 | + hSession->sbbuf = (unsigned char *)lib3270_malloc(1024); | ||
1331 | + hSession->sbptr = hSession->sbbuf; | ||
1330 | break; | 1332 | break; |
1331 | 1333 | ||
1332 | case DM: | 1334 | case DM: |
1333 | - trace_dsn(session,"\n"); | ||
1334 | - if (session->syncing) | 1335 | + trace_dsn(hSession,"\n"); |
1336 | + if (hSession->syncing) | ||
1335 | { | 1337 | { |
1336 | - session->syncing = 0; | ||
1337 | - x_except_on(session); | 1338 | + hSession->syncing = 0; |
1339 | + x_except_on(hSession); | ||
1338 | } | 1340 | } |
1339 | - session->telnet_state = TNS_DATA; | 1341 | + hSession->telnet_state = TNS_DATA; |
1340 | break; | 1342 | break; |
1341 | 1343 | ||
1342 | case GA: | 1344 | case GA: |
1343 | case NOP: | 1345 | case NOP: |
1344 | - trace_dsn(session,"\n"); | ||
1345 | - session->telnet_state = TNS_DATA; | 1346 | + trace_dsn(hSession,"\n"); |
1347 | + hSession->telnet_state = TNS_DATA; | ||
1346 | break; | 1348 | break; |
1347 | 1349 | ||
1348 | default: | 1350 | default: |
1349 | - trace_dsn(session,"???\n"); | ||
1350 | - session->telnet_state = TNS_DATA; | 1351 | + trace_dsn(hSession,"???\n"); |
1352 | + hSession->telnet_state = TNS_DATA; | ||
1351 | break; | 1353 | break; |
1352 | } | 1354 | } |
1353 | break; | 1355 | break; |
1354 | case TNS_WILL: /* telnet WILL DO OPTION command */ | 1356 | case TNS_WILL: /* telnet WILL DO OPTION command */ |
1355 | - trace_dsn(session,"%s\n", opt(c)); | 1357 | + trace_dsn(hSession,"%s\n", opt(c)); |
1356 | switch (c) { | 1358 | switch (c) { |
1357 | case TELOPT_SGA: | 1359 | case TELOPT_SGA: |
1358 | case TELOPT_BINARY: | 1360 | case TELOPT_BINARY: |
@@ -1362,54 +1364,54 @@ static int telnet_fsm(H3270 *session, unsigned char c) | @@ -1362,54 +1364,54 @@ static int telnet_fsm(H3270 *session, unsigned char c) | ||
1362 | #if defined(X3270_TN3270E) /*[*/ | 1364 | #if defined(X3270_TN3270E) /*[*/ |
1363 | case TELOPT_TN3270E: | 1365 | case TELOPT_TN3270E: |
1364 | #endif /*]*/ | 1366 | #endif /*]*/ |
1365 | - if (c != TELOPT_TN3270E || !session->non_tn3270e_host) { | ||
1366 | - if (!session->hisopts[c]) { | ||
1367 | - session->hisopts[c] = 1; | 1367 | + if (c != TELOPT_TN3270E || !hSession->non_tn3270e_host) { |
1368 | + if (!hSession->hisopts[c]) { | ||
1369 | + hSession->hisopts[c] = 1; | ||
1368 | do_opt[2] = c; | 1370 | do_opt[2] = c; |
1369 | - net_rawout(session,do_opt, sizeof(do_opt)); | ||
1370 | - trace_dsn(session,"SENT %s %s\n", | 1371 | + net_rawout(hSession,do_opt, sizeof(do_opt)); |
1372 | + trace_dsn(hSession,"SENT %s %s\n", | ||
1371 | cmd(DO), opt(c)); | 1373 | cmd(DO), opt(c)); |
1372 | 1374 | ||
1373 | /* | 1375 | /* |
1374 | * For UTS, volunteer to do EOR when | 1376 | * For UTS, volunteer to do EOR when |
1375 | * they do. | 1377 | * they do. |
1376 | */ | 1378 | */ |
1377 | - if (c == TELOPT_EOR && !session->myopts[c]) { | ||
1378 | - session->myopts[c] = 1; | 1379 | + if (c == TELOPT_EOR && !hSession->myopts[c]) { |
1380 | + hSession->myopts[c] = 1; | ||
1379 | will_opt[2] = c; | 1381 | will_opt[2] = c; |
1380 | - net_rawout(session,will_opt,sizeof(will_opt)); | ||
1381 | - trace_dsn(session,"SENT %s %s\n",cmd(WILL), opt(c)); | 1382 | + net_rawout(hSession,will_opt,sizeof(will_opt)); |
1383 | + trace_dsn(hSession,"SENT %s %s\n",cmd(WILL), opt(c)); | ||
1382 | } | 1384 | } |
1383 | 1385 | ||
1384 | - check_in3270(session); | ||
1385 | - check_linemode(session,False); | 1386 | + check_in3270(hSession); |
1387 | + check_linemode(hSession,False); | ||
1386 | } | 1388 | } |
1387 | break; | 1389 | break; |
1388 | } | 1390 | } |
1389 | default: | 1391 | default: |
1390 | dont_opt[2] = c; | 1392 | dont_opt[2] = c; |
1391 | - net_rawout(session,dont_opt, sizeof(dont_opt)); | ||
1392 | - trace_dsn(session,"SENT %s %s\n", cmd(DONT), opt(c)); | 1393 | + net_rawout(hSession,dont_opt, sizeof(dont_opt)); |
1394 | + trace_dsn(hSession,"SENT %s %s\n", cmd(DONT), opt(c)); | ||
1393 | break; | 1395 | break; |
1394 | } | 1396 | } |
1395 | - session->telnet_state = TNS_DATA; | 1397 | + hSession->telnet_state = TNS_DATA; |
1396 | break; | 1398 | break; |
1397 | case TNS_WONT: /* telnet WONT DO OPTION command */ | 1399 | case TNS_WONT: /* telnet WONT DO OPTION command */ |
1398 | - trace_dsn(session,"%s\n", opt(c)); | ||
1399 | - if (session->hisopts[c]) | 1400 | + trace_dsn(hSession,"%s\n", opt(c)); |
1401 | + if (hSession->hisopts[c]) | ||
1400 | { | 1402 | { |
1401 | - session->hisopts[c] = 0; | 1403 | + hSession->hisopts[c] = 0; |
1402 | dont_opt[2] = c; | 1404 | dont_opt[2] = c; |
1403 | - net_rawout(session, dont_opt, sizeof(dont_opt)); | ||
1404 | - trace_dsn(session,"SENT %s %s\n", cmd(DONT), opt(c)); | ||
1405 | - check_in3270(session); | ||
1406 | - check_linemode(session,False); | 1405 | + net_rawout(hSession, dont_opt, sizeof(dont_opt)); |
1406 | + trace_dsn(hSession,"SENT %s %s\n", cmd(DONT), opt(c)); | ||
1407 | + check_in3270(hSession); | ||
1408 | + check_linemode(hSession,False); | ||
1407 | } | 1409 | } |
1408 | 1410 | ||
1409 | - session->telnet_state = TNS_DATA; | 1411 | + hSession->telnet_state = TNS_DATA; |
1410 | break; | 1412 | break; |
1411 | case TNS_DO: /* telnet PLEASE DO OPTION command */ | 1413 | case TNS_DO: /* telnet PLEASE DO OPTION command */ |
1412 | - trace_dsn(session,"%s\n", opt(c)); | 1414 | + trace_dsn(hSession,"%s\n", opt(c)); |
1413 | switch (c) { | 1415 | switch (c) { |
1414 | case TELOPT_BINARY: | 1416 | case TELOPT_BINARY: |
1415 | case TELOPT_EOR: | 1417 | case TELOPT_EOR: |
@@ -1423,24 +1425,24 @@ static int telnet_fsm(H3270 *session, unsigned char c) | @@ -1423,24 +1425,24 @@ static int telnet_fsm(H3270 *session, unsigned char c) | ||
1423 | #if defined(HAVE_LIBSSL) /*[*/ | 1425 | #if defined(HAVE_LIBSSL) /*[*/ |
1424 | case TELOPT_STARTTLS: | 1426 | case TELOPT_STARTTLS: |
1425 | #endif /*]*/ | 1427 | #endif /*]*/ |
1426 | - if (c == TELOPT_TN3270E && session->non_tn3270e_host) | 1428 | + if (c == TELOPT_TN3270E && hSession->non_tn3270e_host) |
1427 | goto wont; | 1429 | goto wont; |
1428 | - if (c == TELOPT_TM && !session->bsd_tm) | 1430 | + if (c == TELOPT_TM && !hSession->bsd_tm) |
1429 | goto wont; | 1431 | goto wont; |
1430 | 1432 | ||
1431 | - trace("session->myopts[c]=%d",session->myopts[c]); | ||
1432 | - if (!session->myopts[c]) | 1433 | + trace("hSession->myopts[c]=%d",hSession->myopts[c]); |
1434 | + if (!hSession->myopts[c]) | ||
1433 | { | 1435 | { |
1434 | if (c != TELOPT_TM) | 1436 | if (c != TELOPT_TM) |
1435 | - session->myopts[c] = 1; | 1437 | + hSession->myopts[c] = 1; |
1436 | will_opt[2] = c; | 1438 | will_opt[2] = c; |
1437 | - net_rawout(session, will_opt, sizeof(will_opt)); | ||
1438 | - trace_dsn(session,"SENT %s %s\n", cmd(WILL), opt(c)); | ||
1439 | - check_in3270(session); | ||
1440 | - check_linemode(session,False); | 1439 | + net_rawout(hSession, will_opt, sizeof(will_opt)); |
1440 | + trace_dsn(hSession,"SENT %s %s\n", cmd(WILL), opt(c)); | ||
1441 | + check_in3270(hSession); | ||
1442 | + check_linemode(hSession,False); | ||
1441 | } | 1443 | } |
1442 | if (c == TELOPT_NAWS) | 1444 | if (c == TELOPT_NAWS) |
1443 | - send_naws(session); | 1445 | + send_naws(hSession); |
1444 | #if defined(HAVE_LIBSSL) /*[*/ | 1446 | #if defined(HAVE_LIBSSL) /*[*/ |
1445 | if (c == TELOPT_STARTTLS) { | 1447 | if (c == TELOPT_STARTTLS) { |
1446 | static unsigned char follows_msg[] = { | 1448 | static unsigned char follows_msg[] = { |
@@ -1452,82 +1454,82 @@ static int telnet_fsm(H3270 *session, unsigned char c) | @@ -1452,82 +1454,82 @@ static int telnet_fsm(H3270 *session, unsigned char c) | ||
1452 | * Send IAC SB STARTTLS FOLLOWS IAC SE | 1454 | * Send IAC SB STARTTLS FOLLOWS IAC SE |
1453 | * to announce that what follows is TLS. | 1455 | * to announce that what follows is TLS. |
1454 | */ | 1456 | */ |
1455 | - net_rawout(session, follows_msg, sizeof(follows_msg)); | ||
1456 | - trace_dsn(session,"SENT %s %s FOLLOWS %s\n", | 1457 | + net_rawout(hSession, follows_msg, sizeof(follows_msg)); |
1458 | + trace_dsn(hSession,"SENT %s %s FOLLOWS %s\n", | ||
1457 | cmd(SB), | 1459 | cmd(SB), |
1458 | opt(TELOPT_STARTTLS), | 1460 | opt(TELOPT_STARTTLS), |
1459 | cmd(SE)); | 1461 | cmd(SE)); |
1460 | - session->need_tls_follows = 1; | 1462 | + hSession->need_tls_follows = 1; |
1461 | } | 1463 | } |
1462 | #endif /*]*/ | 1464 | #endif /*]*/ |
1463 | break; | 1465 | break; |
1464 | default: | 1466 | default: |
1465 | wont: | 1467 | wont: |
1466 | wont_opt[2] = c; | 1468 | wont_opt[2] = c; |
1467 | - net_rawout(session, wont_opt, sizeof(wont_opt)); | ||
1468 | - trace_dsn(session,"SENT %s %s\n", cmd(WONT), opt(c)); | 1469 | + net_rawout(hSession, wont_opt, sizeof(wont_opt)); |
1470 | + trace_dsn(hSession,"SENT %s %s\n", cmd(WONT), opt(c)); | ||
1469 | break; | 1471 | break; |
1470 | } | 1472 | } |
1471 | - session->telnet_state = TNS_DATA; | 1473 | + hSession->telnet_state = TNS_DATA; |
1472 | break; | 1474 | break; |
1473 | case TNS_DONT: /* telnet PLEASE DON'T DO OPTION command */ | 1475 | case TNS_DONT: /* telnet PLEASE DON'T DO OPTION command */ |
1474 | - trace_dsn(session,"%s\n", opt(c)); | ||
1475 | - if (session->myopts[c]) { | ||
1476 | - session->myopts[c] = 0; | 1476 | + trace_dsn(hSession,"%s\n", opt(c)); |
1477 | + if (hSession->myopts[c]) { | ||
1478 | + hSession->myopts[c] = 0; | ||
1477 | wont_opt[2] = c; | 1479 | wont_opt[2] = c; |
1478 | - net_rawout(session, wont_opt, sizeof(wont_opt)); | ||
1479 | - trace_dsn(session,"SENT %s %s\n", cmd(WONT), opt(c)); | ||
1480 | - check_in3270(session); | ||
1481 | - check_linemode(session,False); | 1480 | + net_rawout(hSession, wont_opt, sizeof(wont_opt)); |
1481 | + trace_dsn(hSession,"SENT %s %s\n", cmd(WONT), opt(c)); | ||
1482 | + check_in3270(hSession); | ||
1483 | + check_linemode(hSession,False); | ||
1482 | } | 1484 | } |
1483 | - session->telnet_state = TNS_DATA; | 1485 | + hSession->telnet_state = TNS_DATA; |
1484 | break; | 1486 | break; |
1485 | case TNS_SB: /* telnet sub-option string command */ | 1487 | case TNS_SB: /* telnet sub-option string command */ |
1486 | if (c == IAC) | 1488 | if (c == IAC) |
1487 | - session->telnet_state = TNS_SB_IAC; | 1489 | + hSession->telnet_state = TNS_SB_IAC; |
1488 | else | 1490 | else |
1489 | - *session->sbptr++ = c; | 1491 | + *hSession->sbptr++ = c; |
1490 | break; | 1492 | break; |
1491 | case TNS_SB_IAC: /* telnet sub-option string command */ | 1493 | case TNS_SB_IAC: /* telnet sub-option string command */ |
1492 | - *session->sbptr++ = c; | 1494 | + *hSession->sbptr++ = c; |
1493 | if (c == SE) { | 1495 | if (c == SE) { |
1494 | - session->telnet_state = TNS_DATA; | ||
1495 | - if (session->sbbuf[0] == TELOPT_TTYPE && session->sbbuf[1] == TELQUAL_SEND) | 1496 | + hSession->telnet_state = TNS_DATA; |
1497 | + if (hSession->sbbuf[0] == TELOPT_TTYPE && hSession->sbbuf[1] == TELQUAL_SEND) | ||
1496 | { | 1498 | { |
1497 | int tt_len, tb_len; | 1499 | int tt_len, tb_len; |
1498 | char *tt_out; | 1500 | char *tt_out; |
1499 | 1501 | ||
1500 | - trace_dsn(session,"%s %s\n", opt(session->sbbuf[0]),telquals[session->sbbuf[1]]); | 1502 | + trace_dsn(hSession,"%s %s\n", opt(hSession->sbbuf[0]),telquals[hSession->sbbuf[1]]); |
1501 | 1503 | ||
1502 | - if (session->lus != (char **)NULL && session->try_lu == CN) | 1504 | + if (hSession->lus != (char **)NULL && hSession->try_lu == CN) |
1503 | { | 1505 | { |
1504 | /* None of the LUs worked. */ | 1506 | /* None of the LUs worked. */ |
1505 | popup_an_error(NULL,"Cannot connect to specified LU"); | 1507 | popup_an_error(NULL,"Cannot connect to specified LU"); |
1506 | return -1; | 1508 | return -1; |
1507 | } | 1509 | } |
1508 | 1510 | ||
1509 | - tt_len = strlen(session->termtype); | ||
1510 | - if (session->try_lu != CN && *session->try_lu) | 1511 | + tt_len = strlen(hSession->termtype); |
1512 | + if (hSession->try_lu != CN && *hSession->try_lu) | ||
1511 | { | 1513 | { |
1512 | - tt_len += strlen(session->try_lu) + 1; | ||
1513 | - session->connected_lu = session->try_lu; | 1514 | + tt_len += strlen(hSession->try_lu) + 1; |
1515 | + hSession->connected_lu = hSession->try_lu; | ||
1514 | } | 1516 | } |
1515 | else | 1517 | else |
1516 | - session->connected_lu = CN; | 1518 | + hSession->connected_lu = CN; |
1517 | 1519 | ||
1518 | - status_lu(session,session->connected_lu); | 1520 | + status_lu(hSession,hSession->connected_lu); |
1519 | 1521 | ||
1520 | tb_len = 4 + tt_len + 2; | 1522 | tb_len = 4 + tt_len + 2; |
1521 | tt_out = lib3270_malloc(tb_len + 1); | 1523 | tt_out = lib3270_malloc(tb_len + 1); |
1522 | (void) sprintf(tt_out, "%c%c%c%c%s%s%s%c%c", | 1524 | (void) sprintf(tt_out, "%c%c%c%c%s%s%s%c%c", |
1523 | IAC, SB, TELOPT_TTYPE, TELQUAL_IS, | 1525 | IAC, SB, TELOPT_TTYPE, TELQUAL_IS, |
1524 | - session->termtype, | ||
1525 | - (session->try_lu != CN && *session->try_lu) ? "@" : "", | ||
1526 | - (session->try_lu != CN && *session->try_lu) ? session->try_lu : "", | 1526 | + hSession->termtype, |
1527 | + (hSession->try_lu != CN && *hSession->try_lu) ? "@" : "", | ||
1528 | + (hSession->try_lu != CN && *hSession->try_lu) ? hSession->try_lu : "", | ||
1527 | IAC, SE); | 1529 | IAC, SE); |
1528 | - net_rawout(session, (unsigned char *)tt_out, tb_len); | 1530 | + net_rawout(hSession, (unsigned char *)tt_out, tb_len); |
1529 | 1531 | ||
1530 | - trace_dsn(session,"SENT %s %s %s %.*s %s\n", | 1532 | + trace_dsn(hSession,"SENT %s %s %s %.*s %s\n", |
1531 | cmd(SB), opt(TELOPT_TTYPE), | 1533 | cmd(SB), opt(TELOPT_TTYPE), |
1532 | telquals[TELQUAL_IS], | 1534 | telquals[TELQUAL_IS], |
1533 | tt_len, tt_out + 4, | 1535 | tt_len, tt_out + 4, |
@@ -1535,24 +1537,24 @@ static int telnet_fsm(H3270 *session, unsigned char c) | @@ -1535,24 +1537,24 @@ static int telnet_fsm(H3270 *session, unsigned char c) | ||
1535 | lib3270_free(tt_out); | 1537 | lib3270_free(tt_out); |
1536 | 1538 | ||
1537 | /* Advance to the next LU name. */ | 1539 | /* Advance to the next LU name. */ |
1538 | - next_lu(session); | 1540 | + next_lu(hSession); |
1539 | } | 1541 | } |
1540 | #if defined(X3270_TN3270E) /*[*/ | 1542 | #if defined(X3270_TN3270E) /*[*/ |
1541 | - else if (session->myopts[TELOPT_TN3270E] && session->sbbuf[0] == TELOPT_TN3270E) | 1543 | + else if (hSession->myopts[TELOPT_TN3270E] && hSession->sbbuf[0] == TELOPT_TN3270E) |
1542 | { | 1544 | { |
1543 | - if (tn3270e_negotiate(session)) | 1545 | + if (tn3270e_negotiate(hSession)) |
1544 | return -1; | 1546 | return -1; |
1545 | } | 1547 | } |
1546 | #endif /*]*/ | 1548 | #endif /*]*/ |
1547 | #if defined(HAVE_LIBSSL) /*[*/ | 1549 | #if defined(HAVE_LIBSSL) /*[*/ |
1548 | - else if (session->need_tls_follows && session->myopts[TELOPT_STARTTLS] && session->sbbuf[0] == TELOPT_STARTTLS) | 1550 | + else if (hSession->need_tls_follows && hSession->myopts[TELOPT_STARTTLS] && hSession->sbbuf[0] == TELOPT_STARTTLS) |
1549 | { | 1551 | { |
1550 | - continue_tls(session,session->sbbuf, session->sbptr - session->sbbuf); | 1552 | + continue_tls(hSession,hSession->sbbuf, hSession->sbptr - hSession->sbbuf); |
1551 | } | 1553 | } |
1552 | #endif /*]*/ | 1554 | #endif /*]*/ |
1553 | 1555 | ||
1554 | } else { | 1556 | } else { |
1555 | - session->telnet_state = TNS_SB; | 1557 | + hSession->telnet_state = TNS_SB; |
1556 | } | 1558 | } |
1557 | break; | 1559 | break; |
1558 | } | 1560 | } |
@@ -2405,18 +2407,19 @@ static void do_lnext(H3270 *hSession, char c) | @@ -2405,18 +2407,19 @@ static void do_lnext(H3270 *hSession, char c) | ||
2405 | #endif /*]*/ | 2407 | #endif /*]*/ |
2406 | 2408 | ||
2407 | 2409 | ||
2408 | - | ||
2409 | -/* | ||
2410 | - * check_in3270 | ||
2411 | - * Check for switches between NVT, SSCP-LU and 3270 modes. | 2410 | +/** |
2411 | + * Check for switches between NVT, SSCP-LU and 3270 modes. | ||
2412 | + * | ||
2413 | + * @param hSession Session handle. | ||
2414 | + * | ||
2412 | */ | 2415 | */ |
2413 | -static void | ||
2414 | -check_in3270(H3270 *session) | 2416 | +static void check_in3270(H3270 *hSession) |
2415 | { | 2417 | { |
2416 | LIB3270_CSTATE new_cstate = NOT_CONNECTED; | 2418 | LIB3270_CSTATE new_cstate = NOT_CONNECTED; |
2417 | 2419 | ||
2418 | #if defined(X3270_TRACE) /*[*/ | 2420 | #if defined(X3270_TRACE) /*[*/ |
2419 | - static const char *state_name[] = { | 2421 | + static const char *state_name[] = |
2422 | + { | ||
2420 | "unconnected", | 2423 | "unconnected", |
2421 | "resolving", | 2424 | "resolving", |
2422 | "pending", | 2425 | "pending", |
@@ -2431,10 +2434,10 @@ check_in3270(H3270 *session) | @@ -2431,10 +2434,10 @@ check_in3270(H3270 *session) | ||
2431 | #endif /*]*/ | 2434 | #endif /*]*/ |
2432 | 2435 | ||
2433 | #if defined(X3270_TN3270E) /*[*/ | 2436 | #if defined(X3270_TN3270E) /*[*/ |
2434 | - if (session->myopts[TELOPT_TN3270E]) { | ||
2435 | - if (!session->tn3270e_negotiated) | 2437 | + if (hSession->myopts[TELOPT_TN3270E]) { |
2438 | + if (!hSession->tn3270e_negotiated) | ||
2436 | new_cstate = CONNECTED_INITIAL_E; | 2439 | new_cstate = CONNECTED_INITIAL_E; |
2437 | - else switch (session->tn3270e_submode) { | 2440 | + else switch (hSession->tn3270e_submode) { |
2438 | case E_NONE: | 2441 | case E_NONE: |
2439 | new_cstate = CONNECTED_INITIAL_E; | 2442 | new_cstate = CONNECTED_INITIAL_E; |
2440 | break; | 2443 | break; |
@@ -2450,20 +2453,20 @@ check_in3270(H3270 *session) | @@ -2450,20 +2453,20 @@ check_in3270(H3270 *session) | ||
2450 | } | 2453 | } |
2451 | } else | 2454 | } else |
2452 | #endif /*]*/ | 2455 | #endif /*]*/ |
2453 | - if (session->myopts[TELOPT_BINARY] && | ||
2454 | - session->myopts[TELOPT_EOR] && | ||
2455 | - session->myopts[TELOPT_TTYPE] && | ||
2456 | - session->hisopts[TELOPT_BINARY] && | ||
2457 | - session->hisopts[TELOPT_EOR]) { | 2456 | + if (hSession->myopts[TELOPT_BINARY] && |
2457 | + hSession->myopts[TELOPT_EOR] && | ||
2458 | + hSession->myopts[TELOPT_TTYPE] && | ||
2459 | + hSession->hisopts[TELOPT_BINARY] && | ||
2460 | + hSession->hisopts[TELOPT_EOR]) { | ||
2458 | new_cstate = CONNECTED_3270; | 2461 | new_cstate = CONNECTED_3270; |
2459 | - } else if (session->cstate == CONNECTED_INITIAL) { | 2462 | + } else if (hSession->cstate == CONNECTED_INITIAL) { |
2460 | /* Nothing has happened, yet. */ | 2463 | /* Nothing has happened, yet. */ |
2461 | return; | 2464 | return; |
2462 | } else { | 2465 | } else { |
2463 | new_cstate = CONNECTED_ANSI; | 2466 | new_cstate = CONNECTED_ANSI; |
2464 | } | 2467 | } |
2465 | 2468 | ||
2466 | - if (new_cstate != session->cstate) { | 2469 | + if (new_cstate != hSession->cstate) { |
2467 | #if defined(X3270_TN3270E) /*[*/ | 2470 | #if defined(X3270_TN3270E) /*[*/ |
2468 | int was_in_e = IN_E; | 2471 | int was_in_e = IN_E; |
2469 | #endif /*]*/ | 2472 | #endif /*]*/ |
@@ -2474,37 +2477,37 @@ check_in3270(H3270 *session) | @@ -2474,37 +2477,37 @@ check_in3270(H3270 *session) | ||
2474 | * TN3270E mode, reset the LU list so we can try again | 2477 | * TN3270E mode, reset the LU list so we can try again |
2475 | * in the new mode. | 2478 | * in the new mode. |
2476 | */ | 2479 | */ |
2477 | - if (session->lus != (char **)NULL && was_in_e != IN_E) { | ||
2478 | - session->curr_lu = session->lus; | ||
2479 | - session->try_lu = *session->curr_lu; | 2480 | + if (hSession->lus != (char **)NULL && was_in_e != IN_E) { |
2481 | + hSession->curr_lu = hSession->lus; | ||
2482 | + hSession->try_lu = *hSession->curr_lu; | ||
2480 | } | 2483 | } |
2481 | #endif /*]*/ | 2484 | #endif /*]*/ |
2482 | 2485 | ||
2483 | /* Allocate the initial 3270 input buffer. */ | 2486 | /* Allocate the initial 3270 input buffer. */ |
2484 | - if(new_cstate >= CONNECTED_INITIAL && !(session->ibuf_size && session->ibuf)) | 2487 | + if(new_cstate >= CONNECTED_INITIAL && !(hSession->ibuf_size && hSession->ibuf)) |
2485 | { | 2488 | { |
2486 | - session->ibuf = (unsigned char *) lib3270_malloc(BUFSIZ); | ||
2487 | - session->ibuf_size = BUFSIZ; | ||
2488 | - session->ibptr = session->ibuf; | 2489 | + hSession->ibuf = (unsigned char *) lib3270_malloc(BUFSIZ); |
2490 | + hSession->ibuf_size = BUFSIZ; | ||
2491 | + hSession->ibptr = hSession->ibuf; | ||
2489 | } | 2492 | } |
2490 | 2493 | ||
2491 | #if defined(X3270_ANSI) /*[*/ | 2494 | #if defined(X3270_ANSI) /*[*/ |
2492 | /* Reinitialize line mode. */ | 2495 | /* Reinitialize line mode. */ |
2493 | - if ((new_cstate == CONNECTED_ANSI && session->linemode) || | 2496 | + if ((new_cstate == CONNECTED_ANSI && hSession->linemode) || |
2494 | new_cstate == CONNECTED_NVT) | 2497 | new_cstate == CONNECTED_NVT) |
2495 | - cooked_init(session); | 2498 | + cooked_init(hSession); |
2496 | #endif /*]*/ | 2499 | #endif /*]*/ |
2497 | 2500 | ||
2498 | #if defined(X3270_TN3270E) /*[*/ | 2501 | #if defined(X3270_TN3270E) /*[*/ |
2499 | /* If we fell out of TN3270E, remove the state. */ | 2502 | /* If we fell out of TN3270E, remove the state. */ |
2500 | - if (!session->myopts[TELOPT_TN3270E]) { | ||
2501 | - session->tn3270e_negotiated = 0; | ||
2502 | - session->tn3270e_submode = E_NONE; | ||
2503 | - session->tn3270e_bound = 0; | 2503 | + if (!hSession->myopts[TELOPT_TN3270E]) { |
2504 | + hSession->tn3270e_negotiated = 0; | ||
2505 | + hSession->tn3270e_submode = E_NONE; | ||
2506 | + hSession->tn3270e_bound = 0; | ||
2504 | } | 2507 | } |
2505 | #endif /*]*/ | 2508 | #endif /*]*/ |
2506 | - trace_dsn(session,"Now operating in %s mode.\n",state_name[new_cstate]); | ||
2507 | - host_in3270(session,new_cstate); | 2509 | + trace_dsn(hSession,"Now operating in %s mode.\n",state_name[new_cstate]); |
2510 | + host_in3270(hSession,new_cstate); | ||
2508 | } | 2511 | } |
2509 | } | 2512 | } |
2510 | 2513 |
src/pw3270/v3270/iocallback.c
@@ -111,6 +111,7 @@ static void * AddSource(int source, H3270 *session, gushort events, void (*fn)(H | @@ -111,6 +111,7 @@ static void * AddSource(int source, H3270 *session, gushort events, void (*fn)(H | ||
111 | src->fn = fn; | 111 | src->fn = fn; |
112 | src->poll.fd = (int) source; | 112 | src->poll.fd = (int) source; |
113 | src->poll.events = events; | 113 | src->poll.events = events; |
114 | + src->session = session; | ||
114 | 115 | ||
115 | g_source_attach((GSource *) src,NULL); | 116 | g_source_attach((GSource *) src,NULL); |
116 | g_source_add_poll((GSource *) src,&src->poll); | 117 | g_source_add_poll((GSource *) src,&src->poll); |
@@ -329,10 +330,6 @@ void v3270_register_io_handlers(v3270Class *cls) | @@ -329,10 +330,6 @@ void v3270_register_io_handlers(v3270Class *cls) | ||
329 | 330 | ||
330 | static_AddExcept, | 331 | static_AddExcept, |
331 | 332 | ||
332 | -// #if !defined(_WIN32) | ||
333 | -// static_AddOutput, | ||
334 | -// #endif | ||
335 | - | ||
336 | #ifdef G_THREADS_ENABLED | 333 | #ifdef G_THREADS_ENABLED |
337 | static_CallAndWait, | 334 | static_CallAndWait, |
338 | #else | 335 | #else |