Changeset 492 for trunk


Ignore:
Timestamp:
Nov 1, 2015, 12:55:04 AM (9 years ago)
Author:
katerina
Message:

Fix for ticket #388 (logfile rotation).

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/docs/Changelog

    r491 r492  
    114.1.1:
     2        * fix problem with rotated logfiles when content is always constant,
     3        i.e. checksum does not change (reported by Bond).
    24        * fix problem with baseline update on FreeBSD and probably other
    35        non-GNU/Linux systems (reported by L.Vasiliev)
  • trunk/src/sh_hash.c

    r488 r492  
    18801880  char * linkComp;
    18811881  int  maxcomp;
     1882  volatile int  checksum_flag = 0;
    18821883
    18831884  char change_code[16];
     
    19631964       (theFile->check_flags & MODI_CHK) != 0)
    19641965    {
     1966      checksum_flag = 1;
     1967     
    19651968      if ((theFile->check_flags & MODI_SGROW) == 0)
    19661969        {
     
    20532056       (theFile->check_flags & MODI_INO) != 0)
    20542057    {
    2055       modi_mask |= MODI_INO;
    2056       change_code[3] = 'I';
    2057       TPT ((0, FIL__, __LINE__, _("mod=<inode>")));
     2058      if ((theFile->check_flags & MODI_SGROW) == 0)
     2059        {
     2060          modi_mask |= MODI_INO;
     2061          change_code[3] = 'I';
     2062          TPT ((0, FIL__, __LINE__, _("mod=<inode>")));
     2063        }
     2064      else
     2065        {
     2066          /* growing log, checksum ok but inode changed
     2067           */
     2068          if (checksum_flag == 0)
     2069            {
     2070              if (S_FALSE == sh_check_rotated_log (theFile->fullpath, (UINT64) p->theFile.size,
     2071                                                   (UINT64) p->theFile.ino, p->theFile.checksum,
     2072                                                   p->theFile.checkflags))
     2073                {
     2074                  modi_mask |= MODI_INO;
     2075                  change_code[3] = 'I';
     2076                  TPT ((0, FIL__, __LINE__, _("mod=<inode>")));
     2077                }
     2078              else
     2079                {
     2080                  /* logfile has been rotated */
     2081                  p->theFile.size  = theFile->size;
     2082                  p->theFile.ino   = theFile->ino;
     2083                  sl_strlcpy(p->theFile.checksum, fileHash, KEY_LEN+1);
     2084                }
     2085            }
     2086          else
     2087            {
     2088              modi_mask |= MODI_INO;
     2089              change_code[3] = 'I';
     2090              TPT ((0, FIL__, __LINE__, _("mod=<inode>")));
     2091            }
     2092        }
    20582093    }
    20592094   
Note: See TracChangeset for help on using the changeset viewer.