Use some more specific data types (e. g. pid_t vs. int), make "SPLint" happy :-)

This commit is contained in:
Alexander Barton 2006-05-10 21:24:01 +00:00
parent 0a3f562f36
commit dd3a3bc603
19 changed files with 190 additions and 134 deletions

View File

@ -14,7 +14,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: conf.c,v 1.90 2006/02/08 15:20:21 fw Exp $"; static char UNUSED id[] = "$Id: conf.c,v 1.91 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -86,7 +86,7 @@ strdup_warn(const char *str)
static void static void
ports_puts(array *a) ports_puts(array *a)
{ {
unsigned int len; size_t len;
UINT16 *ports; UINT16 *ports;
len = array_length(a, sizeof(UINT16)); len = array_length(a, sizeof(UINT16));
if (len--) { if (len--) {
@ -223,7 +223,7 @@ Conf_Test( void )
puts( "[SERVER]" ); puts( "[SERVER]" );
printf( " Name = %s\n", Conf_Server[i].name ); printf( " Name = %s\n", Conf_Server[i].name );
printf( " Host = %s\n", Conf_Server[i].host ); printf( " Host = %s\n", Conf_Server[i].host );
printf( " Port = %d\n", Conf_Server[i].port ); printf( " Port = %u\n", (unsigned int)Conf_Server[i].port );
printf( " MyPassword = %s\n", Conf_Server[i].pwd_in ); printf( " MyPassword = %s\n", Conf_Server[i].pwd_in );
printf( " PeerPassword = %s\n", Conf_Server[i].pwd_out ); printf( " PeerPassword = %s\n", Conf_Server[i].pwd_out );
printf( " Group = %d\n\n", Conf_Server[i].group ); printf( " Group = %d\n\n", Conf_Server[i].group );

View File

@ -8,7 +8,7 @@
* (at your option) any later version. * (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information. * Please read the file COPYING, README and AUTHORS for more information.
* *
* $Id: conf.h,v 1.39 2006/02/08 15:20:21 fw Exp $ * $Id: conf.h,v 1.40 2006/05/10 21:24:01 alex Exp $
* *
* Configuration management (header) * Configuration management (header)
*/ */
@ -84,8 +84,8 @@ GLOBAL array Conf_ListenPorts;
GLOBAL char Conf_ListenAddress[16]; GLOBAL char Conf_ListenAddress[16];
/* User and group ID the server should run with */ /* User and group ID the server should run with */
GLOBAL unsigned int Conf_UID; GLOBAL uid_t Conf_UID;
GLOBAL unsigned int Conf_GID; GLOBAL gid_t Conf_GID;
/* A directory to chroot() in */ /* A directory to chroot() in */
GLOBAL char Conf_Chroot[FNAME_LEN]; GLOBAL char Conf_Chroot[FNAME_LEN];

View File

@ -16,7 +16,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: conn-func.c,v 1.9 2006/04/23 10:37:27 fw Exp $"; static char UNUSED id[] = "$Id: conn-func.c,v 1.10 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -156,7 +156,7 @@ Conn_Next( CONN_ID Idx )
} /* Conn_Next */ } /* Conn_Next */
GLOBAL int GLOBAL UINT16
Conn_Options( CONN_ID Idx ) Conn_Options( CONN_ID Idx )
{ {
assert( Idx > NONE ); assert( Idx > NONE );
@ -185,7 +185,7 @@ Conn_StartTime( CONN_ID Idx )
} /* Conn_StartTime */ } /* Conn_StartTime */
GLOBAL int GLOBAL size_t
Conn_SendQ( CONN_ID Idx ) Conn_SendQ( CONN_ID Idx )
{ {
/* Laenge der Daten im Schreibbuffer liefern */ /* Laenge der Daten im Schreibbuffer liefern */
@ -220,7 +220,7 @@ Conn_SendBytes( CONN_ID Idx )
} /* Conn_SendBytes */ } /* Conn_SendBytes */
GLOBAL int GLOBAL size_t
Conn_RecvQ( CONN_ID Idx ) Conn_RecvQ( CONN_ID Idx )
{ {
/* Laenge der Daten im Lesebuffer liefern */ /* Laenge der Daten im Lesebuffer liefern */

View File

@ -8,7 +8,7 @@
* (at your option) any later version. * (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information. * Please read the file COPYING, README and AUTHORS for more information.
* *
* $Id: conn-func.h,v 1.4 2005/04/25 18:37:16 fw Exp $ * $Id: conn-func.h,v 1.5 2006/05/10 21:24:01 alex Exp $
* *
* Connection management: Global functions (header) * Connection management: Global functions (header)
*/ */
@ -30,8 +30,8 @@ GLOBAL void Conn_UpdateIdle PARAMS(( CONN_ID Idx ));
GLOBAL time_t Conn_GetIdle PARAMS(( CONN_ID Idx )); GLOBAL time_t Conn_GetIdle PARAMS(( CONN_ID Idx ));
GLOBAL time_t Conn_LastPing PARAMS(( CONN_ID Idx )); GLOBAL time_t Conn_LastPing PARAMS(( CONN_ID Idx ));
GLOBAL time_t Conn_StartTime PARAMS(( CONN_ID Idx )); GLOBAL time_t Conn_StartTime PARAMS(( CONN_ID Idx ));
GLOBAL int Conn_SendQ PARAMS(( CONN_ID Idx )); GLOBAL size_t Conn_SendQ PARAMS(( CONN_ID Idx ));
GLOBAL int Conn_RecvQ PARAMS(( CONN_ID Idx )); GLOBAL size_t Conn_RecvQ PARAMS(( CONN_ID Idx ));
GLOBAL long Conn_SendMsg PARAMS(( CONN_ID Idx )); GLOBAL long Conn_SendMsg PARAMS(( CONN_ID Idx ));
GLOBAL long Conn_RecvMsg PARAMS(( CONN_ID Idx )); GLOBAL long Conn_RecvMsg PARAMS(( CONN_ID Idx ));
GLOBAL long Conn_SendBytes PARAMS(( CONN_ID Idx )); GLOBAL long Conn_SendBytes PARAMS(( CONN_ID Idx ));
@ -47,7 +47,7 @@ GLOBAL void Conn_SetFlag PARAMS(( CONN_ID Idx, int Flag ));
GLOBAL CONN_ID Conn_First PARAMS(( void )); GLOBAL CONN_ID Conn_First PARAMS(( void ));
GLOBAL CONN_ID Conn_Next PARAMS(( CONN_ID Idx )); GLOBAL CONN_ID Conn_Next PARAMS(( CONN_ID Idx ));
GLOBAL int Conn_Options PARAMS(( CONN_ID Idx )); GLOBAL UINT16 Conn_Options PARAMS(( CONN_ID Idx ));
GLOBAL void Conn_ResetWCounter PARAMS(( void )); GLOBAL void Conn_ResetWCounter PARAMS(( void ));
GLOBAL long Conn_WCounter PARAMS(( void )); GLOBAL long Conn_WCounter PARAMS(( void ));

View File

@ -19,7 +19,7 @@
#ifdef ZLIB #ifdef ZLIB
static char UNUSED id[] = "$Id: conn-zip.c,v 1.9 2005/08/02 22:48:57 alex Exp $"; static char UNUSED id[] = "$Id: conn-zip.c,v 1.10 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -80,7 +80,7 @@ Zip_InitConn( CONN_ID Idx )
GLOBAL bool GLOBAL bool
Zip_Buffer( CONN_ID Idx, char *Data, int Len ) Zip_Buffer( CONN_ID Idx, char *Data, size_t Len )
{ {
/* Daten zum Komprimieren im "Kompressions-Puffer" sammeln. /* Daten zum Komprimieren im "Kompressions-Puffer" sammeln.
* Es wird true bei Erfolg, sonst false geliefert. */ * Es wird true bei Erfolg, sonst false geliefert. */
@ -90,14 +90,15 @@ Zip_Buffer( CONN_ID Idx, char *Data, int Len )
assert( Len > 0 ); assert( Len > 0 );
assert( Len <= ZWRITEBUFFER_LEN ); assert( Len <= ZWRITEBUFFER_LEN );
if (Len < 0 || Len > ZWRITEBUFFER_LEN) return false; if (Len > ZWRITEBUFFER_LEN)
return false;
if ( array_bytes( &My_Connections[Idx].zip.wbuf ) >= ZWRITEBUFFER_LEN ) { if ( array_bytes( &My_Connections[Idx].zip.wbuf ) >= ZWRITEBUFFER_LEN ) {
/* compression buffer is full, flush */ /* compression buffer is full, flush */
if( ! Zip_Flush( Idx )) return false; if( ! Zip_Flush( Idx )) return false;
} }
return array_catb( &My_Connections[Idx].zip.wbuf, Data, Len ); return array_catb(&My_Connections[Idx].zip.wbuf, Data, Len);
} /* Zip_Buffer */ } /* Zip_Buffer */
@ -109,20 +110,19 @@ Zip_Flush( CONN_ID Idx )
int result; int result;
unsigned char zipbuf[WRITEBUFFER_LEN]; unsigned char zipbuf[WRITEBUFFER_LEN];
unsigned int zipbuf_used = 0; int zipbuf_used = 0;
z_stream *out; z_stream *out;
out = &My_Connections[Idx].zip.out; out = &My_Connections[Idx].zip.out;
out->next_in = array_start(&My_Connections[Idx].zip.wbuf); out->next_in = array_start(&My_Connections[Idx].zip.wbuf);
assert(out->next_in);
if (!out->next_in) if (!out->next_in)
return false; return false;
out->avail_in = array_bytes(&My_Connections[Idx].zip.wbuf); out->avail_in = (uInt)array_bytes(&My_Connections[Idx].zip.wbuf);
out->next_out = zipbuf; out->next_out = zipbuf;
out->avail_out = sizeof zipbuf; out->avail_out = (uInt)sizeof zipbuf;
Log(LOG_DEBUG, "out->avail_in %d, out->avail_out %d", out->avail_in, out->avail_out); Log(LOG_DEBUG, "out->avail_in %d, out->avail_out %d", out->avail_in, out->avail_out);
result = deflate( out, Z_SYNC_FLUSH ); result = deflate( out, Z_SYNC_FLUSH );
@ -136,7 +136,8 @@ Zip_Flush( CONN_ID Idx )
assert(out->avail_out <= WRITEBUFFER_LEN); assert(out->avail_out <= WRITEBUFFER_LEN);
zipbuf_used = WRITEBUFFER_LEN - out->avail_out; zipbuf_used = WRITEBUFFER_LEN - out->avail_out;
Log(LOG_DEBUG, "zipbuf_used: %d", zipbuf_used); Log(LOG_DEBUG, "zipbuf_used: %d", zipbuf_used);
if (!array_catb( &My_Connections[Idx].wbuf, (char*) zipbuf, zipbuf_used )) if (!array_catb(&My_Connections[Idx].wbuf,
(char *)zipbuf, (size_t) zipbuf_used))
return false; return false;
My_Connections[Idx].bytes_out += zipbuf_used; My_Connections[Idx].bytes_out += zipbuf_used;
@ -156,7 +157,7 @@ Unzip_Buffer( CONN_ID Idx )
int result; int result;
unsigned char unzipbuf[READBUFFER_LEN]; unsigned char unzipbuf[READBUFFER_LEN];
unsigned int unzipbuf_used = 0; int unzipbuf_used = 0;
unsigned int z_rdatalen; unsigned int z_rdatalen;
unsigned int in_len; unsigned int in_len;
@ -164,20 +165,19 @@ Unzip_Buffer( CONN_ID Idx )
assert( Idx > NONE ); assert( Idx > NONE );
z_rdatalen = array_bytes(&My_Connections[Idx].zip.rbuf); z_rdatalen = (unsigned int)array_bytes(&My_Connections[Idx].zip.rbuf);
if (z_rdatalen == 0) if (z_rdatalen == 0)
return true; return true;
in = &My_Connections[Idx].zip.in; in = &My_Connections[Idx].zip.in;
in->next_in = array_start(&My_Connections[Idx].zip.rbuf); in->next_in = array_start(&My_Connections[Idx].zip.rbuf);
assert(in->next_in);
if (!in->next_in) if (!in->next_in)
return false; return false;
in->avail_in = z_rdatalen; in->avail_in = z_rdatalen;
in->next_out = unzipbuf; in->next_out = unzipbuf;
in->avail_out = sizeof unzipbuf; in->avail_out = (uInt)sizeof unzipbuf;
Log(LOG_DEBUG, "in->avail_in %d, in->avail_out %d", in->avail_in, in->avail_out); Log(LOG_DEBUG, "in->avail_in %d, in->avail_out %d", in->avail_in, in->avail_out);
result = inflate( in, Z_SYNC_FLUSH ); result = inflate( in, Z_SYNC_FLUSH );
@ -193,7 +193,8 @@ Unzip_Buffer( CONN_ID Idx )
unzipbuf_used = READBUFFER_LEN - in->avail_out; unzipbuf_used = READBUFFER_LEN - in->avail_out;
Log(LOG_DEBUG, "unzipbuf_used: %d - %d = %d", READBUFFER_LEN, in->avail_out, unzipbuf_used); Log(LOG_DEBUG, "unzipbuf_used: %d - %d = %d", READBUFFER_LEN, in->avail_out, unzipbuf_used);
assert(unzipbuf_used <= READBUFFER_LEN); assert(unzipbuf_used <= READBUFFER_LEN);
if (!array_catb(&My_Connections[Idx].rbuf, (char*) unzipbuf, unzipbuf_used)) if (!array_catb(&My_Connections[Idx].rbuf, (char*) unzipbuf,
(size_t)unzipbuf_used))
return false; return false;
if( in->avail_in > 0 ) { if( in->avail_in > 0 ) {

View File

@ -8,7 +8,7 @@
* (at your option) any later version. * (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information. * Please read the file COPYING, README and AUTHORS for more information.
* *
* $Id: conn-zip.h,v 1.3 2005/03/19 18:43:48 fw Exp $ * $Id: conn-zip.h,v 1.4 2006/05/10 21:24:01 alex Exp $
* *
* Connection compression using ZLIB (header) * Connection compression using ZLIB (header)
*/ */
@ -22,7 +22,7 @@
GLOBAL bool Zip_InitConn PARAMS(( CONN_ID Idx )); GLOBAL bool Zip_InitConn PARAMS(( CONN_ID Idx ));
GLOBAL bool Zip_Buffer PARAMS(( CONN_ID Idx, char *Data, int Len )); GLOBAL bool Zip_Buffer PARAMS(( CONN_ID Idx, char *Data, size_t Len ));
GLOBAL bool Zip_Flush PARAMS(( CONN_ID Idx )); GLOBAL bool Zip_Flush PARAMS(( CONN_ID Idx ));
GLOBAL bool Unzip_Buffer PARAMS(( CONN_ID Idx )); GLOBAL bool Unzip_Buffer PARAMS(( CONN_ID Idx ));

View File

@ -17,7 +17,7 @@
#include "portab.h" #include "portab.h"
#include "io.h" #include "io.h"
static char UNUSED id[] = "$Id: conn.c,v 1.194 2006/05/09 14:49:08 alex Exp $"; static char UNUSED id[] = "$Id: conn.c,v 1.195 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -216,12 +216,13 @@ Conn_Init( void )
if( Pool_Size > Conf_MaxConnections ) Pool_Size = Conf_MaxConnections; if( Pool_Size > Conf_MaxConnections ) Pool_Size = Conf_MaxConnections;
} }
if (!array_alloc(&My_ConnArray, sizeof(CONNECTION), Pool_Size)) { if (!array_alloc(&My_ConnArray, sizeof(CONNECTION), (size_t)Pool_Size)) {
Log( LOG_EMERG, "Can't allocate memory! [Conn_Init]" ); Log( LOG_EMERG, "Can't allocate memory! [Conn_Init]" );
exit( 1 ); exit( 1 );
} }
/* XXX: My_Connetions/Pool_Size are needed by other parts of the code; remove them */ /* FIXME: My_Connetions/Pool_Size is needed by other parts of the
* code; remove them! */
My_Connections = (CONNECTION*) array_start(&My_ConnArray); My_Connections = (CONNECTION*) array_start(&My_ConnArray);
LogDebug("Allocated connection pool for %d items (%ld bytes).", LogDebug("Allocated connection pool for %d items (%ld bytes).",
@ -266,10 +267,11 @@ Conn_Exit( void )
} /* Conn_Exit */ } /* Conn_Exit */
static unsigned int static int
ports_initlisteners(array *a, void (*func)(int,short)) ports_initlisteners(array *a, void (*func)(int,short))
{ {
unsigned int created = 0, len; int created = 0;
size_t len;
int fd; int fd;
UINT16 *port; UINT16 *port;
@ -301,7 +303,7 @@ Conn_InitListeners( void )
{ {
/* Initialize ports on which the server should accept connections */ /* Initialize ports on which the server should accept connections */
unsigned int created; int created;
if (!io_library_init(CONNECTION_POOL)) { if (!io_library_init(CONNECTION_POOL)) {
Log(LOG_EMERG, "Cannot initialize IO routines: %s", strerror(errno)); Log(LOG_EMERG, "Cannot initialize IO routines: %s", strerror(errno));
@ -328,7 +330,7 @@ Conn_ExitListeners( void )
Log( LOG_INFO, "Shutting down all listening sockets (%d total)...", arraylen ); Log( LOG_INFO, "Shutting down all listening sockets (%d total)...", arraylen );
fd = array_start(&My_Listeners); fd = array_start(&My_Listeners);
while(arraylen--) { while(arraylen--) {
assert(fd); assert(fd != NULL);
assert(*fd >= 0); assert(*fd >= 0);
io_close(*fd); io_close(*fd);
LogDebug("Listening socket %d closed.", *fd ); LogDebug("Listening socket %d closed.", *fd );
@ -354,7 +356,7 @@ NewListener( const UINT16 Port )
/* Server-"Listen"-Socket initialisieren */ /* Server-"Listen"-Socket initialisieren */
memset( &addr, 0, sizeof( addr )); memset( &addr, 0, sizeof( addr ));
memset( &inaddr, 0, sizeof( inaddr )); memset( &inaddr, 0, sizeof( inaddr ));
addr.sin_family = AF_INET; addr.sin_family = (sa_family_t)AF_INET;
addr.sin_port = htons( Port ); addr.sin_port = htons( Port );
if( Conf_ListenAddress[0] ) if( Conf_ListenAddress[0] )
{ {
@ -381,7 +383,7 @@ NewListener( const UINT16 Port )
if( ! Init_Socket( sock )) return -1; if( ! Init_Socket( sock )) return -1;
if( bind( sock, (struct sockaddr *)&addr, (socklen_t)sizeof( addr )) != 0 ) { if (bind(sock, (struct sockaddr *)&addr, (int)sizeof(addr)) != 0) {
Log( LOG_CRIT, "Can't bind socket: %s!", strerror( errno )); Log( LOG_CRIT, "Can't bind socket: %s!", strerror( errno ));
close( sock ); close( sock );
return -1; return -1;
@ -424,8 +426,11 @@ NewListener( const UINT16 Port )
} }
/* Add port number to description if non-standard */ /* Add port number to description if non-standard */
if( Port != 6667 ) snprintf( name, sizeof( name ), "%s (port %u)", info, Port ); if (Port != 6667)
else strlcpy( name, info, sizeof( name )); snprintf(name, sizeof name, "%s (port %u)", info,
(unsigned int)Port);
else
strlcpy(name, info, sizeof name);
/* Register service */ /* Register service */
Rendezvous_Register( name, MDNS_TYPE, Port ); Rendezvous_Register( name, MDNS_TYPE, Port );
@ -482,7 +487,7 @@ Conn_Handler( void )
if ( My_Connections[i].sock <= NONE ) if ( My_Connections[i].sock <= NONE )
continue; continue;
wdatalen = array_bytes(&My_Connections[i].wbuf); wdatalen = (unsigned int)array_bytes(&My_Connections[i].wbuf);
#ifdef ZLIB #ifdef ZLIB
if (( wdatalen > 0 ) || ( array_bytes(&My_Connections[i].zip.wbuf)> 0 )) if (( wdatalen > 0 ) || ( array_bytes(&My_Connections[i].zip.wbuf)> 0 ))
@ -611,7 +616,7 @@ va_dcl
GLOBAL bool GLOBAL bool
Conn_Write( CONN_ID Idx, char *Data, unsigned int Len ) Conn_Write( CONN_ID Idx, char *Data, size_t Len )
{ {
/* Daten in Socket schreiben. Bei "fatalen" Fehlern wird /* Daten in Socket schreiben. Bei "fatalen" Fehlern wird
* der Client disconnectiert und false geliefert. */ * der Client disconnectiert und false geliefert. */
@ -824,13 +829,14 @@ Conn_SyncServerStruct( void )
} /* SyncServerStruct */ } /* SyncServerStruct */
/**
* Send out data of write buffer; connect new sockets.
*/
static bool static bool
Handle_Write( CONN_ID Idx ) Handle_Write( CONN_ID Idx )
{ {
/* Daten aus Schreibpuffer versenden bzw. Connection aufbauen */ ssize_t len;
size_t wdatalen;
int len;
unsigned int wdatalen;
assert( Idx > NONE ); assert( Idx > NONE );
if ( My_Connections[Idx].sock < 0 ) { if ( My_Connections[Idx].sock < 0 ) {
@ -876,7 +882,7 @@ Handle_Write( CONN_ID Idx )
} }
/* move any data not yet written to beginning */ /* move any data not yet written to beginning */
array_moveleft(&My_Connections[Idx].wbuf, 1, len); array_moveleft(&My_Connections[Idx].wbuf, 1, (size_t)len);
return true; return true;
} /* Handle_Write */ } /* Handle_Write */
@ -898,11 +904,11 @@ New_Connection( int Sock )
assert( Sock > NONE ); assert( Sock > NONE );
/* Connection auf Listen-Socket annehmen */ /* Connection auf Listen-Socket annehmen */
new_sock_len = sizeof( new_addr ); new_sock_len = (int)sizeof new_addr;
new_sock = accept( Sock, (struct sockaddr *)&new_addr, (socklen_t *)&new_sock_len ); new_sock = accept(Sock, (struct sockaddr *)&new_addr,
if( new_sock < 0 ) (socklen_t *)&new_sock_len);
{ if (new_sock < 0) {
Log( LOG_CRIT, "Can't accept connection: %s!", strerror( errno )); Log(LOG_CRIT, "Can't accept connection: %s!", strerror(errno));
return -1; return -1;
} }
@ -947,7 +953,8 @@ New_Connection( int Sock )
return -1; return -1;
} }
if (!array_alloc(&My_ConnArray, sizeof( CONNECTION ), new_sock)) { if (!array_alloc(&My_ConnArray, sizeof(CONNECTION),
(size_t)new_sock)) {
Log( LOG_EMERG, "Can't allocate memory! [New_Connection]" ); Log( LOG_EMERG, "Can't allocate memory! [New_Connection]" );
Simple_Message( new_sock, "ERROR: Internal error" ); Simple_Message( new_sock, "ERROR: Internal error" );
close( new_sock ); close( new_sock );
@ -1023,7 +1030,7 @@ Read_Request( CONN_ID Idx )
/* Daten von Socket einlesen und entsprechend behandeln. /* Daten von Socket einlesen und entsprechend behandeln.
* Tritt ein Fehler auf, so wird der Socket geschlossen. */ * Tritt ein Fehler auf, so wird der Socket geschlossen. */
int len; ssize_t len;
char readbuf[1024]; char readbuf[1024];
CLIENT *c; CLIENT *c;
@ -1061,10 +1068,14 @@ Read_Request( CONN_ID Idx )
return; return;
} }
#ifdef ZLIB #ifdef ZLIB
if ( Conn_OPTION_ISSET( &My_Connections[Idx], CONN_ZIP )) { if (Conn_OPTION_ISSET(&My_Connections[Idx], CONN_ZIP)) {
if (!array_catb( &My_Connections[Idx].zip.rbuf, readbuf, len)) { if (!array_catb(&My_Connections[Idx].zip.rbuf, readbuf,
Log( LOG_ERR, "Could not append recieved data to zip input buffer (connn %d): %d bytes!", Idx, len ); (size_t) len)) {
Conn_Close( Idx, "Receive buffer overflow!", NULL, false ); Log(LOG_ERR,
"Could not append recieved data to zip input buffer (connn %d): %d bytes!",
Idx, len);
Conn_Close(Idx, "Receive buffer overflow!", NULL,
false);
return; return;
} }
} else } else
@ -1107,7 +1118,7 @@ Handle_Buffer( CONN_ID Idx )
char *ptr1, *ptr2; char *ptr1, *ptr2;
#endif #endif
char *ptr; char *ptr;
int len, delta; size_t len, delta;
bool result; bool result;
time_t starttime; time_t starttime;
#ifdef ZLIB #ifdef ZLIB
@ -1156,7 +1167,7 @@ Handle_Buffer( CONN_ID Idx )
len = ( ptr - (char*) array_start(&My_Connections[Idx].rbuf)) + delta; len = ( ptr - (char*) array_start(&My_Connections[Idx].rbuf)) + delta;
if( len < 0 || len > ( COMMAND_LEN - 1 )) { if( len > ( COMMAND_LEN - 1 )) {
/* Request must not exceed 512 chars (incl. CR+LF!), see /* Request must not exceed 512 chars (incl. CR+LF!), see
* RFC 2812. Disconnect Client if this happens. */ * RFC 2812. Disconnect Client if this happens. */
Log( LOG_ERR, "Request too long (connection %d): %d bytes (max. %d expected)!", Log( LOG_ERR, "Request too long (connection %d): %d bytes (max. %d expected)!",
@ -1331,7 +1342,7 @@ New_Server( int Server )
} }
memset( &new_addr, 0, sizeof( new_addr )); memset( &new_addr, 0, sizeof( new_addr ));
new_addr.sin_family = AF_INET; new_addr.sin_family = (sa_family_t)AF_INET;
new_addr.sin_addr = inaddr; new_addr.sin_addr = inaddr;
new_addr.sin_port = htons( Conf_Server[Server].port ); new_addr.sin_port = htons( Conf_Server[Server].port );
@ -1343,15 +1354,18 @@ New_Server( int Server )
if( ! Init_Socket( new_sock )) return; if( ! Init_Socket( new_sock )) return;
res = connect( new_sock, (struct sockaddr *)&new_addr, sizeof( new_addr )); res = connect(new_sock, (struct sockaddr *)&new_addr,
(socklen_t)sizeof(new_addr));
if(( res != 0 ) && ( errno != EINPROGRESS )) { if(( res != 0 ) && ( errno != EINPROGRESS )) {
Log( LOG_CRIT, "Can't connect socket: %s!", strerror( errno )); Log( LOG_CRIT, "Can't connect socket: %s!", strerror( errno ));
close( new_sock ); close( new_sock );
return; return;
} }
if (!array_alloc(&My_ConnArray, sizeof(CONNECTION), new_sock)) { if (!array_alloc(&My_ConnArray, sizeof(CONNECTION), (size_t)new_sock)) {
Log( LOG_ALERT, "Cannot allocate memory for server connection (socket %d)", new_sock); Log(LOG_ALERT,
"Cannot allocate memory for server connection (socket %d)",
new_sock);
close( new_sock ); close( new_sock );
return; return;
} }
@ -1598,7 +1612,7 @@ Conn_GetClient( CONN_ID Idx )
CONNECTION *c; CONNECTION *c;
assert( Idx >= 0 ); assert( Idx >= 0 );
c = array_get(&My_ConnArray, sizeof (CONNECTION), Idx); c = array_get(&My_ConnArray, sizeof (CONNECTION), (size_t)Idx);
assert(c != NULL); assert(c != NULL);

View File

@ -8,7 +8,7 @@
* (at your option) any later version. * (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information. * Please read the file COPYING, README and AUTHORS for more information.
* *
* $Id: conn.h,v 1.41 2006/04/23 10:37:27 fw Exp $ * $Id: conn.h,v 1.42 2006/05/10 21:24:01 alex Exp $
* *
* Connection management (header) * Connection management (header)
*/ */
@ -88,7 +88,7 @@ GLOBAL void Conn_ExitListeners PARAMS(( void ));
GLOBAL void Conn_Handler PARAMS(( void )); GLOBAL void Conn_Handler PARAMS(( void ));
GLOBAL bool Conn_Write PARAMS(( CONN_ID Idx, char *Data, unsigned int Len )); GLOBAL bool Conn_Write PARAMS(( CONN_ID Idx, char *Data, size_t Len ));
GLOBAL bool Conn_WriteStr PARAMS(( CONN_ID Idx, char *Format, ... )); GLOBAL bool Conn_WriteStr PARAMS(( CONN_ID Idx, char *Format, ... ));
GLOBAL void Conn_Close PARAMS(( CONN_ID Idx, char *LogMsg, char *FwdMsg, bool InformClient )); GLOBAL void Conn_Close PARAMS(( CONN_ID Idx, char *LogMsg, char *FwdMsg, bool InformClient ));

View File

@ -14,7 +14,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: irc-info.c,v 1.32 2006/04/23 10:37:27 fw Exp $"; static char UNUSED id[] = "$Id: irc-info.c,v 1.33 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -913,7 +913,7 @@ IRC_Show_MOTD( CLIENT *Client )
if (!Show_MOTD_Start( Client )) if (!Show_MOTD_Start( Client ))
return DISCONNECTED; return DISCONNECTED;
while (fgets( line, sizeof( line ), fd )) { while (fgets( line, (int)sizeof line, fd )) {
ngt_TrimLastChr( line, '\n'); ngt_TrimLastChr( line, '\n');
if( ! Show_MOTD_Sendline( Client, line)) { if( ! Show_MOTD_Sendline( Client, line)) {

View File

@ -14,7 +14,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: irc-mode.c,v 1.44 2005/07/31 20:13:08 alex Exp $"; static char UNUSED id[] = "$Id: irc-mode.c,v 1.45 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -71,15 +71,20 @@ IRC_MODE( CLIENT *Client, REQUEST *Req )
else origin = Client; else origin = Client;
/* Channel or user mode? */ /* Channel or user mode? */
cl = chan = NULL; cl = NULL; chan = NULL;
if( Client_IsValidNick( Req->argv[0] )) cl = Client_Search( Req->argv[0] ); if (Client_IsValidNick(Req->argv[0]))
if( Channel_IsValidName( Req->argv[0] )) chan = Channel_Search( Req->argv[0] ); cl = Client_Search(Req->argv[0]);
if (Channel_IsValidName(Req->argv[0]))
chan = Channel_Search(Req->argv[0]);
if( cl ) return Client_Mode( Client, Req, origin, cl ); if (cl)
if( chan ) return Channel_Mode( Client, Req, origin, chan ); return Client_Mode(Client, Req, origin, cl);
if (chan)
return Channel_Mode(Client, Req, origin, chan);
/* No target found! */ /* No target found! */
return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->argv[0] ); return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
Client_ID(Client), Req->argv[0]);
} /* IRC_MODE */ } /* IRC_MODE */

View File

@ -14,7 +14,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: irc-oper.c,v 1.25 2006/04/23 10:37:27 fw Exp $"; static char UNUSED id[] = "$Id: irc-oper.c,v 1.26 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -150,35 +150,52 @@ IRC_RESTART( CLIENT *Client, REQUEST *Req )
} /* IRC_RESTART */ } /* IRC_RESTART */
/**
* Connect configured or new server.
*/
GLOBAL bool GLOBAL bool
IRC_CONNECT(CLIENT *Client, REQUEST *Req ) IRC_CONNECT(CLIENT * Client, REQUEST * Req)
{ {
/* Connect configured or new server */
assert( Client != NULL ); assert(Client != NULL);
assert( Req != NULL ); assert(Req != NULL);
/* Not a local IRC operator? */ /* Not a local IRC operator? */
if(( ! Client_HasMode( Client, 'o' )) || ( ! Client_OperByMe( Client ))) return IRC_WriteStrClient( Client, ERR_NOPRIVILEGES_MSG, Client_ID( Client )); if ((!Client_HasMode(Client, 'o')) || (!Client_OperByMe(Client)))
return IRC_WriteStrClient(Client, ERR_NOPRIVILEGES_MSG,
Client_ID(Client));
/* Bad number of parameters? */ /* Bad number of parameters? */
if(( Req->argc != 2 ) && ( Req->argc != 5 )) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command ); if ((Req->argc != 2) && (Req->argc != 5))
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command);
/* Invalid port number? */ /* Invalid port number? */
if( atoi( Req->argv[1] ) < 1 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command ); if (atoi(Req->argv[1]) < 1)
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command);
Log( LOG_NOTICE|LOG_snotice, "Got CONNECT command from \"%s\" for \"%s\".", Client_Mask( Client ), Req->argv[0]); Log(LOG_NOTICE | LOG_snotice,
"Got CONNECT command from \"%s\" for \"%s\".", Client_Mask(Client),
Req->argv[0]);
if( Req->argc == 2 ) if (Req->argc == 2) {
{
/* Connect configured server */ /* Connect configured server */
if( ! Conf_EnableServer( Req->argv[0], atoi( Req->argv[1] ))) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[0] ); if (!Conf_EnableServer
} (Req->argv[0], (UINT16) atoi(Req->argv[1])))
else return IRC_WriteStrClient(Client, ERR_NOSUCHSERVER_MSG,
{ Client_ID(Client),
Req->argv[0]);
} else {
/* Add server */ /* Add server */
if( ! Conf_AddServer( Req->argv[0], atoi( Req->argv[1] ), Req->argv[2], Req->argv[3], Req->argv[4] )) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[0] ); if (!Conf_AddServer
(Req->argv[0], (UINT16) atoi(Req->argv[1]), Req->argv[2],
Req->argv[3], Req->argv[4]))
return IRC_WriteStrClient(Client, ERR_NOSUCHSERVER_MSG,
Client_ID(Client),
Req->argv[0]);
} }
return CONNECTED; return CONNECTED;
} /* IRC_CONNECT */ } /* IRC_CONNECT */

View File

@ -14,7 +14,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: irc-write.c,v 1.19 2005/07/31 20:13:08 alex Exp $"; static char UNUSED id[] = "$Id: irc-write.c,v 1.20 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -400,7 +400,7 @@ va_dcl
GLOBAL void GLOBAL void
IRC_SetPenalty( CLIENT *Client, int Seconds ) IRC_SetPenalty( CLIENT *Client, time_t Seconds )
{ {
CONN_ID c; CONN_ID c;
@ -410,7 +410,8 @@ IRC_SetPenalty( CLIENT *Client, int Seconds )
if( Client_Type( Client ) == CLIENT_SERVER ) return; if( Client_Type( Client ) == CLIENT_SERVER ) return;
c = Client_Conn( Client ); c = Client_Conn( Client );
if( c > NONE ) Conn_SetPenalty( c, Seconds ); if (c > NONE)
Conn_SetPenalty(c, Seconds);
} /* IRC_SetPenalty */ } /* IRC_SetPenalty */

View File

@ -8,7 +8,7 @@
* (at your option) any later version. * (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information. * Please read the file COPYING, README and AUTHORS for more information.
* *
* $Id: irc-write.h,v 1.7 2005/03/19 18:43:49 fw Exp $ * $Id: irc-write.h,v 1.8 2006/05/10 21:24:01 alex Exp $
* *
* Sending IRC commands over the network (header) * Sending IRC commands over the network (header)
*/ */
@ -30,7 +30,7 @@ GLOBAL void IRC_WriteStrServersPrefixFlag PARAMS(( CLIENT *ExceptOf, CLIENT *Pre
GLOBAL bool IRC_WriteStrRelatedPrefix PARAMS(( CLIENT *Client, CLIENT *Prefix, bool Remote, char *Format, ... )); GLOBAL bool IRC_WriteStrRelatedPrefix PARAMS(( CLIENT *Client, CLIENT *Prefix, bool Remote, char *Format, ... ));
GLOBAL void IRC_SetPenalty PARAMS(( CLIENT *Client, int Seconds )); GLOBAL void IRC_SetPenalty PARAMS(( CLIENT *Client, time_t Seconds ));
#endif #endif

View File

@ -14,7 +14,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: irc.c,v 1.129 2006/04/23 10:37:27 fw Exp $"; static char UNUSED id[] = "$Id: irc.c,v 1.130 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -329,13 +329,15 @@ static char *
Option_String( CONN_ID Idx ) Option_String( CONN_ID Idx )
{ {
static char option_txt[8]; static char option_txt[8];
int options; UINT16 options;
options = Conn_Options( Idx ); options = Conn_Options(Idx);
strcpy( option_txt, "F" ); /* No idea what this means but the original ircd sends it ... */ strcpy(option_txt, "F"); /* No idea what this means, but the
* original ircd sends it ... */
#ifdef ZLIB #ifdef ZLIB
if( options & CONN_ZIP ) strcat( option_txt, "z" ); if(options & CONN_ZIP) /* zlib compression supported. */
strcat(option_txt, "z");
#endif #endif
return option_txt; return option_txt;

View File

@ -12,7 +12,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: ngircd.c,v 1.111 2005/11/21 16:31:30 alex Exp $"; static char UNUSED id[] = "$Id: ngircd.c,v 1.112 2006/05/10 21:24:01 alex Exp $";
/** /**
* @file * @file
@ -62,7 +62,7 @@ static void Signal_Handler PARAMS(( int Signal ));
static void Show_Version PARAMS(( void )); static void Show_Version PARAMS(( void ));
static void Show_Help PARAMS(( void )); static void Show_Help PARAMS(( void ));
static void Pidfile_Create PARAMS(( long )); static void Pidfile_Create PARAMS(( pid_t pid ));
static void Pidfile_Delete PARAMS(( void )); static void Pidfile_Delete PARAMS(( void ));
static void Fill_Version PARAMS(( void )); static void Fill_Version PARAMS(( void ));
@ -601,7 +601,7 @@ Pidfile_Delete( void )
* @param pid The process ID to be stored in this file. * @param pid The process ID to be stored in this file.
*/ */
static void static void
Pidfile_Create( long pid ) Pidfile_Create(pid_t pid)
{ {
int pidfd; int pidfd;
char pidbuf[64]; char pidbuf[64];
@ -620,13 +620,13 @@ Pidfile_Create( long pid )
return; return;
} }
len = snprintf( pidbuf, sizeof pidbuf, "%ld\n", pid ); len = snprintf(pidbuf, sizeof pidbuf, "%ld\n", (long)pid);
if (len < 0|| len < (int)sizeof pid) { if (len < 0 || len >= (int)sizeof pidbuf) {
Log( LOG_ERR, "Error converting pid"); Log( LOG_ERR, "Error converting pid");
return; return;
} }
if( write( pidfd, pidbuf, len) != len) if (write(pidfd, pidbuf, (size_t)len) != (ssize_t)len)
Log( LOG_ERR, "Can't write PID file (%s): %s", Conf_PidFile, strerror( errno )); Log( LOG_ERR, "Can't write PID file (%s): %s", Conf_PidFile, strerror( errno ));
if( close(pidfd) != 0 ) if( close(pidfd) != 0 )
@ -663,7 +663,7 @@ Setup_FDStreams( void )
static bool static bool
NGIRCd_getNobodyID(unsigned int *uid, unsigned int *gid ) NGIRCd_getNobodyID(uid_t *uid, gid_t *gid )
{ {
struct passwd *pwd; struct passwd *pwd;
@ -689,7 +689,7 @@ NGIRCd_Init( bool NGIRCd_NoDaemon )
struct passwd *pwd; struct passwd *pwd;
struct group *grp; struct group *grp;
int real_errno; int real_errno;
long pid; pid_t pid;
if (initialized) if (initialized)
return true; return true;
@ -749,7 +749,7 @@ NGIRCd_Init( bool NGIRCd_NoDaemon )
* connected to ther controlling terminal. Use "--nodaemon" * connected to ther controlling terminal. Use "--nodaemon"
* to disable this "daemon mode" (useful for debugging). */ * to disable this "daemon mode" (useful for debugging). */
if ( ! NGIRCd_NoDaemon ) { if ( ! NGIRCd_NoDaemon ) {
pid = (long)fork( ); pid = fork( );
if( pid > 0 ) { if( pid > 0 ) {
/* "Old" process: exit. */ /* "Old" process: exit. */
exit( 0 ); exit( 0 );

View File

@ -21,7 +21,7 @@
#ifdef ZEROCONF #ifdef ZEROCONF
static char UNUSED id[] = "$Id: rendezvous.c,v 1.7 2005/07/31 20:13:08 alex Exp $"; static char UNUSED id[] = "$Id: rendezvous.c,v 1.8 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -144,7 +144,7 @@ GLOBAL void Rendezvous_Exit( void )
} /* Rendezvous_Exit */ } /* Rendezvous_Exit */
GLOBAL bool Rendezvous_Register( char *Name, char *Type, unsigned int Port ) GLOBAL bool Rendezvous_Register( char *Name, char *Type, UINT16 Port )
{ {
/* Register new service */ /* Register new service */
@ -310,7 +310,8 @@ static void Registration_Reply_Handler( DNSServiceRegistrationReplyErrorType Err
strcpy( txt, "name conflict!" ); strcpy( txt, "name conflict!" );
break; break;
default: default:
sprintf( txt, "error code %ld!", (long)ErrCode ); snprintf(txt, sizeof txt, "error code %ld!",
(long)ErrCode);
} }
Log( LOG_INFO, "Can't register \"%s\" with Rendezvous: %s", s->Desc, txt ); Log( LOG_INFO, "Can't register \"%s\" with Rendezvous: %s", s->Desc, txt );
@ -347,7 +348,8 @@ static sw_result HOWL_API Registration_Reply_Handler( sw_discovery Session, sw_d
strcpy( txt, "name conflict!" ); strcpy( txt, "name conflict!" );
break; break;
default: default:
sprintf( txt, "error code %ld!", (long)Status ); snprintf(txt, sizeof txt, "error code %ld!",
(long)Status);
} }
Log( LOG_INFO, "Can't register \"%s\" with Rendezvous: %s", s->Desc, txt ); Log( LOG_INFO, "Can't register \"%s\" with Rendezvous: %s", s->Desc, txt );

View File

@ -8,7 +8,7 @@
* (at your option) any later version. * (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information. * Please read the file COPYING, README and AUTHORS for more information.
* *
* $Id: rendezvous.h,v 1.3 2005/07/08 16:18:39 alex Exp $ * $Id: rendezvous.h,v 1.4 2006/05/10 21:24:01 alex Exp $
* *
* "Rendezvous" functions (Header) * "Rendezvous" functions (Header)
*/ */
@ -23,7 +23,7 @@
GLOBAL void Rendezvous_Init( void ); GLOBAL void Rendezvous_Init( void );
GLOBAL void Rendezvous_Exit( void ); GLOBAL void Rendezvous_Exit( void );
GLOBAL bool Rendezvous_Register( char *Name, char *Type, unsigned int Port ); GLOBAL bool Rendezvous_Register( char *Name, char *Type, UINT16 Port );
GLOBAL bool Rendezvous_Unregister( char *Name ); GLOBAL bool Rendezvous_Unregister( char *Name );
GLOBAL void Rendezvous_UnregisterListeners( void ); GLOBAL void Rendezvous_UnregisterListeners( void );

View File

@ -14,7 +14,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: resolve.c,v 1.23 2006/02/08 15:24:10 fw Exp $"; static char UNUSED id[] = "$Id: resolve.c,v 1.24 2006/05/10 21:24:01 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -50,10 +50,11 @@ static bool register_callback PARAMS((RES_STAT *s, void (*cbfunc)(int, short)));
static char *Get_Error PARAMS(( int H_Error )); static char *Get_Error PARAMS(( int H_Error ));
#endif #endif
static int static pid_t
Resolver_fork(int *pipefds) Resolver_fork(int *pipefds)
{ {
int pid; pid_t pid;
if (pipe(pipefds) != 0) { if (pipe(pipefds) != 0) {
Log( LOG_ALERT, "Resolver: Can't create output pipe: %s!", strerror( errno )); Log( LOG_ALERT, "Resolver: Can't create output pipe: %s!", strerror( errno ));
return -1; return -1;
@ -77,11 +78,16 @@ Resolver_fork(int *pipefds)
} }
/**
* Resolve IP (asynchronous!).
*/
GLOBAL bool GLOBAL bool
Resolve_Addr( RES_STAT *s, struct sockaddr_in *Addr, int identsock, void (*cbfunc)(int, short)) Resolve_Addr(RES_STAT * s, struct sockaddr_in *Addr, int identsock,
void (*cbfunc) (int, short))
{ {
/* Resolve IP (asynchronous!). */ int pipefd[2];
int pid, pipefd[2]; pid_t pid;
assert(s != NULL); assert(s != NULL);
pid = Resolver_fork(pipefd); pid = Resolver_fork(pipefd);
@ -102,11 +108,15 @@ Resolve_Addr( RES_STAT *s, struct sockaddr_in *Addr, int identsock, void (*cbfun
} /* Resolve_Addr */ } /* Resolve_Addr */
/**
* Resolve hostname (asynchronous!).
*/
GLOBAL bool GLOBAL bool
Resolve_Name( RES_STAT *s, const char *Host, void (*cbfunc)(int, short)) Resolve_Name( RES_STAT *s, const char *Host, void (*cbfunc)(int, short))
{ {
/* Resolve hostname (asynchronous!). */ int pipefd[2];
int pid, pipefd[2]; pid_t pid;
assert(s != NULL); assert(s != NULL);
pid = Resolver_fork(pipefd); pid = Resolver_fork(pipefd);
@ -236,7 +246,7 @@ Do_ResolveName( const char *Host, int w_fd )
char ip[16]; char ip[16];
struct hostent *h; struct hostent *h;
struct in_addr *addr; struct in_addr *addr;
int len; size_t len;
Log_Resolver( LOG_DEBUG, "Now resolving \"%s\" ...", Host ); Log_Resolver( LOG_DEBUG, "Now resolving \"%s\" ...", Host );
@ -259,7 +269,7 @@ Do_ResolveName( const char *Host, int w_fd )
#endif #endif
/* Write result into pipe to parent */ /* Write result into pipe to parent */
len = strlen( ip ); len = strlen( ip );
if( write( w_fd, ip, len ) != len) { if ((size_t)write( w_fd, ip, len ) != len) {
Log_Resolver( LOG_CRIT, "Resolver: Can't write to parent: %s!", strerror( errno )); Log_Resolver( LOG_CRIT, "Resolver: Can't write to parent: %s!", strerror( errno ));
close( w_fd ); close( w_fd );
} }
@ -294,7 +304,7 @@ Get_Error( int H_Error )
static bool static bool
register_callback( RES_STAT *s, void (*cbfunc)(int, short)) register_callback( RES_STAT *s, void (*cbfunc)(int, short))
{ {
assert(cbfunc); assert(cbfunc != NULL);
assert(s != NULL); assert(s != NULL);
assert(s->resolver_fd >= 0); assert(s->resolver_fd >= 0);
@ -324,11 +334,15 @@ Resolve_Shutdown( RES_STAT *s)
} }
/**
* Read result of resolver sub-process from pipe
*/
GLOBAL size_t GLOBAL size_t
Resolve_Read( RES_STAT *s, void* readbuf, size_t buflen) Resolve_Read( RES_STAT *s, void* readbuf, size_t buflen)
{ {
/* Read result of resolver sub-process from pipe */ int err;
int err, bytes_read; ssize_t bytes_read;
assert(buflen > 0); assert(buflen > 0);
/* Read result from pipe */ /* Read result from pipe */
@ -353,7 +367,7 @@ Resolve_Read( RES_STAT *s, void* readbuf, size_t buflen)
return 0; return 0;
} }
return bytes_read; return (size_t)bytes_read;
} }
/* -eof- */ /* -eof- */

View File

@ -8,7 +8,7 @@
* (at your option) any later version. * (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information. * Please read the file COPYING, README and AUTHORS for more information.
* *
* $Id: resolve.h,v 1.12 2006/02/08 15:24:10 fw Exp $ * $Id: resolve.h,v 1.13 2006/05/10 21:24:02 alex Exp $
* *
* Asynchronous resolver (header) * Asynchronous resolver (header)
*/ */
@ -22,7 +22,7 @@
/* This struct must not be accessed directly */ /* This struct must not be accessed directly */
typedef struct _Res_Stat { typedef struct _Res_Stat {
int pid; /* PID of resolver process */ pid_t pid; /* PID of resolver process */
int resolver_fd; /* pipe fd for lookup result. */ int resolver_fd; /* pipe fd for lookup result. */
} RES_STAT; } RES_STAT;