summaryrefslogtreecommitdiff
path: root/sysutils/socket/files/patch-ae
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/socket/files/patch-ae')
-rw-r--r--sysutils/socket/files/patch-ae327
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 */