diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-03-29 07:06:28 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-03-29 07:06:28 +0000 |
commit | 636eb0fc0e37c803fa0fd2ab020a48040c542171 (patch) | |
tree | d92a28f823b3b87cbbdfdc233659079823667a86 /pym | |
parent | 48ad3b8bfa45e4bf2e41ce01573abc478c3ef4c9 (diff) | |
download | portage-636eb0fc0e37c803fa0fd2ab020a48040c542171.tar.gz portage-636eb0fc0e37c803fa0fd2ab020a48040c542171.tar.bz2 portage-636eb0fc0e37c803fa0fd2ab020a48040c542171.zip |
Bug #215240 - Use an alarm signal to implement a 60 second timeout in
finalize() in case send_mail() blocks indefinitely. (trunk r9588)
svn path=/main/branches/2.1.2/; revision=9600
Diffstat (limited to 'pym')
-rw-r--r-- | pym/elog_modules/mod_mail_summary.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/pym/elog_modules/mod_mail_summary.py b/pym/elog_modules/mod_mail_summary.py index 50e8171df..7d34a4e0b 100644 --- a/pym/elog_modules/mod_mail_summary.py +++ b/pym/elog_modules/mod_mail_summary.py @@ -51,8 +51,19 @@ def _finalize(mysettings, items): mymessage = portage_mail.create_message(myfrom, myrecipient, mysubject, mybody, attachments=items.values()) + + def timeout_handler(signum, frame): + raise PortageException("Timeout in finalize() for elog system 'mail_summary'") + import signal + signal.signal(signal.SIGALRM, timeout_handler) + # Timeout after one minute in case send_mail() blocks indefinitely. + signal.alarm(60) + try: - portage_mail.send_mail(mysettings, mymessage) + try: + portage_mail.send_mail(mysettings, mymessage) + finally: + signal.alarm(0) except PortageException, e: writemsg("%s\n" % str(e), noiselevel=-1) |