[net.news.b] inews patch for aforementioned rare but serious bug

reid@glacier.ARPA (Brian Reid) (01/02/86)

Last week I posted mention of a rare but serious bug in inews that was
tickled when the system ran out of processes. I said the fix was trivial.
Several people asked for copies of the fix. Here is the way I fixed it. I'm
sure that there are better ways, but this works. There's no point adding the
customary code to wait for a fork, because the only reason it's forking is
to make it so the user doesn't have to wait.

*** ../../news2.10.2/src/inews.c	Fri Nov 15 11:43:08 1985
--- inews.c	Wed Dec 25 21:54:38 1985
***************
*** 374,380
  	/* Go into the background so the user can get on with his business. */
  	if (mode != PROC) {
  		i = fork();
! 		if (i != 0)
  			exit(0);
  	}
  #endif VMS

--- 374,380 -----
  	/* Go into the background so the user can get on with his business. */
  	if (mode != PROC) {
  		i = fork();
! 		if (i > 0)
  			exit(0);
  		if (i < 0) {
  		    perror("inews: fork failed for background");
***************
*** 376,381
  		i = fork();
  		if (i != 0)
  			exit(0);
  	}
  #endif VMS
  

--- 376,385 -----
  		i = fork();
  		if (i > 0)
  			exit(0);
+ 		if (i < 0) {
+ 		    perror("inews: fork failed for background");
+ 		    log("inews: fork failed for background--continuing", 0);
+ 		}
  	}
  #endif VMS
  	/* Do the actual insertion. */
***************
*** 378,384
  			exit(0);
  	}
  #endif VMS
- 
  	/* Do the actual insertion. */
  	insert();
  }

--- 382,387 -----
  		}
  	}
  #endif VMS
  	/* Do the actual insertion. */
  	insert();
  }
-- 
	Brian Reid	decwrl!glacier!reid
	Stanford	reid@SU-Glacier.ARPA