summaryrefslogtreecommitdiff
path: root/vxi11_server.c
diff options
context:
space:
mode:
authordaniel <danieruru@gmail.com>2013-01-30 12:49:10 +0900
committerdaniel <danieruru@gmail.com>2013-01-30 12:49:10 +0900
commitaf2ad8e37d852f66d499125e75fca92762463678 (patch)
tree0ce82d9198d0786518c9d0f94b585e5272903208 /vxi11_server.c
parente57b4a0ad419ce9af8017120ab60b54304fa0835 (diff)
Fire an interrupt when a new interrupt channel is requested and one exists,
this is to check if the existing connection is dead and get the RPC stuff to set the error
Diffstat (limited to 'vxi11_server.c')
-rw-r--r--vxi11_server.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/vxi11_server.c b/vxi11_server.c
index 34e2919..144141e 100644
--- a/vxi11_server.c
+++ b/vxi11_server.c
@@ -487,6 +487,7 @@ device_enable_srq_1_svc(Device_EnableSrqParms *argp, struct svc_req *rqstp) {
printf("Interrupt handle set to %s\n", inthandler);
#endif
}
+ vxi11_fireinterrupt();
}
#ifdef DEBUG
else {
@@ -552,6 +553,7 @@ create_intr_chan_1_svc(Device_RemoteFunc *argp, struct svc_req *rqstp) {
// we need to clean it up to avoid a deadlock
static struct rpc_err err;
if (intclient != NULL ) {
+ vxi11_fireinterrupt();
clnt_geterr(intclient, &err);
if (err.re_errno != 0) {
#ifdef DEBUG
@@ -565,6 +567,9 @@ create_intr_chan_1_svc(Device_RemoteFunc *argp, struct svc_req *rqstp) {
if (argp->progFamily != DEVICE_TCP || argp->progNum != DEVICE_INTR || argp->progVers != DEVICE_INTR_VERSION)
result.error = ERR_OPERATIONNOTSUPPORTED;
else if (intclient != NULL ) {
+#ifdef DEBUG
+ printf("Not creating interrupt channel, already exists\n");
+#endif
result.error = ERR_CHANNELALREADYESTABLISHED;
}
else {