diff options
author | Florent Xicluna <florent.xicluna@gmail.com> | 2011-10-20 21:14:36 (GMT) |
---|---|---|
committer | Florent Xicluna <florent.xicluna@gmail.com> | 2011-10-20 21:14:36 (GMT) |
commit | 407cfd1a269845208786bb9e7074e9990fa96dd7 (patch) | |
tree | bb8743531200bb1d6bab38a2ca6f0e2b8f16ac85 /Lib/smtpd.py | |
parent | 0cc147e9a2e05544ff00a1383891a1da0ef2a894 (diff) | |
parent | 711f87ca7d8b455feb450b2fb66a3d264fd603ce (diff) | |
download | cpython-407cfd1a269845208786bb9e7074e9990fa96dd7.zip cpython-407cfd1a269845208786bb9e7074e9990fa96dd7.tar.gz cpython-407cfd1a269845208786bb9e7074e9990fa96dd7.tar.bz2 |
Issue #9168: now smtpd is able to bind privileged port.
Diffstat (limited to 'Lib/smtpd.py')
-rwxr-xr-x | Lib/smtpd.py | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/Lib/smtpd.py b/Lib/smtpd.py index 32f45ae..df835b2 100755 --- a/Lib/smtpd.py +++ b/Lib/smtpd.py @@ -678,6 +678,16 @@ def parseargs(): if __name__ == '__main__': options = parseargs() # Become nobody + classname = options.classname + if "." in classname: + lastdot = classname.rfind(".") + mod = __import__(classname[:lastdot], globals(), locals(), [""]) + classname = classname[lastdot+1:] + else: + import __main__ as mod + class_ = getattr(mod, classname) + proxy = class_((options.localhost, options.localport), + (options.remotehost, options.remoteport)) if options.setuid: try: import pwd @@ -691,16 +701,6 @@ if __name__ == '__main__': if e.errno != errno.EPERM: raise print('Cannot setuid "nobody"; try running with -n option.', file=sys.stderr) sys.exit(1) - classname = options.classname - if "." in classname: - lastdot = classname.rfind(".") - mod = __import__(classname[:lastdot], globals(), locals(), [""]) - classname = classname[lastdot+1:] - else: - import __main__ as mod - class_ = getattr(mod, classname) - proxy = class_((options.localhost, options.localport), - (options.remotehost, options.remoteport)) try: asyncore.loop() except KeyboardInterrupt: |