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");