Changeset 270


Ignore:
Timestamp:
Jan 8, 2010, 6:32:36 PM (15 years ago)
Author:
katerina
Message:

Fix bug with tracking of client reload status (ticket #188).

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/docs/Changelog

    r269 r270  
     12.6.2:
     2        * fix bug in the server function to probe for necessity
     3          of configuration reload for client
     4
    152.6.1b (23-12-2009):
    26        * fix missing include for sh_inotify.h in sh_inotify.c
  • trunk/src/sh_forward.c

    r264 r270  
    36303630                    {
    36313631                      TPT((0, FIL__, __LINE__, _("msg=<update status>\n")));
    3632                       if (0 != sl_strcmp(conn->buf,
    3633                                          _("Runtime configuration reloaded")))
     3632                      if (NULL != sl_strstr(conn->buf,
     3633                                            _("Runtime configuration reloaded")))
    36343634                        {
    36353635                          sh_socket_add2reload (conn->client_entry->hostname);
  • trunk/src/sh_socket.c

    r265 r270  
    2323 * #define SH_DEBUG_SOCKET
    2424 */
     25
    2526#if defined(SH_WITH_SERVER) && defined(__linux__)
    2627#define _GNU_SOURCE
     
    180181      if (0 == sl_strcmp(new->clt, clt))
    181182        {
     183#ifdef SH_DEBUG_SOCKET
     184          fprintf(stderr, "add2reload: time reset for %s\n", clt);
     185#endif
    182186          sl_strlcpy (new->clt, clt, SH_MAXMSGLEN);
    183187          new->cti = time(NULL);
     
    188192
    189193  new = SH_ALLOC(sizeof(struct reload_cmd));
     194#ifdef SH_DEBUG_SOCKET
     195  fprintf(stderr, "add2reload: time set for %s\n", clt);
     196#endif
    190197  sl_strlcpy (new->clt, clt, SH_MAXMSGLEN);
    191198  new->cti = time(NULL);
     
    202209static void sh_socket_add2list (struct socket_cmd * in);
    203210
    204 static void sh_socket_probe4reload (void)
     211void sh_socket_probe4reload (void)
    205212{
    206213  struct reload_cmd  * new;
     
    215222  struct stat buf;
    216223
     224#ifdef SH_DEBUG_SOCKET
     225  fprintf(stderr, "PROBE\n");
     226#endif
     227
    217228  for (item = (client_t *) zAVLFirst(&avlcursor, all_clients); item;
    218229       item = (client_t *) zAVLNext(&avlcursor))
    219230    {
     231#ifdef SH_DEBUG_SOCKET
     232      fprintf(stderr, "%s %d\n", item->hostname, (int)item->status_now);
     233#endif
     234
    220235      if (item->status_now != CLT_INACTIVE)
    221236        {
    222237          file = get_client_conf_file (item->hostname, &dummy);
    223238
     239#ifdef SH_DEBUG_SOCKET
     240          fprintf(stderr, "%s\n", file);
     241#endif
    224242          if (0 == stat (file, &buf))
    225243            {
     
    227245              while (new)
    228246                {
     247#ifdef SH_DEBUG_SOCKET
     248                  fprintf(stderr, "%s <> %s\n", new->clt, item->hostname);
     249#endif
    229250                  if (0 == sl_strcmp(new->clt, item->hostname))
    230251                    {
     252#ifdef SH_DEBUG_SOCKET
     253                      fprintf(stderr, "%lu <> %lu\n",
     254                              (unsigned long) buf.st_mtime,
     255                              (unsigned long)new->cti);
     256#endif
    231257                      if (buf.st_mtime > new->cti)
    232258                        {
     
    819845      if (sl_strlen(cmd) >= SH_MAXMSGLEN)
    820846        {
     847#ifdef SH_DEBUG_SOCKET
     848          fprintf (stderr, "Server: command too long: %s\n", cmd);
     849#endif
    821850          sh_error_handle((-1), FIL__, __LINE__, errno, MSG_E_SUBGEN,
    822851                          _("Bad message format: command too long"),
     
    827856      else if (sl_strlen(clt) >= SH_MAXMSGLEN)
    828857        {
     858#ifdef SH_DEBUG_SOCKET
     859          fprintf (stderr, "Server: hostname too long: %s\n", clt);
     860#endif
    829861          sh_error_handle((-1), FIL__, __LINE__, errno, MSG_E_SUBGEN,
    830862                          _("Bad message format: hostname too long"),
     
    836868          cmd[2] == 'S' && cmd[3] == 'T')
    837869        {
     870#ifdef SH_DEBUG_SOCKET
     871          fprintf (stderr, "Server: list %s\n", clt);
     872#endif
    838873          goto list_all;
    839874        }
     
    841876          cmd[2] == 'O' && cmd[3] == 'B' && cmd[4] == 'E')
    842877        {
     878#ifdef SH_DEBUG_SOCKET
     879          fprintf (stderr, "Server: probe start %s\n", clt);
     880#endif
    843881          sh_socket_probe4reload();
     882#ifdef SH_DEBUG_SOCKET
     883          fprintf (stderr, "Server: probe done  %s\n", clt);
     884#endif
    844885          cmd[0] = 'L'; cmd[1] = 'I'; cmd[2] = 'S'; cmd[3] = 'T';cmd[4] = '\0';
    845886          goto list_all;
     
    851892  else
    852893    {
     894#ifdef SH_DEBUG_SOCKET
     895      fprintf (stderr, "Server: bad message\n");
     896#endif
    853897      sh_error_handle((-1), FIL__, __LINE__, errno, MSG_E_SUBGEN,
    854898                      _("Bad message format"),
     
    9651009  sl_strlcpy (new->cmd, in->cmd, sizeof(new->cmd));
    9661010  sl_strlcpy (new->clt, in->clt, sizeof(new->clt));
     1011#ifdef SH_DEBUG_SOCKET
     1012  fprintf(stderr, "add2list: time set for %s\n", new->clt);
     1013#endif
    9671014  (void) sh_unix_time(0, new->cti, sizeof(new->cti));
    9681015  new->next = cmdlist;
     
    9831030          sl_strlcpy (new->cmd, in->cmd, sizeof(new->cmd));
    9841031          sl_strlcpy (new->clt, in->clt, sizeof(new->clt));
     1032#ifdef SH_DEBUG_SOCKET
     1033          fprintf(stderr, "add2run: time reset for %s\n", new->clt);
     1034#endif
    9851035          (void) sh_unix_time(0, new->cti, sizeof(new->cti));
    9861036          return;
     
    9921042  sl_strlcpy (new->cmd, in->cmd, sizeof(new->cmd));
    9931043  sl_strlcpy (new->clt, in->clt, sizeof(new->clt));
     1044#ifdef SH_DEBUG_SOCKET
     1045  fprintf(stderr, "add2run: time set for %s\n", new->clt);
     1046#endif
    9941047  (void) sh_unix_time(0, new->cti, sizeof(new->cti));
    9951048  new->next = runlist;
Note: See TracChangeset for help on using the changeset viewer.