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 | 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 | 256 | #ifndef LIB3270 |
257 | 257 | ... | ... |
src/lib3270/ctlr.c
... | ... | @@ -155,26 +155,27 @@ void ctlr_reinit(H3270 *session, unsigned cmask) |
155 | 155 | /** |
156 | 156 | * Get current 3270 model. |
157 | 157 | * |
158 | - * @param session selected 3270 session. | |
158 | + * @param hSession selected 3270 session. | |
159 | 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 | 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 | 174 | if(CONNECTED) |
174 | 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 | 180 | return 0; |
180 | 181 | } | ... | ... |
src/lib3270/ft.c
... | ... | @@ -514,17 +514,17 @@ void ft_aborting(H3270FT *h) |
514 | 514 | } |
515 | 515 | |
516 | 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 | 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 | 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 | 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 | 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 | 617 | return EAGAIN; |
618 | 618 | |
619 | 619 | if(PCONNECTED) |
... | ... | @@ -621,12 +621,12 @@ int lib3270_connect(H3270 *h, const char *n, int wait) |
621 | 621 | |
622 | 622 | if(!n) |
623 | 623 | { |
624 | - n = h->full_current_host; | |
624 | + n = hSession->full_current_host; | |
625 | 625 | if(!n) |
626 | 626 | return EINVAL; |
627 | 627 | } |
628 | 628 | |
629 | - rc = do_connect(h,n); | |
629 | + rc = do_connect(hSession,n); | |
630 | 630 | if(rc) |
631 | 631 | return rc; |
632 | 632 | |
... | ... | @@ -634,7 +634,7 @@ int lib3270_connect(H3270 *h, const char *n, int wait) |
634 | 634 | { |
635 | 635 | while(!IN_ANSI && !IN_3270) |
636 | 636 | { |
637 | - lib3270_main_iterate(h,1); | |
637 | + lib3270_main_iterate(hSession,1); | |
638 | 638 | |
639 | 639 | if(!PCONNECTED) |
640 | 640 | { |
... | ... | @@ -661,22 +661,22 @@ LIB3270_EXPORT void lib3270_disconnect(H3270 *h) |
661 | 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 | 668 | if (CONNECTED || HALF_CONNECTED) |
669 | 669 | { |
670 | 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 | 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 | 684 | * in sync. |
685 | 685 | */ |
686 | 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 | 689 | #endif /*]*/ |
690 | 690 | |
691 | - lib3270_set_disconnected(h); | |
691 | + lib3270_set_disconnected(hSession); | |
692 | 692 | } |
693 | 693 | } |
694 | 694 | |
695 | 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 | 698 | Boolean now3270 = (new_cstate == CONNECTED_3270 || |
699 | 699 | new_cstate == CONNECTED_SSCP || |
700 | 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 | 707 | void lib3270_set_connected(H3270 *hSession) |
... | ... | @@ -805,26 +805,26 @@ LIB3270_EXPORT const char * lib3270_get_host(H3270 *h) |
805 | 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 | 810 | int rc; |
811 | 811 | |
812 | - CHECK_SESSION_HANDLE(h); | |
812 | + CHECK_SESSION_HANDLE(hSession); | |
813 | 813 | |
814 | 814 | if (CONNECTED || HALF_CONNECTED) |
815 | 815 | return EBUSY; |
816 | 816 | |
817 | - if (h->full_current_host == CN) | |
817 | + if (hSession->full_current_host == CN) | |
818 | 818 | return EINVAL; |
819 | 819 | |
820 | - if (h->auto_reconnect_inprogress) | |
820 | + if (hSession->auto_reconnect_inprogress) | |
821 | 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 | 825 | if(rc) |
826 | 826 | { |
827 | - h->auto_reconnect_inprogress = 0; | |
827 | + hSession->auto_reconnect_inprogress = 0; | |
828 | 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 | 456 | /* |
457 | 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 | 465 | /* There might be a macro pending. */ |
466 | 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 | 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 | 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 | 1121 | if(CONNECTED) |
1122 | - ps_process(session); | |
1122 | + ps_process(hSession); | |
1123 | 1123 | } |
1124 | 1124 | |
1125 | 1125 | /* |
1126 | 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 | 1131 | * If explicit (from the keyboard) and there is typeahead or |
... | ... | @@ -1134,12 +1134,12 @@ void do_reset(H3270 *session, Boolean explicit) |
1134 | 1134 | |
1135 | 1135 | if (explicit |
1136 | 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 | 1138 | #endif /*]*/ |
1139 | 1139 | ) { |
1140 | 1140 | Boolean half_reset = False; |
1141 | 1141 | |
1142 | - if (flush_ta(session)) | |
1142 | + if (flush_ta(hSession)) | |
1143 | 1143 | half_reset = True; |
1144 | 1144 | |
1145 | 1145 | if (half_reset) |
... | ... | @@ -1147,7 +1147,7 @@ void do_reset(H3270 *session, Boolean explicit) |
1147 | 1147 | } |
1148 | 1148 | |
1149 | 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 | 1152 | /* Otherwise, if not connect, reset is a no-op. */ |
1153 | 1153 | if (!CONNECTED) |
... | ... | @@ -1157,8 +1157,8 @@ void do_reset(H3270 *session, Boolean explicit) |
1157 | 1157 | * Remove any deferred keyboard unlock. We will either unlock the |
1158 | 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 | 1164 | * If explicit (from the keyboard), unlock the keyboard now. |
... | ... | @@ -1166,21 +1166,21 @@ void do_reset(H3270 *session, Boolean explicit) |
1166 | 1166 | */ |
1167 | 1167 | if (explicit |
1168 | 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 | 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 | 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 | 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 | 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 | 543 | LIB3270_STATUS id = LIB3270_STATUS_USER; |
544 | 544 | |
545 | - ctlr_erase(session,1); | |
545 | + ctlr_erase(hSession,1); | |
546 | 546 | |
547 | 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 | 552 | id = LIB3270_STATUS_AWAITING_FIRST; |
553 | 553 | else |
554 | 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 | 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 | 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 | 569 | Boolean oia_boxsolid = (IN_3270 && !IN_SSCP); |
580 | 570 | |
581 | - CHECK_SESSION_HANDLE(session); | |
571 | + CHECK_SESSION_HANDLE(hSession); | |
582 | 572 | |
583 | 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 | 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 | 1024 | // register unsigned char * cp; |
1022 | 1025 | int nr; |
1023 | 1026 | unsigned char buffer[BUFSZ]; |
1024 | 1027 | |
1025 | - CHECK_SESSION_HANDLE(session); | |
1028 | + CHECK_SESSION_HANDLE(hSession); | |
1026 | 1029 | |
1027 | 1030 | #if defined(_WIN32) |
1028 | 1031 | for (;;) |
1029 | 1032 | #endif |
1030 | 1033 | { |
1031 | - if (session->sock < 0) | |
1034 | + if (hSession->sock < 0) | |
1032 | 1035 | return; |
1033 | 1036 | |
1034 | 1037 | #if defined(X3270_ANSI) |
1035 | - session->ansi_data = 0; | |
1038 | + hSession->ansi_data = 0; | |
1036 | 1039 | #endif |
1037 | 1040 | |
1038 | 1041 | #if defined(_WIN32) |
1039 | - ResetEvent(session->sockEvent); | |
1042 | + ResetEvent(hSession->sockEvent); | |
1040 | 1043 | #endif |
1041 | 1044 | |
1042 | 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 | 1048 | else |
1046 | - nr = recv(session->sock, (char *) buffer, BUFSZ, 0); | |
1049 | + nr = recv(hSession->sock, (char *) buffer, BUFSZ, 0); | |
1047 | 1050 | #else |
1048 | - nr = recv(session->sock, (char *) buffer, BUFSZ, 0); | |
1051 | + nr = recv(hSession->sock, (char *) buffer, BUFSZ, 0); | |
1049 | 1052 | #endif // HAVE_LIBSSL |
1050 | 1053 | |
1051 | 1054 | if (nr < 0) |
... | ... | @@ -1054,7 +1057,7 @@ void net_input(H3270 *session) |
1054 | 1057 | return; |
1055 | 1058 | |
1056 | 1059 | #if defined(HAVE_LIBSSL) /*[*/ |
1057 | - if(session->ssl_con != NULL) | |
1060 | + if(hSession->ssl_con != NULL) | |
1058 | 1061 | { |
1059 | 1062 | unsigned long e; |
1060 | 1063 | char err_buf[120]; |
... | ... | @@ -1065,55 +1068,55 @@ void net_input(H3270 *session) |
1065 | 1068 | else |
1066 | 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 | 1076 | return; |
1074 | 1077 | } |
1075 | 1078 | #endif /*]*/ |
1076 | 1079 | |
1077 | 1080 | if (HALF_CONNECTED && socket_errno() == SE_EAGAIN) |
1078 | 1081 | { |
1079 | - connection_complete(session); | |
1082 | + connection_complete(hSession); | |
1080 | 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 | 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 | 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 | 1098 | return; |
1096 | 1099 | } else if (nr == 0) |
1097 | 1100 | { |
1098 | 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 | 1104 | return; |
1102 | 1105 | } |
1103 | 1106 | |
1104 | 1107 | /* Process the data. */ |
1105 | 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 | 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 | 1122 | trace_netdata('<', session->netrbuf, nr); |
... | ... | @@ -1201,65 +1204,64 @@ static void next_lu(H3270 *hSession) |
1201 | 1204 | * Telnet finite-state machine. |
1202 | 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 | 1209 | #if defined(X3270_ANSI) /*[*/ |
1207 | 1210 | char *see_chr; |
1208 | 1211 | int sl; |
1209 | 1212 | #endif /*]*/ |
1210 | 1213 | |
1211 | - switch (session->telnet_state) | |
1214 | + switch (hSession->telnet_state) | |
1212 | 1215 | { |
1213 | 1216 | case TNS_DATA: /* normal data processing */ |
1214 | 1217 | if (c == IAC) { /* got a telnet command */ |
1215 | - session->telnet_state = TNS_IAC; | |
1218 | + hSession->telnet_state = TNS_IAC; | |
1216 | 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 | 1224 | #endif /*]*/ |
1222 | 1225 | break; |
1223 | 1226 | } |
1224 | 1227 | if (IN_NEITHER) { /* now can assume ANSI mode */ |
1225 | 1228 | #if defined(X3270_ANSI)/*[*/ |
1226 | - if (session->linemode) | |
1227 | - cooked_init(session); | |
1229 | + if (hSession->linemode) | |
1230 | + cooked_init(hSession); | |
1228 | 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 | 1237 | if (IN_ANSI && !IN_E) { |
1235 | 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 | 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 | 1256 | #endif /*]*/ |
1255 | 1257 | } else { |
1256 | - store3270in(session,c); | |
1258 | + store3270in(hSession,c); | |
1257 | 1259 | } |
1258 | 1260 | break; |
1259 | 1261 | case TNS_IAC: /* process a telnet command */ |
1260 | 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 | 1267 | switch (c) |
... | ... | @@ -1268,91 +1270,91 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1268 | 1270 | if (IN_ANSI && !IN_E) |
1269 | 1271 | { |
1270 | 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 | 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 | 1287 | #endif /*]*/ |
1286 | 1288 | } |
1287 | 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 | 1294 | break; |
1293 | 1295 | |
1294 | 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 | 1302 | return -1; |
1301 | 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 | 1309 | break; |
1308 | 1310 | |
1309 | 1311 | case WILL: |
1310 | - session->telnet_state = TNS_WILL; | |
1312 | + hSession->telnet_state = TNS_WILL; | |
1311 | 1313 | break; |
1312 | 1314 | |
1313 | 1315 | case WONT: |
1314 | - session->telnet_state = TNS_WONT; | |
1316 | + hSession->telnet_state = TNS_WONT; | |
1315 | 1317 | break; |
1316 | 1318 | |
1317 | 1319 | case DO: |
1318 | - session->telnet_state = TNS_DO; | |
1320 | + hSession->telnet_state = TNS_DO; | |
1319 | 1321 | break; |
1320 | 1322 | |
1321 | 1323 | case DONT: |
1322 | - session->telnet_state = TNS_DONT; | |
1324 | + hSession->telnet_state = TNS_DONT; | |
1323 | 1325 | break; |
1324 | 1326 | |
1325 | 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 | 1332 | break; |
1331 | 1333 | |
1332 | 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 | 1342 | break; |
1341 | 1343 | |
1342 | 1344 | case GA: |
1343 | 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 | 1348 | break; |
1347 | 1349 | |
1348 | 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 | 1353 | break; |
1352 | 1354 | } |
1353 | 1355 | break; |
1354 | 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 | 1358 | switch (c) { |
1357 | 1359 | case TELOPT_SGA: |
1358 | 1360 | case TELOPT_BINARY: |
... | ... | @@ -1362,54 +1364,54 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1362 | 1364 | #if defined(X3270_TN3270E) /*[*/ |
1363 | 1365 | case TELOPT_TN3270E: |
1364 | 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 | 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 | 1373 | cmd(DO), opt(c)); |
1372 | 1374 | |
1373 | 1375 | /* |
1374 | 1376 | * For UTS, volunteer to do EOR when |
1375 | 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 | 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 | 1389 | break; |
1388 | 1390 | } |
1389 | 1391 | default: |
1390 | 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 | 1395 | break; |
1394 | 1396 | } |
1395 | - session->telnet_state = TNS_DATA; | |
1397 | + hSession->telnet_state = TNS_DATA; | |
1396 | 1398 | break; |
1397 | 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 | 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 | 1412 | break; |
1411 | 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 | 1415 | switch (c) { |
1414 | 1416 | case TELOPT_BINARY: |
1415 | 1417 | case TELOPT_EOR: |
... | ... | @@ -1423,24 +1425,24 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1423 | 1425 | #if defined(HAVE_LIBSSL) /*[*/ |
1424 | 1426 | case TELOPT_STARTTLS: |
1425 | 1427 | #endif /*]*/ |
1426 | - if (c == TELOPT_TN3270E && session->non_tn3270e_host) | |
1428 | + if (c == TELOPT_TN3270E && hSession->non_tn3270e_host) | |
1427 | 1429 | goto wont; |
1428 | - if (c == TELOPT_TM && !session->bsd_tm) | |
1430 | + if (c == TELOPT_TM && !hSession->bsd_tm) | |
1429 | 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 | 1436 | if (c != TELOPT_TM) |
1435 | - session->myopts[c] = 1; | |
1437 | + hSession->myopts[c] = 1; | |
1436 | 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 | 1444 | if (c == TELOPT_NAWS) |
1443 | - send_naws(session); | |
1445 | + send_naws(hSession); | |
1444 | 1446 | #if defined(HAVE_LIBSSL) /*[*/ |
1445 | 1447 | if (c == TELOPT_STARTTLS) { |
1446 | 1448 | static unsigned char follows_msg[] = { |
... | ... | @@ -1452,82 +1454,82 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1452 | 1454 | * Send IAC SB STARTTLS FOLLOWS IAC SE |
1453 | 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 | 1459 | cmd(SB), |
1458 | 1460 | opt(TELOPT_STARTTLS), |
1459 | 1461 | cmd(SE)); |
1460 | - session->need_tls_follows = 1; | |
1462 | + hSession->need_tls_follows = 1; | |
1461 | 1463 | } |
1462 | 1464 | #endif /*]*/ |
1463 | 1465 | break; |
1464 | 1466 | default: |
1465 | 1467 | wont: |
1466 | 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 | 1471 | break; |
1470 | 1472 | } |
1471 | - session->telnet_state = TNS_DATA; | |
1473 | + hSession->telnet_state = TNS_DATA; | |
1472 | 1474 | break; |
1473 | 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 | 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 | 1486 | break; |
1485 | 1487 | case TNS_SB: /* telnet sub-option string command */ |
1486 | 1488 | if (c == IAC) |
1487 | - session->telnet_state = TNS_SB_IAC; | |
1489 | + hSession->telnet_state = TNS_SB_IAC; | |
1488 | 1490 | else |
1489 | - *session->sbptr++ = c; | |
1491 | + *hSession->sbptr++ = c; | |
1490 | 1492 | break; |
1491 | 1493 | case TNS_SB_IAC: /* telnet sub-option string command */ |
1492 | - *session->sbptr++ = c; | |
1494 | + *hSession->sbptr++ = c; | |
1493 | 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 | 1499 | int tt_len, tb_len; |
1498 | 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 | 1506 | /* None of the LUs worked. */ |
1505 | 1507 | popup_an_error(NULL,"Cannot connect to specified LU"); |
1506 | 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 | 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 | 1522 | tb_len = 4 + tt_len + 2; |
1521 | 1523 | tt_out = lib3270_malloc(tb_len + 1); |
1522 | 1524 | (void) sprintf(tt_out, "%c%c%c%c%s%s%s%c%c", |
1523 | 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 | 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 | 1533 | cmd(SB), opt(TELOPT_TTYPE), |
1532 | 1534 | telquals[TELQUAL_IS], |
1533 | 1535 | tt_len, tt_out + 4, |
... | ... | @@ -1535,24 +1537,24 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1535 | 1537 | lib3270_free(tt_out); |
1536 | 1538 | |
1537 | 1539 | /* Advance to the next LU name. */ |
1538 | - next_lu(session); | |
1540 | + next_lu(hSession); | |
1539 | 1541 | } |
1540 | 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 | 1546 | return -1; |
1545 | 1547 | } |
1546 | 1548 | #endif /*]*/ |
1547 | 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 | 1554 | #endif /*]*/ |
1553 | 1555 | |
1554 | 1556 | } else { |
1555 | - session->telnet_state = TNS_SB; | |
1557 | + hSession->telnet_state = TNS_SB; | |
1556 | 1558 | } |
1557 | 1559 | break; |
1558 | 1560 | } |
... | ... | @@ -2405,18 +2407,19 @@ static void do_lnext(H3270 *hSession, char c) |
2405 | 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 | 2418 | LIB3270_CSTATE new_cstate = NOT_CONNECTED; |
2417 | 2419 | |
2418 | 2420 | #if defined(X3270_TRACE) /*[*/ |
2419 | - static const char *state_name[] = { | |
2421 | + static const char *state_name[] = | |
2422 | + { | |
2420 | 2423 | "unconnected", |
2421 | 2424 | "resolving", |
2422 | 2425 | "pending", |
... | ... | @@ -2431,10 +2434,10 @@ check_in3270(H3270 *session) |
2431 | 2434 | #endif /*]*/ |
2432 | 2435 | |
2433 | 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 | 2439 | new_cstate = CONNECTED_INITIAL_E; |
2437 | - else switch (session->tn3270e_submode) { | |
2440 | + else switch (hSession->tn3270e_submode) { | |
2438 | 2441 | case E_NONE: |
2439 | 2442 | new_cstate = CONNECTED_INITIAL_E; |
2440 | 2443 | break; |
... | ... | @@ -2450,20 +2453,20 @@ check_in3270(H3270 *session) |
2450 | 2453 | } |
2451 | 2454 | } else |
2452 | 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 | 2461 | new_cstate = CONNECTED_3270; |
2459 | - } else if (session->cstate == CONNECTED_INITIAL) { | |
2462 | + } else if (hSession->cstate == CONNECTED_INITIAL) { | |
2460 | 2463 | /* Nothing has happened, yet. */ |
2461 | 2464 | return; |
2462 | 2465 | } else { |
2463 | 2466 | new_cstate = CONNECTED_ANSI; |
2464 | 2467 | } |
2465 | 2468 | |
2466 | - if (new_cstate != session->cstate) { | |
2469 | + if (new_cstate != hSession->cstate) { | |
2467 | 2470 | #if defined(X3270_TN3270E) /*[*/ |
2468 | 2471 | int was_in_e = IN_E; |
2469 | 2472 | #endif /*]*/ |
... | ... | @@ -2474,37 +2477,37 @@ check_in3270(H3270 *session) |
2474 | 2477 | * TN3270E mode, reset the LU list so we can try again |
2475 | 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 | 2484 | #endif /*]*/ |
2482 | 2485 | |
2483 | 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 | 2494 | #if defined(X3270_ANSI) /*[*/ |
2492 | 2495 | /* Reinitialize line mode. */ |
2493 | - if ((new_cstate == CONNECTED_ANSI && session->linemode) || | |
2496 | + if ((new_cstate == CONNECTED_ANSI && hSession->linemode) || | |
2494 | 2497 | new_cstate == CONNECTED_NVT) |
2495 | - cooked_init(session); | |
2498 | + cooked_init(hSession); | |
2496 | 2499 | #endif /*]*/ |
2497 | 2500 | |
2498 | 2501 | #if defined(X3270_TN3270E) /*[*/ |
2499 | 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 | 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 | 111 | src->fn = fn; |
112 | 112 | src->poll.fd = (int) source; |
113 | 113 | src->poll.events = events; |
114 | + src->session = session; | |
114 | 115 | |
115 | 116 | g_source_attach((GSource *) src,NULL); |
116 | 117 | g_source_add_poll((GSource *) src,&src->poll); |
... | ... | @@ -329,10 +330,6 @@ void v3270_register_io_handlers(v3270Class *cls) |
329 | 330 | |
330 | 331 | static_AddExcept, |
331 | 332 | |
332 | -// #if !defined(_WIN32) | |
333 | -// static_AddOutput, | |
334 | -// #endif | |
335 | - | |
336 | 333 | #ifdef G_THREADS_ENABLED |
337 | 334 | static_CallAndWait, |
338 | 335 | #else | ... | ... |