Commit 2ec23314a30431f5df07f27032dab975ef9733b2

Authored by Perry Werneck
1 parent e77aae75

Improving revision test.

src/core/session.c
@@ -558,14 +558,22 @@ LIB3270_EXPORT char lib3270_get_session_id(H3270 *hSession) @@ -558,14 +558,22 @@ LIB3270_EXPORT char lib3270_get_session_id(H3270 *hSession)
558 return hSession->id; 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 if(sz != sizeof(struct lib3270_session_callbacks)) 570 if(sz != sizeof(struct lib3270_session_callbacks))
  571 + {
  572 + errno = EINVAL;
566 return NULL; 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,7 +104,17 @@
104 LIB3270_EXPORT int lib3270_getpeername(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); 104 LIB3270_EXPORT int lib3270_getpeername(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen);
105 LIB3270_EXPORT int lib3270_getsockname(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); 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 #endif // LIB3270_SESSION_H_INCLUDED 119 #endif // LIB3270_SESSION_H_INCLUDED
110 120