diff options
Diffstat (limited to 'sysutils/socket/files/patch-ae')
-rw-r--r-- | sysutils/socket/files/patch-ae | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/sysutils/socket/files/patch-ae b/sysutils/socket/files/patch-ae new file mode 100644 index 000000000000..fd723d216b80 --- /dev/null +++ b/sysutils/socket/files/patch-ae @@ -0,0 +1,327 @@ +*** socket.c.orig Fri Mar 22 11:42:23 2002 +--- socket.c Fri Mar 22 12:06:16 2002 +*************** +*** 9,14 **** +--- 9,17 ---- + + #include <sys/types.h> + #include <sys/socket.h> ++ #ifdef USE_INET6 ++ #include <sys/time.h> ++ #endif /* USE_INET6 */ + #include <netinet/in.h> + #include <netdb.h> + #include <errno.h> +*************** +*** 36,44 **** + char *progname ; /* name of the game */ + char *pipe_program = NULL ; /* program to execute in two-way pipe */ + + void server A((int port, char *service_name)) ; +- void handle_server_connection A((void)) ; + void client A((char *host, int port, char *service_name)) ; + extern void init_signals A((void)) ; + extern void do_io A((void)) ; + +--- 39,53 ---- + char *progname ; /* name of the game */ + char *pipe_program = NULL ; /* program to execute in two-way pipe */ + ++ #ifndef USE_INET6 + void server A((int port, char *service_name)) ; + void client A((char *host, int port, char *service_name)) ; ++ #else /* USE_INET6 */ ++ void server A((char *port)) ; ++ void client A((char *host, char *port)) ; ++ #endif /* USE_INET6 */ ++ ++ void handle_server_connection A((void)) ; + extern void init_signals A((void)) ; + extern void do_io A((void)) ; + +*************** +*** 51,58 **** +--- 60,69 ---- + int error = 0 ; /* usage error occurred */ + extern int optind ; /* from getopt() */ + /* char *host ; */ /* name of remote host */ ++ #ifndef USE_INET6 + int port ; /* port number for socket */ + char *service_name ; /* name of service for port */ ++ #endif /* USE_INET6 */ + + /* print version ID if requested */ + if (argv[1] && !strcmp(argv[1], "-version")) { +*************** +*** 62,68 **** + + /* set up progname for later use */ + progname = argv[0] ; +! if ((cp = strrchr(progname, '/'))) progname = cp + 1 ; + + /* parse options */ + while ((opt = getopt(argc, argv, "bcflp:qrsvw?")) != -1) { +--- 73,80 ---- + + /* set up progname for later use */ + progname = argv[0] ; +! cp = strrchr(progname, '/'); +! if (cp) progname = cp + 1 ; + + /* parse options */ + while ((opt = getopt(argc, argv, "bcflp:qrsvw?")) != -1) { +*************** +*** 130,135 **** +--- 142,148 ---- + /* set up signal handling */ + init_signals() ; + ++ #ifndef USE_INET6 + /* get port number */ + port = resolve_service(argv[optind + 1 - serverflag], + "tcp", &service_name) ; +*************** +*** 138,178 **** +--- 151,231 ---- + exit(5) ; + } + ++ #endif /* not USE_INET6 */ + /* and go */ + if (serverflag) { + if (backgflag) { + background() ; + } ++ #ifndef USE_INET6 + server(port, service_name) ; ++ #else /* USE_INET6 */ ++ server(argv[optind]) ; ++ #endif /* USE_INET6 */ + } else { ++ #ifndef USE_INET6 + client(argv[optind], port, service_name) ; ++ #else /* USE_INET6 */ ++ client(argv[optind], argv[optind + 1]) ; ++ #endif /* USE_INET6 */ + } + exit(0) ; + } + + ++ #ifndef USE_INET6 + void server(port, service_name) + int port ; + char *service_name ; ++ #else /* USE_INET6 */ ++ void server(port) ++ char *port ; ++ #endif /* USE_INET6 */ + { ++ #ifndef USE_INET6 + int socket_handle, alen ; ++ #else /* USE_INET6 */ ++ int *socket_handle_list ; ++ #endif /* USE_INET6 */ + + /* allocate server socket */ ++ #ifndef USE_INET6 + socket_handle = create_server_socket(port, 1) ; + if (socket_handle < 0) { ++ #else /* USE_INET6 */ ++ socket_handle_list = create_server_sockets(&port, 1) ; ++ if (!socket_handle_list) { ++ #endif /* USE_INET6 */ + perror2("server socket") ; + exit(1) ; + } ++ #ifdef USE_INET6 ++ ++ #endif /* USE_INET6 */ + if (verboseflag) { ++ #ifndef USE_INET6 + fprintf(stderr, "listening on port %d", port) ; + if (service_name) { + fprintf(stderr, " (%s)", service_name) ; + } + fprintf(stderr, "\n") ; ++ #else /* USE_INET6 */ ++ char *ip, *port; ++ int fd, i; ++ ++ fd = socket_handle_list[1]; ++ for (i = 1; i <= socket_handle_list[0]; i++) { ++ if (!fd || fd < socket_handle_list[i]) ++ fd = socket_handle_list[i]; ++ socket_local_name (fd, NULL, &ip, &port); ++ fprintf(stderr, "listening at address %s on port %s\n", ip, port) ; ++ } ++ #endif /* USE_INET6 */ + } + + /* server loop */ + do { ++ #ifndef USE_INET6 + struct sockaddr_in sa ; + + alen = sizeof(sa) ; +*************** +*** 189,204 **** + long norder ; + char dotted[20] ; + +! he = gethostbyaddr((char *)&sa.sin_addr.s_addr, + sizeof(sa.sin_addr.s_addr), AF_INET) ; + if (!he) { + norder = htonl(sa.sin_addr.s_addr) ; + sprintf(dotted, "%d.%d.%d.%d", +! (int)((norder >> 24) & 0xff), +! (int)((norder >> 16) & 0xff), +! (int)((norder >> 8) & 0xff), +! (int)(norder & 0xff)) ; + } + fprintf(stderr, "connection from %s\n", + (he ? he->h_name : dotted)) ; + } +--- 242,317 ---- + long norder ; + char dotted[20] ; + +! he = gethostbyaddr((const char *)&sa.sin_addr.s_addr, + sizeof(sa.sin_addr.s_addr), AF_INET) ; + if (!he) { + norder = htonl(sa.sin_addr.s_addr) ; + sprintf(dotted, "%d.%d.%d.%d", +! (int)((norder >> 24) & 0xff), +! (int)((norder >> 16) & 0xff), +! (int)((norder >> 8) & 0xff), +! (int)(norder & 0xff)) ; +! #else /* USE_INET6 */ +! struct timeval tv; +! fd_set readfd; +! int fd, i, nfds, retval; +! +! fd = socket_handle_list[1]; +! for (i = 1; i <= socket_handle_list[0]; i++) { +! if (!fd || fd < socket_handle_list[i]) +! fd = socket_handle_list[i]; +! } +! nfds=fd+1; +! +! FD_ZERO(&readfd); +! for (i = 1; i <= socket_handle_list[0]; i++) +! FD_SET(socket_handle_list[i],&readfd); +! +! tv.tv_sec = 10; +! tv.tv_usec = 0; +! +! retval = select(nfds, &readfd, NULL, NULL, &tv); +! +! if(retval!=-1) { +! for (i = 1; i <= socket_handle_list[0]; i++) { +! fd = socket_handle_list[i]; +! if (FD_ISSET(fd, &readfd)) { +! +! /* accept a connection */ +! active_socket = accept(fd, (struct sockaddr *) 0, (int *)0); +! if (active_socket == -1) { +! perror2("accept") ; +! } else { +! /* if verbose, get name of peer and give message */ +! if (verboseflag) { +! char *host, *ip, *port; +! +! if(!socket_remote_name(active_socket,&host, &ip, &port)) { +! fprintf(stderr, "connection from %s at %s to %s\n", host, ip, port); +! } +! else +! fprintf(stderr, "cannot get name or address of peer") ; +! } +! +! if (forkflag) { +! switch (fork()) { +! case 0: +! handle_server_connection() ; +! exit(0) ; +! case -1: +! perror2("fork") ; +! break ; +! default: +! close(active_socket) ; +! wait_for_children() ; +! } +! } else { +! handle_server_connection() ; +! } +! } +! #endif /* USE_INET6 */ + } ++ #ifndef USE_INET6 + fprintf(stderr, "connection from %s\n", + (he ? he->h_name : dotted)) ; + } +*************** +*** 216,224 **** +--- 329,342 ---- + } + } else { + handle_server_connection() ; ++ #endif /* not USE_INET6 */ + } + } + } while (loopflag) ; ++ #ifdef USE_INET6 ++ ++ free (socket_handle_list); ++ #endif /* USE_INET6 */ + } + + +*************** +*** 239,251 **** +--- 357,381 ---- + } + + ++ #ifndef USE_INET6 + void client(host, port, service_name) ++ #else /* USE_INET6 */ ++ void client(host, port) ++ #endif /* USE_INET6 */ + char *host ; ++ #ifndef USE_INET6 + int port ; + char *service_name ; ++ #else /* USE_INET6 */ ++ char *port ; ++ #endif /* USE_INET6 */ + { + /* get connection */ ++ #ifndef USE_INET6 + active_socket = create_client_socket(&host, port) ; ++ #else /* USE_INET6 */ ++ active_socket = create_client_socket(&host, &port) ; ++ #endif /* USE_INET6 */ + if (active_socket == -1) { + perror2("client socket") ; + exit(errno) ; +*************** +*** 254,264 **** +--- 384,401 ---- + exit(13) ; + } + if (verboseflag) { ++ #ifndef USE_INET6 + fprintf(stderr, "connected to %s port %d", host, port) ; + if (service_name) { + fprintf(stderr, " (%s)", service_name) ; + } + fprintf(stderr, "\n") ; ++ #else /* USE_INET6 */ ++ char *host, *ip, *port; ++ ++ socket_local_name (active_socket, &host, &ip, &port); ++ fprintf(stderr, "connected to %s with address %s at port %s\n", host, ip, port) ; ++ #endif /* USE_INET6 */ + } + + /* open pipes to program if requested */ |