steveh@hammer.UUCP (Stephen Hemminger) (08/14/85)
RCS file: RCS/ipc.c,v Retrieving revision 2.1 diff -b -c -r2.1 ipc.c *** /tmp/,RCSt1029981 Tue Aug 13 16:14:41 1985 --- ipc.c Tue Aug 13 16:13:26 1985 *************** *** 1,5 #ifndef lint ! static char rcsid[] = "$Header: ipc.c,v 2.1 85/04/10 17:31:13 matt Stab $"; #endif /* * --- 1,5 ----- #ifndef lint ! static char rcsid[] = "$Header: ipc.c,v 2.3 85/08/13 16:13:07 steveh Exp $"; #endif /* * *************** *** 17,24 * Copyright (c) 1984 * * $Log: ipc.c,v $ ! * Revision 2.1 85/04/10 17:31:13 matt ! * sources from net * * Revision 2.1 85/04/10 17:31:13 matt * Major de-linting and minor restructuring. --- 17,24 ----- * Copyright (c) 1984 * * $Log: ipc.c,v $ ! * Revision 2.3 85/08/13 16:13:07 steveh ! * more 4.3 mods * * Revision 2.2 85/08/13 14:35:50 steveh * mods for 4.3. *************** *** 20,25 * Revision 2.1 85/04/10 17:31:13 matt * sources from net * * Revision 2.1 85/04/10 17:31:13 matt * Major de-linting and minor restructuring. * --- 20,28 ----- * Revision 2.3 85/08/13 16:13:07 steveh * more 4.3 mods * + * Revision 2.2 85/08/13 14:35:50 steveh + * mods for 4.3. + * * Revision 2.1 85/04/10 17:31:13 matt * Major de-linting and minor restructuring. * *************** *** 135,140 /* * don't take forever when we close the socket! */ if (setsockopt(newsock, SOL_SOCKET, SO_DONTLINGER, 0, 0)) errlog("error in setsockopt call\n"); /* --- 138,144 ----- /* * don't take forever when we close the socket! */ + #ifdef SO_DONTLINGER if (setsockopt(newsock, SOL_SOCKET, SO_DONTLINGER, 0, 0)) errlog("error in setsockopt call\n"); #else *************** *** 137,142 */ if (setsockopt(newsock, SOL_SOCKET, SO_DONTLINGER, 0, 0)) errlog("error in setsockopt call\n"); /* * Sure hope the following read gives all the data in * one shot. It isn't guaranteed to, you know! --- 141,154 ----- #ifdef SO_DONTLINGER if (setsockopt(newsock, SOL_SOCKET, SO_DONTLINGER, 0, 0)) errlog("error in setsockopt call\n"); + #else + { struct linger linger; + linger.l_onoff = 0; linger.l_linger = 0; + + if (setsockopt(newsock, SOL_SOCKET, SO_LINGER, &linger, sizeof(linger))) + errlog("error in setsockopt call\n"); + } + #endif /* * Sure hope the following read gives all the data in * one shot. It isn't guaranteed to, you know! *************** *** 222,227 extern int in_sock; char hostname[40]; struct servent *serv; #endif char buf[255]; --- 234,240 ----- extern int in_sock; char hostname[40]; struct servent *serv; + int on = 1; #endif char buf[255]; *************** *** 246,252 in_addr.sin_port = htons((short)port); } else in_addr.sin_port = serv->s_port; ! if (setsockopt(in_sock, SOL_SOCKET, SO_REUSEADDR, 0, 0) < 0) errlog("error in setsockopt (SO_REUSEADDR)\n"); if (bind(in_sock, (struct sockaddr *)&in_addr, sizeof(in_addr))) { errlog("error binding internet port\n"); --- 259,265 ----- in_addr.sin_port = htons((short)port); } else in_addr.sin_port = serv->s_port; ! if (setsockopt(in_sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) errlog("error in setsockopt (SO_REUSEADDR)\n"); if (bind(in_sock, (struct sockaddr *)&in_addr, sizeof(in_addr))) { errlog("error binding internet port\n");