From 1be28246e49f7c592b09cdd88583f504227aa02f Mon Sep 17 00:00:00 2001 From: gardners Date: Fri, 30 Nov 2012 21:13:29 +1030 Subject: [PATCH] we now pass bid+version in Rhizome over MDP block request. --- overlay_mdp_services.c | 8 +++++--- rhizome_fetch.c | 14 +++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/overlay_mdp_services.c b/overlay_mdp_services.c index c296db64..f89c84cd 100644 --- a/overlay_mdp_services.c +++ b/overlay_mdp_services.c @@ -34,12 +34,14 @@ int overlay_mdp_service_rhizomerequest(overlay_mdp_frame *mdp) DEBUGF("Someone sent me a rhizome request via MDP"); DEBUGF("requestor sid = %s",alloca_tohex_sid(mdp->out.src.sid)); DEBUGF("bundle ID = %s",alloca_tohex_bid(&mdp->out.payload[0])); - DEBUGF("file offset = 0x%llx", + DEBUGF("manifest version = 0x%llx", read_uint64(&mdp->out.payload[RHIZOME_MANIFEST_ID_BYTES])); + DEBUGF("file offset = 0x%llx", + read_uint64(&mdp->out.payload[RHIZOME_MANIFEST_ID_BYTES+8])); DEBUGF("bitmap = 0x%08x", - read_uint32(&mdp->out.payload[RHIZOME_MANIFEST_ID_BYTES+8])); + read_uint32(&mdp->out.payload[RHIZOME_MANIFEST_ID_BYTES+8+8])); DEBUGF("block length = %d", - read_uint16(&mdp->out.payload[RHIZOME_MANIFEST_ID_BYTES+8+4])); + read_uint16(&mdp->out.payload[RHIZOME_MANIFEST_ID_BYTES+8+8+4])); RETURN(-1); } diff --git a/rhizome_fetch.c b/rhizome_fetch.c index eb3bf1e6..c981e6a6 100644 --- a/rhizome_fetch.c +++ b/rhizome_fetch.c @@ -69,6 +69,7 @@ struct rhizome_fetch_slot { /* MDP transport specific elements */ unsigned char bid[RHIZOME_MANIFEST_ID_BYTES]; + int64_t bidVersion; int bidP; unsigned char prefix[RHIZOME_MANIFEST_ID_BYTES]; int prefix_length; @@ -723,7 +724,9 @@ rhizome_fetch(struct rhizome_fetch_slot *slot, rhizome_manifest *m, const struct /* Prepare for fetching via MDP */ bcopy(peersid,slot->peer_sid,SID_SIZE); bcopy(m->cryptoSignPublic,slot->bid,RHIZOME_MANIFEST_ID_BYTES); - DEBUGF("request bid=%s",alloca_tohex_bid(m->cryptoSignPublic)); + slot->bidVersion=m->version; + DEBUGF("request bid=%s, version=0x%llx", + alloca_tohex_bid(slot->bid),slot->bidVersion); slot->bidP=1; if (!FORM_RHIZOME_IMPORT_PATH(slot->filename, "payload.%s", bid)) @@ -1042,12 +1045,13 @@ static int rhizome_fetch_mdp_requestblocks(struct rhizome_fetch_slot *slot) mdp.packetTypeAndFlags=MDP_TX; mdp.out.queue=OQ_ORDINARY; - mdp.out.payload_length=RHIZOME_BAR_BYTES+8+4+2; + mdp.out.payload_length=RHIZOME_BAR_BYTES+8+8+4+2; bcopy(slot->bid,&mdp.out.payload[0],RHIZOME_MANIFEST_ID_BYTES); - write_uint64(&mdp.out.payload[RHIZOME_BAR_BYTES],slot->mdpRXWindowStart); - write_uint32(&mdp.out.payload[RHIZOME_BAR_BYTES+8],slot->mdpRXBitmap); - write_uint16(&mdp.out.payload[RHIZOME_BAR_BYTES+8+4],slot->mdpRXBlockLength); + write_uint64(&mdp.out.payload[RHIZOME_BAR_BYTES],slot->bidVersion); + write_uint64(&mdp.out.payload[RHIZOME_BAR_BYTES+8],slot->mdpRXWindowStart); + write_uint32(&mdp.out.payload[RHIZOME_BAR_BYTES+8+8],slot->mdpRXBitmap); + write_uint16(&mdp.out.payload[RHIZOME_BAR_BYTES+8+8+4],slot->mdpRXBlockLength); DEBUGF("src sid=%s, dst sid=%s", alloca_tohex_sid(mdp.out.src.sid),alloca_tohex_sid(mdp.out.dst.sid));