2013-09-26 17:14:40 +02:00

70 lines
2.0 KiB
Plaintext

$NetBSD: patch-ae,v 1.3 2013/03/25 01:59:03 dholland Exp $
- fd_set is not (necessarily) a struct
- change around handling of signal masks (XXX: it is still wrong)
- don't crash on remote machines that aren't in DNS
- use socklen_t witih accept()
--- netserv.c.orig 1994-04-10 10:07:23.000000000 +0000
+++ netserv.c
@@ -106,7 +106,11 @@ struct pqueue *find_player(char*);
#ifdef HAVE_FDSET
+# ifdef Linux
+ fd_set readmask;
+# else
struct fd_set readmask;
+# endif
#else
struct fd_mask readmask;
#endif
@@ -629,7 +633,7 @@ void start_signal(void)
#ifdef RS6000 /* ibm rs/6000 */
sigemptyset(&vec1.sa_mask);
#else
- vec1.sa_mask = 0;
+ (void)sigprocmask (SIG_SETMASK, 0, NULL);
#endif
vec1.sa_flags = 0;
if ( sigaction(SIGALRM, &vec1, (struct sigaction *) 0) == -1) perror("SIGALRM\n");
@@ -652,7 +656,7 @@ void setup_sigchild(void) /* for externa
#ifdef RS6000 /* ibm rs/6000 */
sigemptyset(&svec1.sa_mask);
#else
- svec1.sa_mask = 0;
+ (void)sigprocmask (SIG_SETMASK, 0, NULL);
#endif
svec1.sa_flags = 0;
if(sigaction(SIGCHLD,&svec1,(struct sigaction *)0) == -1) perror("SIGCHLD\n");
@@ -779,7 +783,11 @@ void do_timer(int nowaitgroup)
void io_cntl(void)
{
#ifdef HAVE_FDSET
+# ifdef Linux
+ fd_set readmask1;
+# else
struct fd_set readmask1;
+# endif
#else
struct fd_mask readmask1;
#endif
@@ -881,7 +889,7 @@ void io_cntl(void)
void accept_socket(void)
{
- int addrlen = sizeof(struct sockaddr);
+ socklen_t addrlen = sizeof(struct sockaddr);
struct cqueue *q;
q = calloc(1,sizeof(struct cqueue)); /* alloc a new node */
@@ -914,7 +922,7 @@ char *get_hostname(struct cqueue *q,char
char *saddr = (char *) &(((struct sockaddr_in *) &(q->remoteaddr))->sin_addr.s_addr);
hp = gethostbyaddr(saddr,4,AF_INET);
- if(strlen(hp->h_name) > 0)
+ if(hp && strlen(hp->h_name) > 0)
strcpy(name,hp->h_name);
else
sprintf(name,"%d.%d.%d.%d",(int) saddr[0],(int) saddr[1],(int) saddr[2],(int) saddr[3]);