rbb 99/04/15 08:41:20
Modified: apr/network_io/unix networkio.h sockets.c docs networkio.txt include apr_network_io.h Log: Cleaned up some memory leaks in network code. And made the sockets know their own hostname. Revision Changes Path 1.4 +1 -2 apache-apr/apr/network_io/unix/networkio.h Index: networkio.h =================================================================== RCS file: /home/cvs/apache-apr/apr/network_io/unix/networkio.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- networkio.h 1999/04/14 21:02:06 1.3 +++ networkio.h 1999/04/15 15:41:18 1.4 @@ -56,10 +56,9 @@ #ifndef NETWORK_IO_H #define NETWORK_IO_H - struct socket_t { int socketdes; - char *hostname; + char hostname[MAXHOSTNAMELEN]; struct sockaddr_in *addr; size_t addr_len; }; 1.4 +10 -1 apache-apr/apr/network_io/unix/sockets.c Index: sockets.c =================================================================== RCS file: /home/cvs/apache-apr/apr/network_io/unix/sockets.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- sockets.c 1999/04/15 14:57:31 1.3 +++ sockets.c 1999/04/15 15:41:18 1.4 @@ -66,9 +66,13 @@ { apr_socket_t *thesocket = (apr_socket_t *)malloc(sizeof(apr_socket_t)); - thesocket->hostname = NULL; thesocket->socketdes = socket(AF_INET ,SOCK_STREAM, IPPROTO_TCP); + if (gethostname(thesocket->hostname, MAXHOSTNAMELEN + 1) == -1) { + free(thesocket); + return NULL; + } + thesocket->addr = (struct sockaddr_in *)malloc(sizeof(struct sockaddr_in)); thesocket->addr->sin_family = AF_INET; thesocket->addr->sin_addr.s_addr = INADDR_ANY; @@ -76,6 +80,8 @@ thesocket->addr_len = sizeof(thesocket->addr); if (thesocket->socketdes < 0) { + free(thesocket->addr); + free(thesocket); return NULL; } else { @@ -131,10 +137,13 @@ { apr_socket_t *new = (apr_socket_t *)malloc(sizeof(apr_socket_t)); + strcpy(new->hostname, sock->hostname); + new->socketdes = accept(sock->socketdes, (struct sockaddr *)new->addr, new->addr_len); if (new->socketdes >= 0) return new; + free(new); return NULL; } 1.9 +10 -10 apache-apr/docs/networkio.txt Index: networkio.txt =================================================================== RCS file: /home/cvs/apache-apr/docs/networkio.txt,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- networkio.txt 1999/04/15 14:57:30 1.8 +++ networkio.txt 1999/04/15 15:41:19 1.9 @@ -133,16 +133,6 @@ - APRStatus apr_initializenetaddr(APRNetAddrValue, APRUInt16, APRNetAddr); - Initialize the fields of a APRNetAddr. assigning well known values - as appropriate. This function only sets up values in the APRNetAddr - structure. It does not setup the connection. - Arguments: - arg 1) The value to assign to the IP address portion of the - APRNetAddr struct. Can only specify INADDR_ANY and - INADR_LOOPBACK equivalents. - arg 2) Port number to be assigned in the struct - arg 3) The address of the APRNetAddr struct to be filled out. APRStatus apr_gethostbyname(char *, APRHostEnt) Lookup a host by name Arguments: @@ -203,6 +193,16 @@ Arguments: arg 1) The file desc of the socket to retrieve the name for. arg 2) structure to store socket address in. + APRStatus apr_initializenetaddr(APRNetAddrValue, APRUInt16, APRNetAddr); + Initialize the fields of a APRNetAddr. assigning well known values + as appropriate. This function only sets up values in the APRNetAddr + structure. It does not setup the connection. + Arguments: + arg 1) The value to assign to the IP address portion of the + APRNetAddr struct. Can only specify INADDR_ANY and + INADR_LOOPBACK equivalents. + arg 2) Port number to be assigned in the struct + arg 3) The address of the APRNetAddr struct to be filled out. **************** IMPLEMENTATION DETAILS ***************** 1.7 +4 -0 apache-apr/include/apr_network_io.h Index: apr_network_io.h =================================================================== RCS file: /home/cvs/apache-apr/include/apr_network_io.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- apr_network_io.h 1999/04/15 14:57:31 1.6 +++ apr_network_io.h 1999/04/15 15:41:20 1.7 @@ -64,6 +64,10 @@ #define MAX_SECS_TO_LINGER 30 #endif +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 256 +#endif + /* Socket option definitions */ #define APR_SO_LINGER 1 #define APR_SO_KEEPALIVE 2