diff --git a/src/include/lib3270.h b/src/include/lib3270.h index 380216f..68cf44e 100644 --- a/src/include/lib3270.h +++ b/src/include/lib3270.h @@ -1133,7 +1133,6 @@ LIB3270_EXPORT LIB3270_POINTER lib3270_get_pointer(H3270 *hSession, int baddr); - /** * The host is TSO? * diff --git a/src/include/lib3270/session.h b/src/include/lib3270/session.h index e02f5c3..1798beb 100644 --- a/src/include/lib3270/session.h +++ b/src/include/lib3270/session.h @@ -31,6 +31,7 @@ #define LIB3270_SESSION_H_INCLUDED 1 + #include #include struct lib3270_session_callbacks @@ -78,6 +79,8 @@ */ int LIB3270_EXPORT lib3270_set_session_callbacks(const struct lib3270_callbacks *cbk); + 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); diff --git a/src/lib3270/util.c b/src/lib3270/util.c index 2acdfb0..b93dd29 100644 --- a/src/lib3270/util.c +++ b/src/lib3270/util.c @@ -75,11 +75,12 @@ #include "utilc.h" #include "popupsc.h" #include "api.h" + +#include #include #define my_isspace(c) isspace((unsigned char)c) - #if defined(_WIN32) int is_nt = 1; @@ -1048,3 +1049,32 @@ int gettimeofday(struct timeval *tv, void *ignored) return hSession->pointer; } + + LIB3270_EXPORT int lib3270_getpeername(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen) + { + CHECK_SESSION_HANDLE(hSession); + + memset(addr,0,*addrlen); + + if(hSession->sock < 0) { + errno = ENOTCONN; + return -1; + } + + return getpeername(hSession->sock, addr, addrlen); + + } + + LIB3270_EXPORT int lib3270_getsockname(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen) + { + CHECK_SESSION_HANDLE(hSession); + + memset(addr,0,*addrlen); + + if(hSession->sock < 0) { + errno = ENOTCONN; + return -1; + } + + return getsockname(hSession->sock, addr, addrlen); + } -- libgit2 0.21.2