I found this bug (or typo) while compiling and using ehnt
0.3 under FreeBSD 4.4-RELEASE.
In module ehntserv.c:
if ( (l_connfd = accept(l_fd,(struct sockaddr *)
l_cliaddr, &l_addrlen)) < 0)
But should be:
if ( (l_connfd = accept(l_fd,(struct sockaddr *)
&l_cliaddr, &l_addrlen)) <
0)
Otherwise server exits with error "accept error: Bad
address" while trying to connect from client.
Logged In: YES
user_id=287606
Not exactly ;-) It seems bug resides in a slightly different
line. Here is the relevant patch:
Index: ehntserv.c
RCS file: /home/marck/.CVS/contrib/ehnt/ehntserv.c,v
retrieving revision 1.4
diff -u -r1.4 ehntserv.c
--- ehntserv.c 7 Oct 2001 16:51:03 -0000 1.4
+++ ehntserv.c 30 May 2003 10:11:17 -0000
@@ -225,11 +225,11 @@
if (FD_ISSET(l_fd,&read_fds)) { /*we have a new TCP
client*/
int l_connfd,new_index=-1;
socklen_t l_addrlen;
- struct sockaddr * l_cliaddr;
+ struct sockaddr l_cliaddr;
/* printf("incoming connection on tcp 4444\n");*/
l_addrlen=sizeof(l_cliaddr);
- if ( (l_connfd = accept(l_fd,(struct sockaddr *)
l_cliaddr, &l_addrlen)) < 0)
+ if ( (l_connfd = accept(l_fd, &l_cliaddr, &l_addrlen)) < 0)
{ log_error("accept error"); exit(1); }
SetTCPOpts(l_connfd, bufsize);