[comp.unix.questions] Interrupt socket

pcb@gator.cacs.usl.edu (Peter C. Bahrs) (02/20/90)

I received excellent information regarding socket information...here is
another dilemma.  I have a server with two sockets, A for normal
reading and B, interrupt driven.  While processing A's message, a jump
to the signal handler for B occurs when a message is sent on B.  Fine...
But I get another interrupt when, (..I believe), the socket is closed or
dissappears from the system, which causes a false accept. 
Below is the code fragment I used to set the interrupt stuff for B:

   if (setsockopt (sd->socket, SOL_SOCKET, SO_DEBUG, 0, 0) < 0)
      {
      *error = CISI;
      fprintf (stderr, "ciServerInit: failed on setsockopt (%ld)\n",*error);
      return;
      }

   /* wait for requests...system dependendent 5!!! */
   listen (sd->socket,15);


   if (sd->func != NULL)
      {
      /* set up the interrupt stuff */
      signal (SIGIO, sd->func);  /* this is the void func() */
      fcntl(sd->socket,F_SETFL,FASYNC);
      fcntl(sd->socket,F_SETOWN,getpid());
      }
Questions: 
Can I shut off the signal before the shutdown/close and re-start it?
How can I ignore the system deletion of the socket interrupt?

/*------------Thanks in advance...---------------------------------------+
| Peter C. Bahrs                                                         |
| The USL-NASA Project                                                   |
| Center For Advanced Computer Studies   INET  pcb@gator.cacs.sl.edu     |
| University of Southwestern Louisiana   ...!uunet!dalsqnt!gator!pcb     |
| Lafayette, LA 70504                                                    |
+-----------------------------------------------------------------------*/