Refuse to re-arm a DESTROYED xprt.

Safely resolves the race to re-arm a destroyed xprt handle which arises
when decoding and sendreply execute concurrently.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Trace harder in epoll_wait wakeup.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Streamline lock tracing.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Free x_vc_data in vc_shared_destroy.

Leak found by Rong zeng <rongzeng@us.ibm.com>,

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Add EPOLLRDHUP to epoll set.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Forward xp_free_xprt on rendezvous.  Oy.

Leak found by Rong zeng <rongzeng@us.ibm.com>.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Define get/set ops for xp_free_xprt.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Remove debug print which printed xd->refcnt without rec
lock.

This was slightly unsafe, and a trap was found here by
"Rong Zeng" <rongzeng@us.ibm.com>.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>

Conflicts:
	src/svc_vc.c

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Fix return of rpc_dplx_rec locked.

Various invariants rely on this.  Underlying races caused by
this bug found by "Rong Zeng" <rongzeng@us.ibm.com>.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Initialize sockaddr_storage to all ones

recvmsg sometimes fails to set the peer name, even on success.
Pre-initializing this value to all ones should be a safe guard as it's
not a valid address family.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Have recv fail if we have a bogus client address

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Fix SVC_LOCK macros (and related).

Also fix argument names, also svc_vc xp_ops in rdvs case.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Improve refcnt traceability and fix rpc_dplx_unref.

Increase caller location information in SVC_REF, SVC_RELEASE,
and SVC_DESTROY macros.

In addition to location, conditional tracing of caller remote
address and port are added.

Fix lost lock in rpc_dplx_unref.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>