Changeset View
Changeset View
Standalone View
Standalone View
sys/rpc/svc_vc.c
Show First 20 Lines • Show All 494 Lines • ▼ Show 20 Lines | svc_vc_rendezvous_destroy(SVCXPRT *xprt) | ||||
svc_vc_destroy_common(xprt); | svc_vc_destroy_common(xprt); | ||||
} | } | ||||
static void | static void | ||||
svc_vc_destroy(SVCXPRT *xprt) | svc_vc_destroy(SVCXPRT *xprt) | ||||
{ | { | ||||
struct cf_conn *cd = (struct cf_conn *)xprt->xp_p1; | struct cf_conn *cd = (struct cf_conn *)xprt->xp_p1; | ||||
CLIENT *cl = (CLIENT *)xprt->xp_p2; | |||||
SOCKBUF_LOCK(&xprt->xp_socket->so_rcv); | SOCKBUF_LOCK(&xprt->xp_socket->so_rcv); | ||||
if (xprt->xp_upcallset) { | if (xprt->xp_upcallset) { | ||||
xprt->xp_upcallset = 0; | xprt->xp_upcallset = 0; | ||||
if (xprt->xp_socket->so_rcv.sb_upcall != NULL) | if (xprt->xp_socket->so_rcv.sb_upcall != NULL) | ||||
soupcall_clear(xprt->xp_socket, SO_RCV); | soupcall_clear(xprt->xp_socket, SO_RCV); | ||||
} | } | ||||
SOCKBUF_UNLOCK(&xprt->xp_socket->so_rcv); | SOCKBUF_UNLOCK(&xprt->xp_socket->so_rcv); | ||||
if (cl != NULL) | |||||
CLNT_RELEASE(cl); | |||||
svc_vc_destroy_common(xprt); | svc_vc_destroy_common(xprt); | ||||
if (cd->mreq) | if (cd->mreq) | ||||
m_freem(cd->mreq); | m_freem(cd->mreq); | ||||
if (cd->mpending) | if (cd->mpending) | ||||
m_freem(cd->mpending); | m_freem(cd->mpending); | ||||
mem_free(cd, sizeof(*cd)); | mem_free(cd, sizeof(*cd)); | ||||
▲ Show 20 Lines • Show All 608 Lines • Show Last 20 Lines |