[net.bugs.4bsd] Have Unix-domain datagrams been fixed yet?

lwall@sdcrdcf.UUCP (Larry Wall) (09/16/85)

I think we've been running into the old problem with Unix-domain datagrams
crashing the system.  We'd really like to use them in an application here.
We're getting m_getclr panics and I wonder if anybody's fixed this yet.
Could some kind soul tell me what the sequence of events is, and whether
a fix is possible?  Is it fixed in 4.3?

Thanks.

Larry Wall
{allegra,burdvax,cbosgd,hplabs,ihnp4,sdcsvax}!sdcrdcf!lwall

steveh@hammer.UUCP (Stephen Hemminger) (09/23/85)

In article <2345@sdcrdcf.UUCP> lwall@sdcrdcf.UUCP (Larry Wall) writes:
>I think we've been running into the old problem with Unix-domain datagrams
>crashing the system.  We'd really like to use them in an application here.

>We're getting m_getclr panics and I wonder if anybody's fixed this yet.
>Could some kind soul tell me what the sequence of events is, and whether
>a fix is possible?  Is it fixed in 4.3?
Yes, yes, yes. fixes follow.

>Thanks.
>Larry Wall
>{allegra,burdvax,cbosgd,hplabs,ihnp4,sdcsvax}!sdcrdcf!lwall

Caveat:Your line numbers will vary.
*** sys/uipc_usrreq.c	Mon Sep 23 08:40:43 1985
--- sys/uipc_usrreq.c.old	Mon Sep 23 08:40:53 1985
***************
*** 168,183
  				if (error)
  					break;
  			}
! 			/*
! 			 * Put data address and rights on receiver's queue.
! 			 * There's no record of source socket's
! 			 * name, so send null name for the moment.
! 			 * 
! 			 * If no space (returns 0), then m will be
! 			 * freed later.
! 			 */
! 			if (sbappendaddr(&so2->so_rcv, &sun_noname,
! 				m, rights) != 0) {
  				sbwakeup(&so2->so_rcv);
  				m = 0;
  			}

--- 164,176 -----
  				if (error)
  					break;
  			}
! 			if (sbspace(&so2->so_rcv) > 0) {
! 				/*
! 				 * There's no record of source socket's
! 				 * name, so send null name for the moment.
! 				 */
! 				(void) sbappendaddr(&so2->so_rcv,
! 				    &sun_noname, m, rights);
  				sbwakeup(&so2->so_rcv);
  				m = 0;
  			}
---
P.s: If you want the changes to make Out of Band Data work in
     unix domain (this isn't in 4.3). send me a note.