Re: Closing a socket

From: Maksim (Max) Krasnyanskiy (maxk@qualcomm.com)
Date: Thu Jul 18 2002 - 14:50:48 EST


> > I have implemented a new socket address family and have noted that
> > from a multi-threaded application, if a thread calls close(fd) while a
> > second thread has a blocking read outstanding, the sockets release() is not
> > called. Is this correct? How can one unblock the read in order to do the
> > close.
You might want to implement shutdown(). Thread #1 will call shutdown()
instead of
the close(). Your shutdown() implementation can do something like:
         sk->shutdown |= RCV_SHUTDOWN;
         sk->state_change(sk);
So, reader will wakeup, check shutdown mask and return error because socket was
shut down.

Max

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Jul 23 2002 - 22:00:27 EST