- new_ival.it_interval.tv_sec = socket->m_timeout / 1000; \
- new_ival.it_interval.tv_usec = (socket->m_timeout % 1000) * 1000; \
- setitimer(ITIMER_REAL, &new_ival, &old_ival); \
- old_timer_sig = signal(SIGALRM, SIG_DFL);
+ old_timer_sig = signal(SIGALRM, SIG_DFL); \
+ siginterrupt(SIGALRM, 1); \
+ new_ival.it_value.tv_sec = socket->m_timeout / 1000; \
+ new_ival.it_value.tv_usec = (socket->m_timeout % 1000) * 1000; \
+ new_ival.it_interval.tv_sec = 0; \
+ new_ival.it_interval.tv_usec = 0; \
+ setitimer(ITIMER_REAL, &new_ival, &old_ival);