From 2ec23314a30431f5df07f27032dab975ef9733b2 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Mon, 3 Aug 2020 14:40:43 -0300 Subject: [PATCH] Improving revision test. --- src/core/session.c | 14 +++++++++++--- src/include/lib3270/session.h | 12 +++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/core/session.c b/src/core/session.c index 16f5bbc..859ec16 100644 --- a/src/core/session.c +++ b/src/core/session.c @@ -558,14 +558,22 @@ LIB3270_EXPORT char lib3270_get_session_id(H3270 *hSession) return hSession->id; } -struct lib3270_session_callbacks * lib3270_get_session_callbacks(H3270 *session, unsigned short sz) +struct lib3270_session_callbacks * lib3270_get_session_callbacks(H3270 *hSession, const char *revision, unsigned short sz) { - CHECK_SESSION_HANDLE(session); + if(revision && strcasecmp(revision,"20200803") < 0) + { + debug("%s: Revision test was %d",__FUNCTION__,strcasecmp(revision,"20200803")); + errno = EINVAL; + return NULL; + } if(sz != sizeof(struct lib3270_session_callbacks)) + { + errno = EINVAL; return NULL; + } - return &session->cbk; + return &hSession->cbk; } diff --git a/src/include/lib3270/session.h b/src/include/lib3270/session.h index 3ff28af..c7c3ef6 100644 --- a/src/include/lib3270/session.h +++ b/src/include/lib3270/session.h @@ -104,7 +104,17 @@ LIB3270_EXPORT int lib3270_getpeername(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); LIB3270_EXPORT int lib3270_getsockname(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); - LIB3270_EXPORT struct lib3270_session_callbacks * lib3270_get_session_callbacks(H3270 *session, unsigned short sz); + /** + * @brief Get lib3270 callback table. + * + * @param hSession TN3270 Session. + . @param revision Expected lib3270 revision. + * @param sz Expected lib3270_session_callbacks struct length. + * + * @return Callback table if ok, NULL if failed. + * + */ + LIB3270_EXPORT struct lib3270_session_callbacks * lib3270_get_session_callbacks(H3270 *hSession, const char *revision, unsigned short sz); #endif // LIB3270_SESSION_H_INCLUDED -- libgit2 0.21.2