• unknown's avatar
    Fix wait_timeout (and kill) handling on Mac OS X by cleaning up how · e61dea1b
    unknown authored
    signal handlers are set up, the blocking flags for sockets are set,
    and which thread-related functions are used. (Bug #8731)
    
    
    configure.in:
      Fix flags for Darwin 6 and later. Simplify Darwin 7-9 blocks to simply
      be a catch-all for *darwin* so that future Darwin releases get the
      latest flags.
    include/config-win.h:
      Define my_sigset() instead of sigset().
    include/my_pthread.h:
      Define my_sigset() instead of trying to monkey with sigset(), and favor
      an implementation based on sigaction().
    mysys/my_pthread.c:
      Remove pthread_signal(), which is identical to the new my_sigset() macro.
    mysys/thr_alarm.c:
      Use my_sigset() instead of sigset().
    sql/mysqld.cc:
      Use my_sigset() instead of signal() and sigset(), remove unnecessary
      definition of sigset on __amiga__. Remove unused THREAD_SPECIFIC_SIGPIPE
      code.
      
      A future improvement would be to re-assess the use of sigaction() here
      and convert its usage to use my_sigset().
    vio/vio.c:
      Always call fcntl() to initialize flags of socket in initialization to
      avoid problems on systems that don't report the flags on a socket
      correctly right after it has been returned from accept(), such as
      FreeBSD, Mac OS X, and possibly other BSD-derived systems.
    vio/viosocket.c:
      If fcntl() fails in vio_blocking(), restore the flags stored in the
      vio struct.
    mysql-test/r/wait_timeout.result:
      New BitKeeper file ``mysql-test/r/wait_timeout.result''
    mysql-test/t/wait_timeout-master.opt:
      New BitKeeper file ``mysql-test/t/wait_timeout-master.opt''
    mysql-test/t/wait_timeout.test:
      New BitKeeper file ``mysql-test/t/wait_timeout.test''
    e61dea1b
my_pthread.c 14.5 KB