mirror of
https://git.openafs.org/openafs.git
synced 2025-01-21 00:10:15 +00:00
hpux-rx-attach-file-struct-to-socket-20031124
FIXES 2450 attach a struct file to the socket; clean up when done
This commit is contained in:
parent
9ca613da43
commit
6e2f4f9df4
@ -767,6 +767,8 @@ rxk_NewSocket(short aport)
|
||||
extern MBLKP allocb_wait(int, int);
|
||||
MBLKP bindnam;
|
||||
int addrsize = sizeof(struct sockaddr_in);
|
||||
struct file *fp;
|
||||
extern struct fileops socketops;
|
||||
#endif
|
||||
#ifdef AFS_SGI65_ENV
|
||||
bhv_desc_t bhv;
|
||||
@ -778,8 +780,19 @@ rxk_NewSocket(short aport)
|
||||
#endif
|
||||
#if defined(AFS_HPUX102_ENV)
|
||||
#if defined(AFS_HPUX110_ENV)
|
||||
/* we need a file associated with the socket so sosend in NetSend
|
||||
will not fail */
|
||||
/* blocking socket */
|
||||
code = socreate(AF_INET, &newSocket, SOCK_DGRAM, 0, 0);
|
||||
fp = falloc();
|
||||
if (!fp) goto bad;
|
||||
fp->f_flag = FREAD | FWRITE;
|
||||
fp->f_type = DTYPE_SOCKET;
|
||||
fp->f_ops = &socketops;
|
||||
|
||||
fp->f_data = (void *) newSocket;
|
||||
newSocket->so_fp = (void *)fp;
|
||||
|
||||
#else /* AFS_HPUX110_ENV */
|
||||
code = socreate(AF_INET, &newSocket, SOCK_DGRAM, 0, SS_NOWAIT);
|
||||
#endif /* else AFS_HPUX110_ENV */
|
||||
@ -896,6 +909,18 @@ rxk_FreeSocket(register struct socket *asocket)
|
||||
#if defined(AFS_DARWIN_ENV) && defined(KERNEL_FUNNEL)
|
||||
thread_funnel_switch(KERNEL_FUNNEL, NETWORK_FUNNEL);
|
||||
#endif
|
||||
#ifdef AFS_HPUX110_ENV
|
||||
if (asocket->so_fp) {
|
||||
struct file * fp = asocket->so_fp;
|
||||
#if !defined(AFS_HPUX1123_ENV)
|
||||
/* 11.23 still has falloc, but not FPENTRYFREE !
|
||||
so for now if we shutdown, we will waist a file
|
||||
structure */
|
||||
FPENTRYFREE(fp);
|
||||
asocket->so_fp = NULL;
|
||||
#endif
|
||||
}
|
||||
#endif /* AFS_HPUX110_ENV */
|
||||
soclose(asocket);
|
||||
#if defined(AFS_DARWIN_ENV) && defined(KERNEL_FUNNEL)
|
||||
thread_funnel_switch(NETWORK_FUNNEL, KERNEL_FUNNEL);
|
||||
|
Loading…
Reference in New Issue
Block a user