Author: msergeant
Date: Fri May 25 17:49:00 2007
New Revision: 744
Modified:
trunk/qpsmtpd-async
Log:
Use process_line instead of push_back_read which should be more efficient
Modified: trunk/qpsmtpd-async
==============================================================================
--- trunk/qpsmtpd-async (original)
+++ trunk/qpsmtpd-async Fri May 25 17:49:00 2007
@@ -36,7 +36,7 @@
my $PORT = 2525;
my $LOCALADDR = '0.0.0.0';
my $PROCS = 1;
-my $USER = 'smtpd'; # user to suid to
+my $USER = ''; # user to suid to
my $PAUSED = 0;
my $NUMACCEPT = 20;
my $ACCEPT_RSET = Danga::Socket->AddTimer(30, \&reset_num_accept);
@@ -76,7 +76,7 @@
# detaint the commandline
if ($PORT =~ /^(\d+)$/) { $PORT = $1 } else { &help }
if ($LOCALADDR =~ /^([\d\w\-.]+)$/) { $LOCALADDR = $1 } else { &help }
-if ($USER =~ /^([\w\-]+)$/) { $USER = $1 } else { &help }
+if ($USER =~ /^([\w\-]+)$/) { $USER = $1 }
if ($PROCS =~ /^(\d+)$/) { $PROCS = $1 } else { &help }
sub force_poll {
@@ -192,15 +192,17 @@
IO::Handle::blocking($CONFIG_SERVER, 0);
binmode($CONFIG_SERVER, ':raw');
- # Drop priviledges
- my (undef, undef, $quid, $qgid) = getpwnam $USER or
- die "unable to determine uid/gid for $USER\n";
- $) = "";
- POSIX::setgid($qgid) or
- die "unable to change gid: $!\n";
- POSIX::setuid($quid) or
- die "unable to change uid: $!\n";
- $> = $quid;
+ if ($USER) {
+ # Drop priviledges
+ my (undef, undef, $quid, $qgid) = getpwnam $USER or
+ die "unable to determine uid/gid for $USER\n";
+ $) = "";
+ POSIX::setgid($qgid) or
+ die "unable to change gid: $!\n";
+ POSIX::setuid($quid) or
+ die "unable to change uid: $!\n";
+ $> = $quid;
+ }
# Load plugins here
my $plugin_loader = Qpsmtpd::SMTP->new();
@@ -292,7 +294,7 @@
return 1;
}
- $client->push_back_read("Connect\n");
+ $client->process_line("Connect\n");
$client->watch_read(1);
return 1;
}