Get debug working and getifaddr.c
Steve G <[email protected]> Thu, 29 Jan 2004 11:01:16 -0800 (PST)
| Newsgroups | gmane.network.zeroconf.workers |
|---|---|
| Message-ID | <[email protected]> |
Hi, This is my last two patches for today. Patch 5 gets the debug messages working again. A patch I sent earlier doesn't let it compile. Patch 5a fixes the problems in getifaddrs.c It leaked a socket connection and tried to free a stack variable. I have tmdns up and running now on a Red Hat 9 system and at first shot, everything appears to be good. -Steve Grubb __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free web site building tool. Try it! http://webhosting.yahoo.com/ps/sb/
tmdns-patch5.txt
(text/plain, 3.8 KB)
diff -urBb tmdns-devel-d/server/debug.c tmdns-devel/server/debug.c
--- tmdns-devel-d/server/debug.c 2004-01-29 08:28:16.000000000 -0500
+++ tmdns-devel/server/debug.c 2004-01-29 13:41:23.000000000 -0500
@@ -12,6 +12,7 @@
**
*/
#include <config.h>
+#ifdef DEBUG
#include <stdio.h>
#include <errno.h>
@@ -25,7 +24,8 @@
#include "debug.h"
#include "conf.h"
-#ifdef DEBUG
+
+#undef debug
static FILE * open_log(void) {
if( config.debug_file[0] ){
@@ -43,13 +43,13 @@
/*****************************************************************************
* same as perror but writes to debug output.
****************************************************************************/
-void f_debug_perror( char * msg ) {
- debug( "%s : %s\n" , msg , strerror(errno) );
+void f_debug_perror( const char * msg ) {
+ f_debug( "%s : %s\n" , msg , strerror(errno) );
}
/*****************************************************************************
* same as printf but writes to debug output.
****************************************************************************/
-void f_debug(char *fmt, ...)
+void f_debug(const char *fmt, ...)
{
FILE * fp;
#define MAX_MESG_LEN 1024
@@ -79,7 +79,7 @@
* @param msg extra message for this packet.
* @param dnsdata pointer to a dns packet.
****************************************************************************/
-void f_debug_dns(char * msg , void * dnsdata) {
+void f_debug_dns(const char * msg , void * dnsdata) {
FILE * fp;
if((fp = open_log()) != NULL){
diff -urBb tmdns-devel-d/server/debug.h tmdns-devel/server/debug.h
--- tmdns-devel-d/server/debug.h 2003-01-11 07:32:37.000000000 -0500
+++ tmdns-devel/server/debug.h 2004-01-29 13:31:03.000000000 -0500
@@ -10,13 +10,19 @@
#ifdef DEBUG
#define debug_perror(x) f_debug_perror(x)
-#define debug(s...) f_debug(##s)
-#define debug_dns(c,v) f_debug_dns(c,v)
+#define debug f_debug
+#define debug_dns(c,v) f_debug_dns((c),(v))
#define debug_cache_data(p) f_debug_cache_data(p)
-extern void f_debug_perror(char *);
-extern void f_debug(char * fmt, ... );
-extern void f_debug_dns(char * , void *);
+extern void f_debug_perror(const char *);
+extern void f_debug(const char * fmt, ... )
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 1, 2)));
+#else
+ ;
+#endif
+
+extern void f_debug_dns(const char * , void *);
extern const char * debug_errmsg( int );
#else
diff -urBb tmdns-devel-d/server/serv_udp.c tmdns-devel/server/serv_udp.c
--- tmdns-devel-d/server/serv_udp.c 2004-01-29 13:39:46.000000000 -0500
+++ tmdns-devel/server/serv_udp.c 2004-01-29 13:24:43.000000000 -0500
@@ -37,7 +37,9 @@
static int bridge_sock = -1;
static struct sockaddr mcast_v4_sa;
-/* static const char * udp_answerdst2str(dns_t * answer); */
+#ifdef DEBUG
+static const char * udp_answerdst2str(dns_t * answer);
+#endif
static int udp_sock_open( int mcast , struct sockaddr * sock );
static const char * udp_sockaddr_str( struct sockaddr * addr );
@@ -361,9 +363,11 @@
}
-/* static const char * udp_answerdst2str(dns_t * answer) {
+#ifdef DEBUG
+static const char * udp_answerdst2str(dns_t * answer) {
return udp_sockaddr_str( &(answer->dst_address) );
-}*/
+}
+#endif
const char * udp_pktsrc2str(struct udp_packet * udp_pkt) {
return udp_sockaddr_str( &(udp_pkt->src_address) );
diff -urBb tmdns-devel-d/server/tmdns.c tmdns-devel/server/tmdns.c
--- tmdns-devel-d/server/tmdns.c 2004-01-29 13:39:46.000000000 -0500
+++ tmdns-devel/server/tmdns.c 2004-01-29 13:32:19.000000000 -0500
@@ -501,7 +501,7 @@
static void random_sleep() {
unsigned long rdelay = 0;
rdelay = 20000 + (100000.0*rand()/(RAND_MAX+1.0));
- debug("random sleep for %d usec\n" , rdelay );
+ debug("random sleep for %lu usec\n" , rdelay );
usleep(rdelay);
}
/*****************************************************************************
tmdns-patch5a.txt
(text/plain, 1.3 KB)
diff -urBb tmdns-devel-d/server/getifaddrs.c tmdns-devel/server/getifaddrs.c
--- tmdns-devel-d/server/getifaddrs.c 2003-01-11 07:32:38.000000000 -0500
+++ tmdns-devel/server/getifaddrs.c 2004-01-29 12:47:53.000000000 -0500
@@ -4,7 +4,7 @@
#include "config.h"
#endif /* HAVE_CONFIG_H */
-#if !HAVE_GETIFADDRS
+#ifndef HAVE_GETIFADDRS
/* $OpenBSD: getifaddrs.c,v 1.3 2000/11/24 08:26:47 itojun Exp $ */
/*
@@ -72,6 +72,7 @@
#include "ifaddrs.h"
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
/*XXX IPv6*/
#if !HAVE_SOCKADDR_SA_LEN && !defined(SA_LEN)
@@ -121,9 +122,10 @@
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
return (-1);
i = ioctl(sock, SIOCGIFCONF, (char *)&ifc);
- //close(sock);
- if (i == -1)
+ if (i == -1) {
+ close(sock);
return (-1);
+ }
ifr = ifc.ifc_req;
lifr = (struct ifreq *)&ifc.ifc_buf[ifc.ifc_len];
@@ -141,13 +143,11 @@
if (icnt + dcnt + ncnt == 1) {
*pif = NULL;
- free(buf);
close(sock);
return (0);
}
data = malloc(sizeof(struct ifaddrs) * icnt + dcnt + ncnt);
if (data == NULL) {
- free(buf);
close(sock);
return(-1);
}
@@ -179,7 +179,6 @@
{
struct ifreq freq;
- int res = 0;
memset (&freq, 0, sizeof(freq));
memcpy (freq.ifr_name, ifr->ifr_name, sizeof(ifa->ifa_name));
if( (ioctl(sock, SIOCGIFFLAGS, &freq) == 0 )) {