From 54b2a73cfefec5ecc4bdad2cae88177c58ee8ab9 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Fri, 18 Jan 2019 06:14:41 -0200 Subject: [PATCH] Removing warning on non-ssl code Fixing multi-thread issues Removing unused code --- src/lib3270/iocalls.c | 4 +++- src/lib3270/properties.c | 6 ++++++ src/lib3270/telnet.c | 385 ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3 files changed, 11 insertions(+), 384 deletions(-) diff --git a/src/lib3270/iocalls.c b/src/lib3270/iocalls.c index 389cbaf..a132a70 100644 --- a/src/lib3270/iocalls.c +++ b/src/lib3270/iocalls.c @@ -48,7 +48,6 @@ #include #endif - #define MILLION 1000000L // //#if defined(_WIN32) @@ -444,6 +443,9 @@ LIB3270_EXPORT int lib3270_register_io_controller(const LIB3270_IO_CONTROLLER *c if(cbk->ring_bell) ring_bell = cbk->ring_bell; + if(cbk->run_task) + run_task = cbk->run_task; + return 0; } diff --git a/src/lib3270/properties.c b/src/lib3270/properties.c index b9c4a2b..4b42664 100644 --- a/src/lib3270/properties.c +++ b/src/lib3270/properties.c @@ -292,6 +292,8 @@ return lib3270_get_revision(); } + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wunused-parameter" const char * lib3270_get_crl_url(H3270 *hSession) { #ifdef SSL_ENABLE_CRL_CHECK @@ -309,7 +311,10 @@ return ""; #endif } + #pragma GCC diagnostic pop + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wunused-parameter" int lib3270_set_crl_url(H3270 *hSession, const char *crl) { @@ -337,6 +342,7 @@ #endif // SSL_ENABLE_CRL_CHECK } + #pragma GCC diagnostic pop LIB3270_EXPORT const LIB3270_STRING_PROPERTY * lib3270_get_string_properties_list(void) { diff --git a/src/lib3270/telnet.c b/src/lib3270/telnet.c index 37fafe6..2301cde 100644 --- a/src/lib3270/telnet.c +++ b/src/lib3270/telnet.c @@ -361,387 +361,6 @@ void popup_a_sockerr(H3270 *hSession, char *fmt, ...) } -/* -#pragma pack(1) -struct connect_parm -{ - unsigned short sz; - int sockfd; - const struct sockaddr * addr; - socklen_t addrlen; - int err; -}; -#pragma pack() -*/ - -/* -static int do_connect_sock(H3270 *h, struct connect_parm *p) -{ -#ifdef WIN32 - - if(connect(p->sockfd, p->addr, p->addrlen) == -1) - p->err = socket_errno(); - else - p->err = 0; - -#else - - // Linux, use 120 seconds timeout - fcntl(p->sockfd, F_SETFL,fcntl(p->sockfd,F_GETFL,0)|O_NONBLOCK); - - errno = 0; - if(connect(p->sockfd, p->addr, p->addrlen)) - { - if( errno != EINPROGRESS ) - { - p->err = errno; - lib3270_write_log(h,"lib3270","Error %s on connect",strerror(errno)); - } - else - { - // Connection in progress, wait - fd_set wr; - struct timeval tm; - int err; - socklen_t len = sizeof(err); - - FD_ZERO(&wr); - FD_SET(p->sockfd, &wr); - memset(&tm,0,sizeof(tm)); - - tm.tv_sec = 120; // 2 minutes timeout - - switch(select(p->sockfd+1, NULL, &wr, NULL, &tm)) - { - case 0: - lib3270_write_log(h,"lib3270","Connect timeout"); - p->err = ETIMEDOUT; - break; - - case -1: - lib3270_write_log(h,"lib3270","Select error \"%s while connecting",strerror(errno)); - p->err = errno; - break; - - default: - - // Se o socket nao esta disponivel para gravacao o connect falhou - if(!FD_ISSET(p->sockfd,&wr)) - { - lib3270_write_log(h,"lib3270","Unexpected connection failure, the socket wasn't ready to write"); - p->err = ENOTCONN; - } - else if(getsockopt(p->sockfd, SOL_SOCKET, SO_ERROR, &err, &len) < 0) - { - lib3270_write_log(h,"lib3270","Connect error. Error \"%s\" when getting socket state",strerror(errno)); - p->err = ENOTCONN; - } - else if(err) - { - lib3270_write_log(h,"lib3270","Connection error \"%s\"",strerror(err)); - p->err = err; - } - else - { - lib3270_write_log(h,"lib3270","Connected to host"); - p->err = 0; - } - } - } - } - - fcntl(p->sockfd, F_SETFL,fcntl(p->sockfd,F_GETFL,0)&(~O_NONBLOCK)); -#endif // WIN32 - - return 0; -} -*/ - -/* -static int connect_sock(H3270 *hSession, int sockfd, const struct sockaddr *addr, socklen_t addrlen) -{ - struct connect_parm p = { sizeof(struct connect_parm), sockfd, addr, addrlen, -1 }; - - trace("%s: Connect begin sock=%d",__FUNCTION__,p.sockfd); - lib3270_call_thread((int (*)(H3270 *, void *)) do_connect_sock,hSession,&p); - trace("%s: Connect ends, rc=%d",__FUNCTION__,p.err); - - return p.err; -} -*/ - -/** - * Establish a telnet socket to the given host passed as an argument. - * - * Called only once and is responsible for setting up the telnet - * variables. - * - * @param session Handle to the session descriptor. - * - * @return 0 if ok, non zero if failed - */ /* -int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Boolean *resolving, Boolean *pending) -{ -// struct servent * sp; -// struct hostent * hp; - -#if defined(X3270_ANSI) - static int t_valid = 0; -#endif // X3270_ANSI - - char passthru_haddr[8]; - int passthru_len = 0; - unsigned short passthru_port = 0; - int on = 1; - int optval; - char errmsg[1024]; - int rc; -#if defined(OMTU) - int mtu = OMTU; -#endif - -#define close_fail { (void) SOCK_CLOSE(session->sock); session->sock = -1; return -1; } - - set_ssl_state(session,LIB3270_SSL_UNSECURE); - -#if defined(_WIN32) - sockstart(session); -#endif - -// if (session->netrbuf == (unsigned char *)NULL) -// session->netrbuf = (unsigned char *)lib3270_malloc(BUFSZ); - -#if defined(X3270_ANSI) - if (!t_valid) - { - vintr = parse_ctlchar("^C"); - vquit = parse_ctlchar("^\\"); - verase = parse_ctlchar("^H"); - vkill = parse_ctlchar("^U"); - veof = parse_ctlchar("^D"); - vwerase = parse_ctlchar("^W"); - vrprnt = parse_ctlchar("^R"); - vlnext = parse_ctlchar("^V"); - - t_valid = 1; - } -#endif - - *resolving = False; - *pending = False; - -// Replace(session->hostname, NewString(host)); - - // get the passthru host and port number - if (session->passthru_host) - { -#if defined(HAVE_GETADDRINFO) - - popup_an_error(session,"%s",_( "Unsupported passthru host session" ) ); - -#else - struct hostent * hp = NULL; - struct servent * sp = NULL; - const char * hn = CN; - - hn = getenv("INTERNET_HOST"); - - if (hn == CN) - hn = "internet-gateway"; - - hp = gethostbyname(hn); - if (hp == (struct hostent *) 0) - { - popup_an_error(session,_( "Unknown passthru host: %s" ), hn); - return -1; - } - memmove(passthru_haddr, hp->h_addr, hp->h_length); - passthru_len = hp->h_length; - - sp = getservbyname("telnet-passthru","tcp"); - if (sp != (struct servent *)NULL) - passthru_port = sp->s_port; - else - passthru_port = htons(3514); - -#endif // HAVE_GETADDRINFO - } - else if(session->proxy != CN && !session->proxy_type) - { - session->proxy_type = proxy_setup(session, &session->proxy_host, &session->proxy_portname); - - if (session->proxy_type > 0) - { - unsigned long lport; - char *ptr; - struct servent *sp; - - lport = strtoul(portname, &ptr, 0); - if (ptr == portname || *ptr != '\0' || lport == 0L || lport & ~0xffff) - { - if (!(sp = getservbyname(portname, "tcp"))) - { - popup_an_error(session, _( "Unknown port number or service: %s" ), portname); - return -1; - } - session->current_port = ntohs(sp->s_port); - } - else - { - session->current_port = (unsigned short)lport; - } - } - - if (session->proxy_type < 0) - return -1; - } - - // fill in the socket address of the given host - (void) memset((char *) &haddr, 0, sizeof(haddr)); - if (session->passthru_host) - { - haddr.sin.sin_family = AF_INET; - (void) memmove(&haddr.sin.sin_addr, passthru_haddr,passthru_len); - haddr.sin.sin_port = passthru_port; - ha_len = sizeof(struct sockaddr_in); - } - else if (session->proxy_type > 0) - { - if (resolve_host_and_port(session,session->proxy_host, session->proxy_portname,&session->proxy_port, &haddr.sa, &ha_len, errmsg,sizeof(errmsg)) < 0) - { - popup_an_error(session,"%s",errmsg); - return -1; - } - } - else - { - if (resolve_host_and_port(session,host, portname,&session->current_port, &haddr.sa, &ha_len,errmsg, sizeof(errmsg)) < 0) - { - popup_an_error(session,"%s",errmsg); - return -1; - } - } - - // create the socket - if((session->sock = socket(haddr.sa.sa_family, SOCK_STREAM, 0)) == -1) - { - popup_a_sockerr(session, N_( "socket" ) ); - return -1; - } - - // set options for inline out-of-band data and keepalives - if (setsockopt(session->sock, SOL_SOCKET, SO_OOBINLINE, (char *)&on,sizeof(on)) < 0) - { - popup_a_sockerr(session, N_( "setsockopt(%s)" ), "SO_OOBINLINE"); - close_fail; - } - -#if defined(OMTU) - if (setsockopt(session->sock, SOL_SOCKET, SO_SNDBUF, (char *)&mtu,sizeof(mtu)) < 0) - { - popup_a_sockerr(session, N_( "setsockopt(%s)" ), "SO_SNDBUF"); - close_fail; - } -#endif - - // set the socket to be non-delaying during connect - if(non_blocking(session,False) < 0) - close_fail; - -#if !defined(_WIN32) - // don't share the socket with our children - (void) fcntl(session->sock, F_SETFD, 1); -#endif - - // init ssl -#if defined(HAVE_LIBSSL) - if (session->ssl_host) - ssl_init(session); -#endif - - // connect - status_connecting(session,1); - rc = connect_sock(session, session->sock, &haddr.sa,ha_len); - - if(!rc) - { - trace_dsn(session,"Connected.\n"); - - optval = lib3270_get_toggle(session,LIB3270_TOGGLE_KEEP_ALIVE) ? 1 : 0; - - if (setsockopt(session->sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&optval, sizeof(optval)) < 0) - { - popup_a_sockerr(session, N_( "Can't %s network keep-alive" ), optval ? _( "enable" ) : _( "disable" )); - close_fail; - } - else - { - trace_dsn(session,"Network keep-alive is %s\n",optval ? "enabled" : "disabled" ); - } - - if(net_connected(session)) - return -1; - - } - else - { - char *msg = xs_buffer( _( "Can't connect to %s" ), session->host.current); - - lib3270_popup_dialog( session, - LIB3270_NOTIFY_ERROR, - _( "Network error" ), - msg, - "%s",strerror(rc) ); - - lib3270_free(msg); - close_fail; - - } - - snprintf(session->full_model_name,LIB3270_FULL_MODEL_NAME_LENGTH,"IBM-327%c-%d",session->m3279 ? '9' : '8', session->model_num); - - - // all done -#if defined(_WIN32) - if(session->sockEvent == NULL) - { - char ename[256]; - - snprintf(ename, 255, "%s-%d", PACKAGE_NAME, getpid()); - - session->sockEvent = CreateEvent(NULL, TRUE, FALSE, ename); - if(session->sockEvent == NULL) - { - lib3270_popup_dialog( session, - LIB3270_NOTIFY_CRITICAL, - N_( "Network startup error" ), - N_( "Cannot create socket handle" ), - "%s", lib3270_win32_strerror(GetLastError()) ); - _exit(1); - } - } - - if (WSAEventSelect(session->sock, session->sockEvent, FD_READ | FD_CONNECT | FD_CLOSE) != 0) - { - lib3270_popup_dialog( session, - LIB3270_NOTIFY_CRITICAL, - N_( "Network startup error" ), - N_( "WSAEventSelect failed" ), - "%s", lib3270_win32_strerror(GetLastError()) ); - _exit(1); - } - -// trace("Socket: %d Event: %ld",session->sock,(unsigned long) session->sockEvent); - -#endif // WIN32 - - non_blocking(session,1); - - return 0; -} -#undef close_fail -*/ - /* Set up the LU list. */ static void setup_lus(H3270 *hSession) { @@ -884,7 +503,7 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession) } /** - * Connection_complete. + * @brief Connection_complete. * * The connection appears to be complete (output is possible or input * appeared ready but recv() returned EWOULDBLOCK). Complete the @@ -989,7 +608,7 @@ LIB3270_EXPORT void lib3270_data_recv(H3270 *hSession, size_t nr, const unsigned } /** - * net_input. + * @brief Called by the toolkit whenever there is input available on the socket. * * Called by the toolkit whenever there is input available on the * socket. Reads the data, processes the special telnet commands -- libgit2 0.21.2