Commit 2ec23314a30431f5df07f27032dab975ef9733b2
1 parent
e77aae75
Exists in
master
and in
3 other branches
Improving revision test.
Showing
2 changed files
with
22 additions
and
4 deletions
Show diff stats
src/core/session.c
| ... | ... | @@ -558,14 +558,22 @@ LIB3270_EXPORT char lib3270_get_session_id(H3270 *hSession) |
| 558 | 558 | return hSession->id; |
| 559 | 559 | } |
| 560 | 560 | |
| 561 | -struct lib3270_session_callbacks * lib3270_get_session_callbacks(H3270 *session, unsigned short sz) | |
| 561 | +struct lib3270_session_callbacks * lib3270_get_session_callbacks(H3270 *hSession, const char *revision, unsigned short sz) | |
| 562 | 562 | { |
| 563 | - CHECK_SESSION_HANDLE(session); | |
| 563 | + if(revision && strcasecmp(revision,"20200803") < 0) | |
| 564 | + { | |
| 565 | + debug("%s: Revision test was %d",__FUNCTION__,strcasecmp(revision,"20200803")); | |
| 566 | + errno = EINVAL; | |
| 567 | + return NULL; | |
| 568 | + } | |
| 564 | 569 | |
| 565 | 570 | if(sz != sizeof(struct lib3270_session_callbacks)) |
| 571 | + { | |
| 572 | + errno = EINVAL; | |
| 566 | 573 | return NULL; |
| 574 | + } | |
| 567 | 575 | |
| 568 | - return &session->cbk; | |
| 576 | + return &hSession->cbk; | |
| 569 | 577 | } |
| 570 | 578 | |
| 571 | 579 | ... | ... |
src/include/lib3270/session.h
| ... | ... | @@ -104,7 +104,17 @@ |
| 104 | 104 | LIB3270_EXPORT int lib3270_getpeername(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); |
| 105 | 105 | LIB3270_EXPORT int lib3270_getsockname(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); |
| 106 | 106 | |
| 107 | - LIB3270_EXPORT struct lib3270_session_callbacks * lib3270_get_session_callbacks(H3270 *session, unsigned short sz); | |
| 107 | + /** | |
| 108 | + * @brief Get lib3270 callback table. | |
| 109 | + * | |
| 110 | + * @param hSession TN3270 Session. | |
| 111 | + . @param revision Expected lib3270 revision. | |
| 112 | + * @param sz Expected lib3270_session_callbacks struct length. | |
| 113 | + * | |
| 114 | + * @return Callback table if ok, NULL if failed. | |
| 115 | + * | |
| 116 | + */ | |
| 117 | + LIB3270_EXPORT struct lib3270_session_callbacks * lib3270_get_session_callbacks(H3270 *hSession, const char *revision, unsigned short sz); | |
| 108 | 118 | |
| 109 | 119 | #endif // LIB3270_SESSION_H_INCLUDED |
| 110 | 120 | ... | ... |