public void processMessage() {
   try {
     if (m_session.hasResponder()) {
       m_session.next(m_message);
     } else {
       try {
         final String msgType = m_message.getHeader().getString(MsgType.FIELD);
         if (msgType.equals(MsgType.LOGOUT)) {
           m_session.next(m_message);
         }
       } catch (FieldNotFound ex) {
       }
     }
   } catch (Throwable e) {
     LogUtil.logThrowable(m_session, e.getMessage(), e);
   }
 }
 public void run() {
   try {
     for (Session session : sessions.values()) {
       try {
         session.next();
       } catch (IOException e) {
         logError(session.getSessionID(), null, "Error in session timer processing", e);
       }
     }
   } catch (Throwable e) {
     log.error("Error during timer processing", e);
   }
 }