+ if ((so->so_options & SO_NEWFDONCONN) == 0) {
+ struct socket *nso = so->so_q;
+ (void) soqremque(nso, 1);
+ soclose(so, 1);
+ fp->f_socket = nso;
+ nso->so_q = 0;
+ so = nso;
+ goto ret;
+ }
+ if (ufalloc() < 0) {
+ splx(s);
+ return;
+ }
+ fp = falloc();
+ if (fp == 0) {
+ u.u_ofile[u.u_r.r_val1] = 0;