Changeset 357 for trunk/src


Ignore:
Timestamp:
Sep 19, 2011, 8:27:45 PM (13 years ago)
Author:
katerina
Message:

Fix for ticket #263 (log correlation may not work).

Location:
trunk/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_log_check.c

    r349 r357  
    896896      status = (int) sh_string_read(s, logfile->fp, 8192);
    897897
    898       /* fprintf(stderr, "FIXME: %s\n", sh_string_str(s)); */
    899 
    900898      /* restore old signal handler
    901899       */
     
    11061104  long   offtime;
    11071105
    1108 
    11091106  /* timestamp - mktime is slooow, thus cache result
    11101107   */
     
    11311128      timestamp = mktime(btime);
    11321129      btime->tm_year = year_btime;
    1133 
    11341130      *old_time  = timestamp;
    11351131      memcpy(old_tm, btime, sizeof(struct tm));
  • trunk/src/sh_log_correlate.c

    r285 r357  
    5757{
    5858  struct sh_keep * keep = (struct sh_keep *) item;
     59
    5960  if (!keep)
    6061    return;
     
    125126      while (count < keepcount && keep)
    126127        {
    127           if ((now > keep->last) &&
     128          if ((now >= keep->last) &&
    128129              ((unsigned long)(now - keep->last) <= keep->delay))
    129130            {
     
    163164      SH_FREE(arr);
    164165    }
     166
    165167  return res;
    166168}
     
    172174  sh_string       * label;           /* label of match rule     */
    173175  pcre            * rule;            /* compiled regex for rule */
     176  time_t            reported;        /* last reported           */
    174177  struct sh_qeval * queue;           /* assigned queue          */
    175178  struct sh_mkeep * next;
     
    232235      mkeep->queue = rqueue;
    233236      mkeep->label = sh_string_new_from_lchar(splits[0], strlen(splits[0]));
     237      mkeep->reported = 0;
    234238      mkeep->next  = mkeep_list;
    235239      mkeep_list   = mkeep;
     
    297301                {
    298302                  sh_string * alias;
    299                   SH_MUTEX_LOCK(mutex_thread_nolog);
    300                   sh_error_handle (mkeep->queue->severity, FIL__, __LINE__, 0,
    301                                    MSG_LOGMON_COR, sh_string_str(mkeep->label),
    302                                    val);
    303 
    304                   alias = mkeep->queue->alias;
    305                   if (alias)
     303                  time_t      now = time(NULL);
     304
     305                  if ((mkeep->reported < now) &&
     306                      (60 < (now - mkeep->reported)))
    306307                    {
    307                       sh_error_mail (sh_string_str(alias),
    308                                      mkeep->queue->severity, FIL__, __LINE__, 0,
    309                                      MSG_LOGMON_COR, sh_string_str(mkeep->label),
    310                                      val);
     308                      mkeep->reported = now;
     309
     310                      SH_MUTEX_LOCK(mutex_thread_nolog);
     311                      sh_error_handle (mkeep->queue->severity, FIL__, __LINE__, 0,
     312                                       MSG_LOGMON_COR, sh_string_str(mkeep->label),
     313                                       val);
     314
     315                      alias = mkeep->queue->alias;
     316                      if (alias)
     317                        {
     318                          sh_error_mail (sh_string_str(alias),
     319                                         mkeep->queue->severity, FIL__, __LINE__, 0,
     320                                         MSG_LOGMON_COR, sh_string_str(mkeep->label),
     321                                         val);
     322                        }
     323                     
     324                      SH_MUTEX_UNLOCK(mutex_thread_nolog);
    311325                    }
    312                  
    313                   SH_MUTEX_UNLOCK(mutex_thread_nolog);
    314326                }
    315327              mkeep = mkeep->next;
  • trunk/src/sh_log_evalrule.c

    r337 r357  
    885885            if ( rule->flags & RFL_KEEP )
    886886              {
    887                 DEBUG("debug: rule %d matches (keep)\n", count);
     887                DEBUG("debug: rule %d matches (keep), timestamp = %lu\n", count, timestamp);
    888888                sh_keep_add(rule->label, rule->delay,
    889889                            timestamp == 0 ? time(NULL) : timestamp);
  • trunk/src/sh_log_parse_apache.c

    r326 r357  
    351351          struct tm btime;
    352352          char * ptr = NULL;
     353
     354          memset(&btime, '\0', sizeof(struct tm));
     355          btime.tm_isdst = -1;
    353356         
    354357          /* example: 01/Jun/2008:07:55:28 +0200 */
  • trunk/src/sh_log_parse_samba.c

    r292 r357  
    7676
    7777          memset(&btime, '\0', sizeof(struct tm));
     78          btime.tm_isdst = -1;
     79
    7880          ptr = strptime(sh_string_str(logline), format_1, &btime);
    7981
  • trunk/src/sh_log_parse_syslog.c

    r292 r357  
    9595
    9696      memset(&btime, '\0', sizeof(struct tm));
     97      btime.tm_isdst = -1;
    9798
    9899      /* This is RFC 3164.
Note: See TracChangeset for help on using the changeset viewer.