summaryrefslogtreecommitdiff
path: root/lib/ZLocations.c
diff options
context:
space:
mode:
authorGravatar Karl Ramm <kcr@mit.edu>2008-03-24 23:33:03 +0000
committerGravatar Karl Ramm <kcr@mit.edu>2008-03-24 23:33:03 +0000
commit8a382cc10f75deb474ae6d6959e6ded952203ae5 (patch)
tree184689da5a9a8894f44867d3f2fe27dd0c6bf2a0 /lib/ZLocations.c
parent6843142aa38e83a5102574d66c6f20fd7688ed8f (diff)
patch from eichin to fix crossed acks
Diffstat (limited to 'lib/ZLocations.c')
-rw-r--r--lib/ZLocations.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/ZLocations.c b/lib/ZLocations.c
index e721a9c..f0bf0a7 100644
--- a/lib/ZLocations.c
+++ b/lib/ZLocations.c
@@ -95,6 +95,13 @@ ZParseExposureLevel(char *text)
return(NULL);
}
+/* lifted from lib/ZSendPkt.c wait_for_hmack, but waits for SERVACK instead */
+static int
+wait_for_srvack(ZNotice_t *notice, ZUnique_Id_t *uid)
+{
+ return (notice->z_kind == SERVACK && ZCompareUID(&notice->z_uid, uid));
+}
+
Code_t
Z_SendLocation(char *class,
char *opcode,
@@ -130,7 +137,7 @@ Z_SendLocation(char *class,
if ((retval = ZSendList(&notice, bptr, 3, auth)) != ZERR_NONE)
return (retval);
- retval = Z_WaitForNotice (&retnotice, ZCompareUIDPred, &notice.z_uid,
+ retval = Z_WaitForNotice (&retnotice, wait_for_srvack, &notice.z_uid,
SRV_TIMEOUT);
if (retval != ZERR_NONE)
return retval;