krm@bcsaic.UUCP (Keith Michaels) (10/04/88)
Re: Hung sockets on Apollo and VAX. The following program releases socket connections that are left over after a network application crashes on a VAX running Wollongong TCP/IP. You have to know the INET: device name assigned to it -- this can sometimes be determined by checking the owning PID in SHOW DEV/FULL INET:. This also seems to clean up the Apollo side at the other end of the link, but I don't know how to do the equivalent operation from the Apollo. /* Release unused INET: devices under Wollongong TCP/IP for VAX/VMS */ /* K. Michaels, BCS 27-Sep-1988 */ #include <stdio.h> #include <ssdef.h> #include <iodef.h> #include <descrip.h> main(ac,av) int ac; char *av[]; { int i; unsigned short iosb[4], chan; char idev[16]; $DESCRIPTOR(idev_dsc,idev); if(av[1] == NULL) do { printf("inet device name: "); if(gets(idev) == 0) exit(SS$_NORMAL); } while (strlen(idev) == 0); else strcpy(idev,av[1]); idev_dsc.dsc$w_length = strlen(idev); i= sys$assign(&idev_dsc,&chan,0,0); if((i & 1) == 0) exit(i); i = sys$qiow(0,chan,IO$_SETCHAR,iosb,0,0,&0,0,0,0,0,0); if((i & 1) == 0) exit(i); if((iosb[0] & 1) == 0) exit(iosb[0]); sys$dassgn(chan); exit(SS$_NORMAL); }