home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume14 / nntp1.5 / patch1 < prev    next >
Internet Message Format  |  1988-04-29  |  9KB

  1. From @uunet.uu.net:sob%bcm.tmc.edu@tmc.edu Fri Apr 29 20:17:10 1988
  2. Received: from BBN.COM (bbn.com.ARPA) by pineapple.bbn.com id AA29351; Fri, 29 Apr 88 20:17:02 edt
  3. Received: from uunet.uu.net by BBN.COM id aa20003; 29 Apr 88 20:11 EDT
  4. Received: from TMC.EDU by uunet.UU.NET (5.54/1.14) 
  5.     id AA00944; Fri, 29 Apr 88 20:09:51 EDT
  6. Received: by TMC.EDU (AA17440); Fri, 29 Apr 88 19:09:39 CDT
  7. Path: bcm!bcm.tmc.edu!sob
  8. From: Stan Barber <sob%bcm.tmc.edu@tmc.edu>
  9. Newsgroups: news.software.nntp
  10. Subject: OFFICIAL PATCH #1 to nntp 1.5
  11. Summary: System V & Excelan Fixes
  12. Keywords: nntp official patch
  13. Message-Id: <1074@gazette.bcm.tmc.edu>
  14. Date: 29 Apr 88 08:13:43 GMT
  15. Sender: usenet%bcm.tmc.edu@tmc.edu
  16. Reply-To: Stan Barber <sob%bcm.tmc.edu@tmc.edu>
  17. Organization: Baylor College of Medicine, Houston, TX
  18. Lines: 350
  19. Apparently-To: source-patches@uunet.uu.net
  20. Status: R
  21.  
  22. Index: nntp.1.5/server
  23.  
  24. Description: 
  25.     [ Bugs 1 and 2 were reported by apt@oak.uh.edu. Thanks, Allan!]
  26.     1. If you are using nntp 1.5 on System V (with or without Excelan), you
  27.     will notice the creatiion of zombie processes. This is due
  28.     to the need for the correct handling of SIGCLD.
  29.     2. FASTFORK does not work on System V. System V compilers do not
  30.     do the same type of initialization of data spaces that BSD compilers
  31.     do.
  32.     3. Many System V systems do not have conditionalized include files.
  33.     Including them more than once can cause havok.
  34.     4. Many System V systems do not have u_char defined in <sys/types.h>.
  35.     strcasecmp.c needs this defined.
  36.     5. Some systems (like MASSCOMP) may want to use the USG history
  37.     file format instead of the dbm format. Some of the conditionals
  38.     include more code that needed to allow nntp to use the USG history
  39.     file format on machines that look alot like BSD systems.
  40.  
  41. Repeat by:
  42.     Bugs 3 and 4 can be seen on many System V system by trying to install
  43.     the original distribution. Lots of compiler complaints.
  44.     Bug 1 is seen following the starting of nntpd at boot and then watching
  45.     ps for awhile. The zombie nntpd's start appearing.
  46.     Bug 2 is observed on System V shortly after starting nntpd. It
  47.     dumps core.
  48.     Bug 5 is seen on a MASSCOMP (namely the machine named "masscomp")
  49.     which uses the USG history file format. nntpd needs to be built
  50.     in the bsd universe under RTU 4.0 (the latest release of MASSCOMP
  51.     UNIX).
  52. Fix:
  53.  
  54.     cd to nntp.1.5/server and pipe this through patch.
  55.  
  56. *** main.c    Sat Feb  6 17:45:07 1988
  57. --- ../../nntp_gazette/server/main.c    Fri Apr 29 02:48:49 1988
  58. ***************
  59. *** 1,6 ****
  60. - #ifdef EXCELAN
  61. - struct sockaddr_in current_peer = { AF_INET, IPPORT_NNTP };
  62. - #endif
  63.   #ifndef lint
  64.   static char    *sccsid = "@(#)main.c    1.10    (Berkeley) 2/6/88";
  65.   #endif
  66. --- 1,3 ----
  67. ***************
  68. *** 18,23 ****
  69. --- 15,22 ----
  70.   #include <netinet/in.h>
  71.   #ifndef EXCELAN
  72.   #include <netdb.h>
  73. + #else
  74. + struct sockaddr_in current_peer = { AF_INET, IPPORT_NNTP };
  75.   #endif
  76.   #include <signal.h>
  77.   
  78. ***************
  79. *** 50,62 ****
  80.   
  81.   #ifndef EXCELAN
  82.       sockt = get_socket();        /* should be fd 4 or 5 */
  83. ! #endif
  84. ! #ifndef USG
  85.       (void) signal(SIGCHLD, reaper);
  86.   #endif
  87.   
  88. - #ifndef EXCELAN
  89.       if (listen(sockt, SOMAXCONN) < 0) {
  90.   #ifdef SYSLOG
  91.           syslog(LOG_ERR, "main: listen: %m");
  92. --- 49,60 ----
  93.   
  94.   #ifndef EXCELAN
  95.       sockt = get_socket();        /* should be fd 4 or 5 */
  96. ! #ifdef USG
  97. !     (void) signal(SIGCLD, SIG_IGN);
  98. ! #else
  99.       (void) signal(SIGCHLD, reaper);
  100.   #endif
  101.   
  102.       if (listen(sockt, SOMAXCONN) < 0) {
  103.   #ifdef SYSLOG
  104.           syslog(LOG_ERR, "main: listen: %m");
  105. ***************
  106. *** 64,76 ****
  107.           exit(1);
  108.       }
  109.   #endif
  110.       for (;;) {
  111.   #ifdef EXCELAN
  112.           int status;
  113.           sockt = get_socket();
  114.           if (sockt < 0)
  115.               continue;
  116.           client = accept(sockt, &from);
  117.   #else
  118.           length = sizeof (from);
  119. --- 62,78 ----
  120.           exit(1);
  121.       }
  122.   #endif
  123.       for (;;) {
  124.   #ifdef EXCELAN
  125.           int status;
  126. +         sockt = 3;
  127.           sockt = get_socket();
  128.           if (sockt < 0)
  129.               continue;
  130. + #ifdef USG
  131. +         (void) signal(SIGCLD, SIG_IGN);
  132. + #endif
  133. +         bzero((char *)&from,sizeof(from));
  134.           client = accept(sockt, &from);
  135.   #else
  136.           length = sizeof (from);
  137. ***************
  138. *** 78,84 ****
  139. --- 80,90 ----
  140.   #endif EXCELAN
  141.           if (client < 0) {
  142.   #ifdef SYSLOG
  143. + #ifdef EXCELAN
  144. +             if (errno != EINTR && errno != 60 )
  145. + #else
  146.               if (errno != EINTR)
  147. + #endif
  148.                   syslog(LOG_ERR, "accept: %m\n");
  149.   #endif
  150.   #ifdef EXCELAN
  151. ***************
  152. *** 109,114 ****
  153. --- 115,123 ----
  154.                   (void) close(sockt);
  155.                   make_stdio(client);
  156.   #endif
  157. + #ifdef USG
  158. +                 (void) signal(SIGCLD,SIG_DFL);
  159. + #endif
  160.                   serve();
  161.                   break;
  162.   
  163. ***************
  164. *** 115,121 ****
  165.           default:
  166.   #ifdef EXCELAN
  167.                   (void) close(sockt);
  168. -                 (void) wait(&status);
  169.   #else
  170.                   (void) close(client);
  171.   #endif
  172. --- 124,129 ----
  173. *** active.c    Tue Jan 12 01:53:08 1988
  174. --- ../../nntp_gazette/server/active.c    Sat Apr 23 15:01:45 1988
  175. ***************
  176. *** 32,38 ****
  177.   {
  178.       register int    i;
  179.       register int    act_fd;
  180. !     register char    *actbuf, *cp, *end;
  181.       char        *malloc();
  182.       struct stat    statbuf;
  183.   
  184. --- 32,38 ----
  185.   {
  186.       register int    i;
  187.       register int    act_fd;
  188. !     register char    *cp, *end;
  189.       char        *malloc();
  190.       struct stat    statbuf;
  191.   
  192. ***************
  193. *** 42,48 ****
  194.        */
  195.   
  196.       if (num_groups != 0) {
  197. !         (void) free(group_array[0]);    /* Assume [0] -> actbuf */
  198.           (void) free(group_array);
  199.       }
  200.   
  201. --- 42,48 ----
  202.        */
  203.   
  204.       if (num_groups != 0) {
  205. !         (void) free(actbuf);
  206.           (void) free(group_array);
  207.       }
  208.   
  209.  
  210. *** common.h    Wed Feb 10 10:37:41 1988
  211. --- ../../nntp_gazette/server/common.h    Sat Apr 23 16:18:32 1988
  212. ***************
  213. *** 114,119 ****
  214. --- 114,120 ----
  215.   extern    char    rnews[];
  216.   
  217.   extern    char    **group_array;
  218. + extern    char    *actbuf;
  219.   extern    int    num_groups;
  220.   extern    char    *homedir;
  221.   extern    int    ingroup;
  222. *** globals.c    Sat Jul 18 01:38:30 1987
  223. --- ../../nntp_gazette/server/globals.c    Sat Apr 23 15:00:23 1988
  224. ***************
  225. *** 25,30 ****
  226. --- 25,31 ----
  227.    */
  228.   
  229.   char    **group_array;
  230. + char     *actbuf;
  231.   int    num_groups;
  232.   int    ingroup = 0;
  233.   int    art_ptr;
  234. *** strcasecmp.c    Sun Feb  7 01:38:45 1988
  235. --- ../../nntp_gazette/server/strcasecmp.c    Tue Mar  8 10:07:21 1988
  236. ***************
  237. *** 15,20 ****
  238. --- 15,23 ----
  239.   #endif /* LIBC_SCCS and not lint */
  240.   
  241.   #include <sys/types.h>
  242. + #ifndef u_char
  243. + #define u_char  unsigned char;
  244. + #endif
  245.   
  246.   /*
  247.    * This array is designed for mapping upper and lower case letter
  248. *** access_dnet.c    Sun Jan 24 00:52:44 1988
  249. --- ../../nntp_gazette/server/access_dnet.c    Tue Mar  8 09:57:07 1988
  250. ***************
  251. *** 1,9 ****
  252. - #include <sys/types.h>
  253. - #include <sys/socket.h>
  254. - #include <sys/types.h>
  255.   #include "common.h"
  256.   #ifdef DECNET
  257.   
  258.   #ifndef lint
  259. --- 1,5 ----
  260.   #include "common.h"
  261. ! #include <sys/socket.h>
  262.   #ifdef DECNET
  263.   
  264.   #ifndef lint
  265. *** misc.c    Sun Feb  7 00:29:33 1988
  266. --- ../../nntp_gazette/server/misc.c    Sat Apr 23 14:55:05 1988
  267. ***************
  268. *** 2,9 ****
  269.   static char    *sccsid = "@(#)misc.c    1.25    (Berkeley) 2/6/88";
  270.   #endif
  271.   
  272. - #include "../common/conf.h"
  273.   #include "common.h"
  274.   
  275.   /*
  276. --- 2,7 ----
  277. ***************
  278. *** 292,299 ****
  279.           }
  280.       }
  281.   
  282.       (void) rewind(fp);
  283.       if (ngcount == 0)    /* Either no newgroups or null entry */
  284.           return (1);
  285.   
  286. --- 290,300 ----
  287.           }
  288.       }
  289.   
  290. + #ifndef USG
  291.       (void) rewind(fp);
  292. ! #else
  293. !     rewind(fp);
  294. ! #endif
  295.       if (ngcount == 0)    /* Either no newgroups or null entry */
  296.           return (1);
  297.   
  298. ***************
  299. *** 416,428 ****
  300. --- 417,437 ----
  301.                       (void) strcpy(id, cp + 1);
  302.                       if ((cp = index(id, '\n')) != NULL)
  303.                           *cp = '\0';
  304. + #ifndef USG
  305.                       (void) rewind(art_fp);
  306. + #else
  307. +                     rewind(art_fp);
  308. + #endif
  309.                       return;
  310.                   }
  311.               }
  312.           }
  313.       }
  314. + #ifndef USG
  315.       (void) rewind(art_fp);
  316. + #else
  317. +     rewind(art_fp);
  318. + #endif
  319.       (void) strcpy(id, "<0>");
  320.   }
  321.           
  322. ***************
  323. *** 541,547 ****
  324.   
  325.   /* the following is from news 2.11 */
  326.   
  327. ! #ifdef USG
  328.   /*
  329.   ** Generate the appropriate history subfile name
  330.   */
  331. --- 550,556 ----
  332.   
  333.   /* the following is from news 2.11 */
  334.   
  335. ! #ifdef USGHIST
  336.   /*
  337.   ** Generate the appropriate history subfile name
  338.   */
  339. ***************
  340. *** 572,577 ****
  341. --- 581,588 ----
  342.           chr = '0';
  343.       return chr;
  344.   }
  345. + #endif USGHIST
  346. + #ifdef USG
  347.   bcopy(s, d, l)
  348.       register char *s, *d;
  349.       register int l;
  350. *** spawn.c    Sat Feb  6 17:45:12 1988
  351. --- ../../nntp_gazette/server/spawn.c    Tue Mar  8 10:08:37 1988
  352. ***************
  353. *** 2,9 ****
  354.   static    char    *sccsid = "@(#)spawn.c    1.6    (Berkeley) 2/6/88";
  355.   #endif
  356.   
  357. - #include "../common/conf.h"
  358.   #include "common.h"
  359.   
  360.   #include <signal.h>
  361. --- 2,7 ----
  362. Stan           internet: sob@tmc.edu          Baylor College of Medicine
  363. Olan           uucp: {rice,killer,hoptoad}!academ!sob
  364. Barber         Opinions expressed are only mine.
  365.  
  366.