Commit 54b2a73cfefec5ecc4bdad2cae88177c58ee8ab9

Authored by Perry Werneck
1 parent 1ae1823a

Removing warning on non-ssl code

Fixing multi-thread issues
Removing unused code
src/lib3270/iocalls.c
@@ -48,7 +48,6 @@ @@ -48,7 +48,6 @@
48 #include <fcntl.h> 48 #include <fcntl.h>
49 #endif 49 #endif
50 50
51 -  
52 #define MILLION 1000000L 51 #define MILLION 1000000L
53 // 52 //
54 //#if defined(_WIN32) 53 //#if defined(_WIN32)
@@ -444,6 +443,9 @@ LIB3270_EXPORT int lib3270_register_io_controller(const LIB3270_IO_CONTROLLER *c @@ -444,6 +443,9 @@ LIB3270_EXPORT int lib3270_register_io_controller(const LIB3270_IO_CONTROLLER *c
444 if(cbk->ring_bell) 443 if(cbk->ring_bell)
445 ring_bell = cbk->ring_bell; 444 ring_bell = cbk->ring_bell;
446 445
  446 + if(cbk->run_task)
  447 + run_task = cbk->run_task;
  448 +
447 return 0; 449 return 0;
448 450
449 } 451 }
src/lib3270/properties.c
@@ -292,6 +292,8 @@ @@ -292,6 +292,8 @@
292 return lib3270_get_revision(); 292 return lib3270_get_revision();
293 } 293 }
294 294
  295 + #pragma GCC diagnostic push
  296 + #pragma GCC diagnostic ignored "-Wunused-parameter"
295 const char * lib3270_get_crl_url(H3270 *hSession) 297 const char * lib3270_get_crl_url(H3270 *hSession)
296 { 298 {
297 #ifdef SSL_ENABLE_CRL_CHECK 299 #ifdef SSL_ENABLE_CRL_CHECK
@@ -309,7 +311,10 @@ @@ -309,7 +311,10 @@
309 return ""; 311 return "";
310 #endif 312 #endif
311 } 313 }
  314 + #pragma GCC diagnostic pop
312 315
  316 + #pragma GCC diagnostic push
  317 + #pragma GCC diagnostic ignored "-Wunused-parameter"
313 int lib3270_set_crl_url(H3270 *hSession, const char *crl) 318 int lib3270_set_crl_url(H3270 *hSession, const char *crl)
314 { 319 {
315 320
@@ -337,6 +342,7 @@ @@ -337,6 +342,7 @@
337 #endif // SSL_ENABLE_CRL_CHECK 342 #endif // SSL_ENABLE_CRL_CHECK
338 343
339 } 344 }
  345 + #pragma GCC diagnostic pop
340 346
341 LIB3270_EXPORT const LIB3270_STRING_PROPERTY * lib3270_get_string_properties_list(void) 347 LIB3270_EXPORT const LIB3270_STRING_PROPERTY * lib3270_get_string_properties_list(void)
342 { 348 {
src/lib3270/telnet.c
@@ -361,387 +361,6 @@ void popup_a_sockerr(H3270 *hSession, char *fmt, ...) @@ -361,387 +361,6 @@ void popup_a_sockerr(H3270 *hSession, char *fmt, ...)
361 361
362 } 362 }
363 363
364 -/*  
365 -#pragma pack(1)  
366 -struct connect_parm  
367 -{  
368 - unsigned short sz;  
369 - int sockfd;  
370 - const struct sockaddr * addr;  
371 - socklen_t addrlen;  
372 - int err;  
373 -};  
374 -#pragma pack()  
375 -*/  
376 -  
377 -/*  
378 -static int do_connect_sock(H3270 *h, struct connect_parm *p)  
379 -{  
380 -#ifdef WIN32  
381 -  
382 - if(connect(p->sockfd, p->addr, p->addrlen) == -1)  
383 - p->err = socket_errno();  
384 - else  
385 - p->err = 0;  
386 -  
387 -#else  
388 -  
389 - // Linux, use 120 seconds timeout  
390 - fcntl(p->sockfd, F_SETFL,fcntl(p->sockfd,F_GETFL,0)|O_NONBLOCK);  
391 -  
392 - errno = 0;  
393 - if(connect(p->sockfd, p->addr, p->addrlen))  
394 - {  
395 - if( errno != EINPROGRESS )  
396 - {  
397 - p->err = errno;  
398 - lib3270_write_log(h,"lib3270","Error %s on connect",strerror(errno));  
399 - }  
400 - else  
401 - {  
402 - // Connection in progress, wait  
403 - fd_set wr;  
404 - struct timeval tm;  
405 - int err;  
406 - socklen_t len = sizeof(err);  
407 -  
408 - FD_ZERO(&wr);  
409 - FD_SET(p->sockfd, &wr);  
410 - memset(&tm,0,sizeof(tm));  
411 -  
412 - tm.tv_sec = 120; // 2 minutes timeout  
413 -  
414 - switch(select(p->sockfd+1, NULL, &wr, NULL, &tm))  
415 - {  
416 - case 0:  
417 - lib3270_write_log(h,"lib3270","Connect timeout");  
418 - p->err = ETIMEDOUT;  
419 - break;  
420 -  
421 - case -1:  
422 - lib3270_write_log(h,"lib3270","Select error \"%s while connecting",strerror(errno));  
423 - p->err = errno;  
424 - break;  
425 -  
426 - default:  
427 -  
428 - // Se o socket nao esta disponivel para gravacao o connect falhou  
429 - if(!FD_ISSET(p->sockfd,&wr))  
430 - {  
431 - lib3270_write_log(h,"lib3270","Unexpected connection failure, the socket wasn't ready to write");  
432 - p->err = ENOTCONN;  
433 - }  
434 - else if(getsockopt(p->sockfd, SOL_SOCKET, SO_ERROR, &err, &len) < 0)  
435 - {  
436 - lib3270_write_log(h,"lib3270","Connect error. Error \"%s\" when getting socket state",strerror(errno));  
437 - p->err = ENOTCONN;  
438 - }  
439 - else if(err)  
440 - {  
441 - lib3270_write_log(h,"lib3270","Connection error \"%s\"",strerror(err));  
442 - p->err = err;  
443 - }  
444 - else  
445 - {  
446 - lib3270_write_log(h,"lib3270","Connected to host");  
447 - p->err = 0;  
448 - }  
449 - }  
450 - }  
451 - }  
452 -  
453 - fcntl(p->sockfd, F_SETFL,fcntl(p->sockfd,F_GETFL,0)&(~O_NONBLOCK));  
454 -#endif // WIN32  
455 -  
456 - return 0;  
457 -}  
458 -*/  
459 -  
460 -/*  
461 -static int connect_sock(H3270 *hSession, int sockfd, const struct sockaddr *addr, socklen_t addrlen)  
462 -{  
463 - struct connect_parm p = { sizeof(struct connect_parm), sockfd, addr, addrlen, -1 };  
464 -  
465 - trace("%s: Connect begin sock=%d",__FUNCTION__,p.sockfd);  
466 - lib3270_call_thread((int (*)(H3270 *, void *)) do_connect_sock,hSession,&p);  
467 - trace("%s: Connect ends, rc=%d",__FUNCTION__,p.err);  
468 -  
469 - return p.err;  
470 -}  
471 -*/  
472 -  
473 -/**  
474 - * Establish a telnet socket to the given host passed as an argument.  
475 - *  
476 - * Called only once and is responsible for setting up the telnet  
477 - * variables.  
478 - *  
479 - * @param session Handle to the session descriptor.  
480 - *  
481 - * @return 0 if ok, non zero if failed  
482 - */ /*  
483 -int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Boolean *resolving, Boolean *pending)  
484 -{  
485 -// struct servent * sp;  
486 -// struct hostent * hp;  
487 -  
488 -#if defined(X3270_ANSI)  
489 - static int t_valid = 0;  
490 -#endif // X3270_ANSI  
491 -  
492 - char passthru_haddr[8];  
493 - int passthru_len = 0;  
494 - unsigned short passthru_port = 0;  
495 - int on = 1;  
496 - int optval;  
497 - char errmsg[1024];  
498 - int rc;  
499 -#if defined(OMTU)  
500 - int mtu = OMTU;  
501 -#endif  
502 -  
503 -#define close_fail { (void) SOCK_CLOSE(session->sock); session->sock = -1; return -1; }  
504 -  
505 - set_ssl_state(session,LIB3270_SSL_UNSECURE);  
506 -  
507 -#if defined(_WIN32)  
508 - sockstart(session);  
509 -#endif  
510 -  
511 -// if (session->netrbuf == (unsigned char *)NULL)  
512 -// session->netrbuf = (unsigned char *)lib3270_malloc(BUFSZ);  
513 -  
514 -#if defined(X3270_ANSI)  
515 - if (!t_valid)  
516 - {  
517 - vintr = parse_ctlchar("^C");  
518 - vquit = parse_ctlchar("^\\");  
519 - verase = parse_ctlchar("^H");  
520 - vkill = parse_ctlchar("^U");  
521 - veof = parse_ctlchar("^D");  
522 - vwerase = parse_ctlchar("^W");  
523 - vrprnt = parse_ctlchar("^R");  
524 - vlnext = parse_ctlchar("^V");  
525 -  
526 - t_valid = 1;  
527 - }  
528 -#endif  
529 -  
530 - *resolving = False;  
531 - *pending = False;  
532 -  
533 -// Replace(session->hostname, NewString(host));  
534 -  
535 - // get the passthru host and port number  
536 - if (session->passthru_host)  
537 - {  
538 -#if defined(HAVE_GETADDRINFO)  
539 -  
540 - popup_an_error(session,"%s",_( "Unsupported passthru host session" ) );  
541 -  
542 -#else  
543 - struct hostent * hp = NULL;  
544 - struct servent * sp = NULL;  
545 - const char * hn = CN;  
546 -  
547 - hn = getenv("INTERNET_HOST");  
548 -  
549 - if (hn == CN)  
550 - hn = "internet-gateway";  
551 -  
552 - hp = gethostbyname(hn);  
553 - if (hp == (struct hostent *) 0)  
554 - {  
555 - popup_an_error(session,_( "Unknown passthru host: %s" ), hn);  
556 - return -1;  
557 - }  
558 - memmove(passthru_haddr, hp->h_addr, hp->h_length);  
559 - passthru_len = hp->h_length;  
560 -  
561 - sp = getservbyname("telnet-passthru","tcp");  
562 - if (sp != (struct servent *)NULL)  
563 - passthru_port = sp->s_port;  
564 - else  
565 - passthru_port = htons(3514);  
566 -  
567 -#endif // HAVE_GETADDRINFO  
568 - }  
569 - else if(session->proxy != CN && !session->proxy_type)  
570 - {  
571 - session->proxy_type = proxy_setup(session, &session->proxy_host, &session->proxy_portname);  
572 -  
573 - if (session->proxy_type > 0)  
574 - {  
575 - unsigned long lport;  
576 - char *ptr;  
577 - struct servent *sp;  
578 -  
579 - lport = strtoul(portname, &ptr, 0);  
580 - if (ptr == portname || *ptr != '\0' || lport == 0L || lport & ~0xffff)  
581 - {  
582 - if (!(sp = getservbyname(portname, "tcp")))  
583 - {  
584 - popup_an_error(session, _( "Unknown port number or service: %s" ), portname);  
585 - return -1;  
586 - }  
587 - session->current_port = ntohs(sp->s_port);  
588 - }  
589 - else  
590 - {  
591 - session->current_port = (unsigned short)lport;  
592 - }  
593 - }  
594 -  
595 - if (session->proxy_type < 0)  
596 - return -1;  
597 - }  
598 -  
599 - // fill in the socket address of the given host  
600 - (void) memset((char *) &haddr, 0, sizeof(haddr));  
601 - if (session->passthru_host)  
602 - {  
603 - haddr.sin.sin_family = AF_INET;  
604 - (void) memmove(&haddr.sin.sin_addr, passthru_haddr,passthru_len);  
605 - haddr.sin.sin_port = passthru_port;  
606 - ha_len = sizeof(struct sockaddr_in);  
607 - }  
608 - else if (session->proxy_type > 0)  
609 - {  
610 - if (resolve_host_and_port(session,session->proxy_host, session->proxy_portname,&session->proxy_port, &haddr.sa, &ha_len, errmsg,sizeof(errmsg)) < 0)  
611 - {  
612 - popup_an_error(session,"%s",errmsg);  
613 - return -1;  
614 - }  
615 - }  
616 - else  
617 - {  
618 - if (resolve_host_and_port(session,host, portname,&session->current_port, &haddr.sa, &ha_len,errmsg, sizeof(errmsg)) < 0)  
619 - {  
620 - popup_an_error(session,"%s",errmsg);  
621 - return -1;  
622 - }  
623 - }  
624 -  
625 - // create the socket  
626 - if((session->sock = socket(haddr.sa.sa_family, SOCK_STREAM, 0)) == -1)  
627 - {  
628 - popup_a_sockerr(session, N_( "socket" ) );  
629 - return -1;  
630 - }  
631 -  
632 - // set options for inline out-of-band data and keepalives  
633 - if (setsockopt(session->sock, SOL_SOCKET, SO_OOBINLINE, (char *)&on,sizeof(on)) < 0)  
634 - {  
635 - popup_a_sockerr(session, N_( "setsockopt(%s)" ), "SO_OOBINLINE");  
636 - close_fail;  
637 - }  
638 -  
639 -#if defined(OMTU)  
640 - if (setsockopt(session->sock, SOL_SOCKET, SO_SNDBUF, (char *)&mtu,sizeof(mtu)) < 0)  
641 - {  
642 - popup_a_sockerr(session, N_( "setsockopt(%s)" ), "SO_SNDBUF");  
643 - close_fail;  
644 - }  
645 -#endif  
646 -  
647 - // set the socket to be non-delaying during connect  
648 - if(non_blocking(session,False) < 0)  
649 - close_fail;  
650 -  
651 -#if !defined(_WIN32)  
652 - // don't share the socket with our children  
653 - (void) fcntl(session->sock, F_SETFD, 1);  
654 -#endif  
655 -  
656 - // init ssl  
657 -#if defined(HAVE_LIBSSL)  
658 - if (session->ssl_host)  
659 - ssl_init(session);  
660 -#endif  
661 -  
662 - // connect  
663 - status_connecting(session,1);  
664 - rc = connect_sock(session, session->sock, &haddr.sa,ha_len);  
665 -  
666 - if(!rc)  
667 - {  
668 - trace_dsn(session,"Connected.\n");  
669 -  
670 - optval = lib3270_get_toggle(session,LIB3270_TOGGLE_KEEP_ALIVE) ? 1 : 0;  
671 -  
672 - if (setsockopt(session->sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&optval, sizeof(optval)) < 0)  
673 - {  
674 - popup_a_sockerr(session, N_( "Can't %s network keep-alive" ), optval ? _( "enable" ) : _( "disable" ));  
675 - close_fail;  
676 - }  
677 - else  
678 - {  
679 - trace_dsn(session,"Network keep-alive is %s\n",optval ? "enabled" : "disabled" );  
680 - }  
681 -  
682 - if(net_connected(session))  
683 - return -1;  
684 -  
685 - }  
686 - else  
687 - {  
688 - char *msg = xs_buffer( _( "Can't connect to %s" ), session->host.current);  
689 -  
690 - lib3270_popup_dialog( session,  
691 - LIB3270_NOTIFY_ERROR,  
692 - _( "Network error" ),  
693 - msg,  
694 - "%s",strerror(rc) );  
695 -  
696 - lib3270_free(msg);  
697 - close_fail;  
698 -  
699 - }  
700 -  
701 - snprintf(session->full_model_name,LIB3270_FULL_MODEL_NAME_LENGTH,"IBM-327%c-%d",session->m3279 ? '9' : '8', session->model_num);  
702 -  
703 -  
704 - // all done  
705 -#if defined(_WIN32)  
706 - if(session->sockEvent == NULL)  
707 - {  
708 - char ename[256];  
709 -  
710 - snprintf(ename, 255, "%s-%d", PACKAGE_NAME, getpid());  
711 -  
712 - session->sockEvent = CreateEvent(NULL, TRUE, FALSE, ename);  
713 - if(session->sockEvent == NULL)  
714 - {  
715 - lib3270_popup_dialog( session,  
716 - LIB3270_NOTIFY_CRITICAL,  
717 - N_( "Network startup error" ),  
718 - N_( "Cannot create socket handle" ),  
719 - "%s", lib3270_win32_strerror(GetLastError()) );  
720 - _exit(1);  
721 - }  
722 - }  
723 -  
724 - if (WSAEventSelect(session->sock, session->sockEvent, FD_READ | FD_CONNECT | FD_CLOSE) != 0)  
725 - {  
726 - lib3270_popup_dialog( session,  
727 - LIB3270_NOTIFY_CRITICAL,  
728 - N_( "Network startup error" ),  
729 - N_( "WSAEventSelect failed" ),  
730 - "%s", lib3270_win32_strerror(GetLastError()) );  
731 - _exit(1);  
732 - }  
733 -  
734 -// trace("Socket: %d Event: %ld",session->sock,(unsigned long) session->sockEvent);  
735 -  
736 -#endif // WIN32  
737 -  
738 - non_blocking(session,1);  
739 -  
740 - return 0;  
741 -}  
742 -#undef close_fail  
743 -*/  
744 -  
745 /* Set up the LU list. */ 364 /* Set up the LU list. */
746 static void setup_lus(H3270 *hSession) 365 static void setup_lus(H3270 *hSession)
747 { 366 {
@@ -884,7 +503,7 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession) @@ -884,7 +503,7 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession)
884 } 503 }
885 504
886 /** 505 /**
887 - * Connection_complete. 506 + * @brief Connection_complete.
888 * 507 *
889 * The connection appears to be complete (output is possible or input 508 * The connection appears to be complete (output is possible or input
890 * appeared ready but recv() returned EWOULDBLOCK). Complete the 509 * 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 @@ -989,7 +608,7 @@ LIB3270_EXPORT void lib3270_data_recv(H3270 *hSession, size_t nr, const unsigned
989 } 608 }
990 609
991 /** 610 /**
992 - * net_input. 611 + * @brief Called by the toolkit whenever there is input available on the socket.
993 * 612 *
994 * Called by the toolkit whenever there is input available on the 613 * Called by the toolkit whenever there is input available on the
995 * socket. Reads the data, processes the special telnet commands 614 * socket. Reads the data, processes the special telnet commands