|
a/src/internfile/mh_exec.cpp |
|
b/src/internfile/mh_exec.cpp |
|
... |
|
... |
58 |
LOGDEB2(("MHExec:newData(%d)\n", n));
|
58 |
LOGDEB2(("MHExec:newData(%d)\n", n));
|
59 |
if (m_filtermaxseconds > 0 &&
|
59 |
if (m_filtermaxseconds > 0 &&
|
60 |
time(0L) - m_start > m_filtermaxseconds) {
|
60 |
time(0L) - m_start > m_filtermaxseconds) {
|
61 |
LOGERR(("MimeHandlerExec: filter timeout (%d S)\n",
|
61 |
LOGERR(("MimeHandlerExec: filter timeout (%d S)\n",
|
62 |
m_filtermaxseconds));
|
62 |
m_filtermaxseconds));
|
63 |
CancelCheck::instance().setCancel();
|
63 |
throw HandlerTimeout();
|
64 |
}
|
64 |
}
|
65 |
// If a cancel request was set by the signal handler (or by us
|
65 |
// If a cancel request was set by the signal handler (or by us
|
66 |
// just above), this will raise an exception. Another approach
|
66 |
// just above), this will raise an exception. Another approach
|
67 |
// would be to call ExeCmd::setCancel().
|
67 |
// would be to call ExeCmd::setCancel().
|
68 |
CancelCheck::instance().checkCancel();
|
68 |
CancelCheck::instance().checkCancel();
|
|
... |
|
... |
115 |
mexec.setrlimit_as(m_filtermaxmbytes);
|
115 |
mexec.setrlimit_as(m_filtermaxmbytes);
|
116 |
|
116 |
|
117 |
int status;
|
117 |
int status;
|
118 |
try {
|
118 |
try {
|
119 |
status = mexec.doexec(cmd, myparams, 0, &output);
|
119 |
status = mexec.doexec(cmd, myparams, 0, &output);
|
|
|
120 |
} catch (HandlerTimeout) {
|
|
|
121 |
LOGERR(("MimeHandlerExec: handler timeout\n"));
|
|
|
122 |
status = 0x110f;
|
120 |
} catch (CancelExcept) {
|
123 |
} catch (CancelExcept) {
|
121 |
LOGERR(("MimeHandlerExec: cancelled\n"));
|
124 |
LOGERR(("MimeHandlerExec: cancelled\n"));
|
122 |
status = 0x110f;
|
125 |
status = 0x110f;
|
123 |
}
|
126 |
}
|
124 |
|
127 |
|