~mingqiangzhuang/libmemcached/icc-memslap

« back to all changes in this revision

Viewing changes to clients/ms_sigsegv.c

  • Committer: Brian Aker
  • Date: 2010-01-19 04:59:05 UTC
  • mfrom: (753.1.1 libmemcached)
  • Revision ID: brian@gaz-20100119045905-e6vjp6lcp0b7bymi
Merge memslap

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
  abort();
45
45
}
46
46
 
47
 
/* signal pipe reaches, this function will run */
48
 
static void ms_signal_pipe(int signum, siginfo_t *info, void *ptr)
49
 
{
50
 
  UNUSED_ARGUMENT(signum);
51
 
  UNUSED_ARGUMENT(info);
52
 
  UNUSED_ARGUMENT(ptr);
53
 
 
54
 
  pthread_mutex_lock(&ms_global.quit_mutex);
55
 
  fprintf(stderr, "\tMemslap encountered a server error. Quitting...\n");
56
 
  fprintf(stderr, "\tError info: SIGPIPE captured (from write?)\n");
57
 
  fprintf(stderr,
58
 
          "\tProbably a socket I/O error when the server is down.\n");
59
 
  pthread_mutex_unlock(&ms_global.quit_mutex);
60
 
  exit(1);
61
 
} /* ms_signal_pipe */
62
 
 
63
 
 
64
47
/* signal int reaches, this function will run */
65
48
static void ms_signal_int(int signum, siginfo_t *info, void *ptr)
66
49
{
104
87
 */
105
88
int ms_setup_sigpipe(void)
106
89
{
107
 
  struct sigaction action_2;
108
 
 
109
 
  memset(&action_2, 0, sizeof(action_2));
110
 
  action_2.sa_sigaction= ms_signal_pipe;
111
 
  action_2.sa_flags= SA_SIGINFO;
112
 
  if (sigaction(SIGPIPE, &action_2, NULL) < 0)
113
 
  {
114
 
    perror("sigaction");
115
 
    return 0;
116
 
  }
 
90
  /* ignore the SIGPIPE signal */
 
91
  signal(SIGPIPE, SIG_IGN);
117
92
 
118
93
  return -1;
119
94
} /* ms_setup_sigpipe */