#include <ac/unistd.h>
#include <ac/wait.h>
+#ifdef LDAP_PROCTITLE
+#include <ac/setproctitle.h>
+#endif
+
#include <quipu/commonarg.h>
#include <quipu/ds_error.h>
#include "lber.h"
+#include "../../libraries/liblber/lber-int.h" /* get struct sockbuf */
#include "ldap.h"
#include "common.h"
+#include "lutil.h" /* Get lutil_detach() */
#ifdef HAVE_TCPD
#include <tcpd.h>
#endif /* TCP_WRAPPERS */
void log_and_exit();
-static set_socket();
-static do_queries();
+static int set_socket();
+static void do_queries();
static RETSIGTYPE wait4child();
#ifdef LDAP_CONNECTIONLESS
-static udp_init();
+static int udp_init();
#endif
#ifdef LDAP_DEBUG
extern char Versionstr[];
-static usage( name )
-char *name;
+static void
+usage( char *name )
{
fprintf( stderr, "usage: %s [-d debuglvl] [-p port] [-l] [-c dsa] [-r referraltimeout]", name );
#ifdef LDAP_CONNECTIONLESS
fprintf( stderr, "\n" );
}
+int
main (argc, argv)
int argc;
char **argv;
int dsapargc;
char **dsapargv;
RETSIGTYPE wait4child();
-#ifndef NOSETPROCTITLE
+#ifdef LDAP_PROCTITLE
char title[80];
- extern char **Argv;
- extern int Argc;
#endif
extern char *optarg;
extern int optind;
}
#endif /* FD_SETSIZE */
-#ifndef NOSETPROCTITLE
+#if defined(LDAP_PROCTITLE) && !defined( HAVE_SETPROCTITLE )
/* for setproctitle */
Argv = argv;
Argc = argc;
* that have exited
*/
if (!RunFromInetd) {
-#ifndef NOSETPROCTITLE
+#ifdef LDAP_PROCTITLE
setproctitle( "initializing" );
#endif
#ifndef VMS
- (void) detach();
+# ifdef LDAP_DEBUG
+ lutil_detach( ldap_debug, 1 );
+# else
+ lutil_detach( 0, 1 );
+# endif
#endif
(void) SIGNAL( SIGCHLD, (void *) wait4child );
(void) SIGNAL( SIGINT, (void *) log_and_exit );
(void) get_syntaxes();
if (RunFromInetd) {
len = sizeof( socktype );
- getsockopt( ns, SOL_SOCKET, SO_TYPE, &socktype, &len );
+ getsockopt( ns, SOL_SOCKET, SO_TYPE, (char *)&socktype, &len );
if ( socktype == SOCK_DGRAM ) {
#ifdef LDAP_CONNECTIONLESS
Debug( LDAP_DEBUG_ARGS,
inet_ntoa( from.sin_addr ) );
}
-#ifndef NOSETPROCTITLE
+#ifdef LDAP_PROCTITLE
sprintf( title, "%s %d\n", hp == NULL ?
inet_ntoa( from.sin_addr ) : hp->h_name, myport );
setproctitle( title );
* if we are doing CLDAP as well, handle those requests on the fly
*/
-#ifndef NOSETPROCTITLE
+#ifdef LDAP_PROCTITLE
#ifdef LDAP_CONNECTIONLESS
sprintf( title, "listening %s/%s %d", do_tcp ? "tcp" : "",
do_udp ? "udp" : "", myport );
#ifdef VMS
/* This is for debug on terminal on VMS */
close( tcps );
-#ifndef NOSETPROCTITLE
+#ifdef LDAP_PROCTITLE
setproctitle( hp == NULL ? inet_ntoa( from.sin_addr ) :
hp->h_name );
#endif
switch( pid = fork() ) {
case 0: /* child */
close( tcps );
-#ifndef NOSETPROCTITLE
+#ifdef LDAP_PROCTITLE
sprintf( title, "%s (%d)\n", hp == NULL ?
inet_ntoa( from.sin_addr ) : hp->h_name,
myport );
/* NOT REACHED */
}
-static
+static void
do_queries(
int clientsock,
int udp /* is this a UDP (CLDAP) request? */
)
{
fd_set readfds;
- int rc, i;
+ int rc;
struct timeval timeout;
Sockbuf sb;
#ifdef LDAP_CONNECTIONLESS
#ifdef LDAP_DEBUG
if ( ldap_debug & LDAP_DEBUG_CONNS ) {
+ int i;
Debug( LDAP_DEBUG_CONNS, "FDLIST:", 0, 0, 0 );
for ( i = 0; i < dtblsize; i++ ) {
if ( FD_ISSET( i, &readfds ) ) {
/* NOT REACHED */
}
-static set_socket(
+static int
+set_socket(
int port,
int udp /* UDP port? */
)