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 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  
... ...