On Fri, Nov 28, 2008 at 7:05 AM, <toad at freenetproject.org> wrote:
> Author: toad
> Date: 2008-11-27 23:05:34 +0000 (Thu, 27 Nov 2008)
> New Revision: 23930
>
> Modified:
> trunk/freenet/src/freenet/node/NodeDispatcher.java
> trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
> Log:
> Handle UOMRequestExtra
Why not pack freenet-ext.jar and freenet.jar in one tar file and
update them in one go?
This help many needless dependancy problem.
(file size may be a problem, but this is better then breaking due to
bad ext version)
>
> Modified: trunk/freenet/src/freenet/node/NodeDispatcher.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/NodeDispatcher.java 2008-11-27 22:58:18
> UTC (rev 23929)
> +++ trunk/freenet/src/freenet/node/NodeDispatcher.java 2008-11-27 23:05:34
> UTC (rev 23930)
> @@ -130,6 +130,8 @@
> return node.nodeUpdater.uom.handleSendingRevocation(m,
> source);
> } else if(spec == DMT.UOMRequestMain &&
> source.isRealConnection()) {
> return node.nodeUpdater.uom.handleRequestMain(m,
> source);
> + } else if(spec == DMT.UOMRequestExtra &&
> source.isRealConnection()) {
> + return node.nodeUpdater.uom.handleRequestExt(m,
> source);
> } else if(spec == DMT.UOMSendingMain &&
> source.isRealConnection()) {
> return node.nodeUpdater.uom.handleSendingMain(m,
> source);
> } else if(spec == DMT.FNPOpennetAnnounceRequest) {
>
> Modified:
> trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
> 2008-11-27 22:58:18 UTC (rev 23929)
> +++ trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
> 2008-11-27 23:05:34 UTC (rev 23930)
> @@ -938,6 +938,99 @@
> updateManager.node.clientCore.alerts.unregister(alert);
> }
>
> + public boolean handleRequestExt(Message m, final PeerNode source) {
> + // Do we have the data?
> +
> + int version = updateManager.newExtJarVersion();
> + File data = updateManager.getExtBlob(version);
> +
> + if(data == null) {
> + Logger.normal(this, "Peer " + source + " asked us for
> the blob file for the ext jar but we don't have it!");
> + // Probably a race condition on reconnect, hopefully
> we'll be asked again
> + return true;
> + }
> +
> + final long uid = m.getLong(DMT.UID);
> +
> + RandomAccessFileWrapper raf;
> + try {
> + raf = new RandomAccessFileWrapper(data, "r");
> + } catch(FileNotFoundException e) {
> + Logger.error(this, "Peer " + source + " asked us for
> the blob file for the ext jar, we have downloaded it but don't have the file
> even though we did have it when we checked!: " + e, e);
> + return true;
> + }
> +
> + final PartiallyReceivedBulk prb;
> + long length;
> + try {
> + length = raf.size();
> + prb = new
> PartiallyReceivedBulk(updateManager.node.getUSM(), length,
> + Node.PACKET_SIZE, raf, true);
> + } catch(IOException e) {
> + Logger.error(this, "Peer " + source + " asked us for
> the blob file for the ext jar, we have downloaded it but we can't determine
> the file size: " + e, e);
> + return true;
> + }
> +
> + final BulkTransmitter bt;
> + try {
> + bt = new BulkTransmitter(prb, source, uid, false,
> updateManager.ctr);
> + } catch(DisconnectedException e) {
> + Logger.error(this, "Peer " + source + " asked us for
> the blob file for the ext jar, then disconnected: " + e, e);
> + return true;
> + }
> +
> + final Runnable r = new Runnable() {
> +
> + public void run() {
> + if(!bt.send())
> + Logger.error(this, "Failed to send
> ext jar blob to " + source.userToString() + " : " + bt.getCancelReason());
> + else
> + Logger.normal(this, "Sent ext jar
> blob to " + source.userToString());
> + }
> + };
> +
> + Message msg = DMT.createUOMSendingExtra(uid, length,
> updateManager.updateURI.toString(), version);
> +
> + try {
> + source.sendAsync(msg, new AsyncMessageCallback() {
> +
> + public void acknowledged() {
> + if(logMINOR)
> + Logger.minor(this, "Sending
> data...");
> + // Send the data
> +
> +
> updateManager.node.executor.execute(r, "Ext jar send for " + uid + " to " +
> source.userToString());
> + }
> +
> + public void disconnected() {
> + // Argh
> + Logger.error(this, "Peer " + source +
> " asked us for the blob file for the ext jar, then disconnected when we tried
> to send the UOMSendingMain");
> + }
> +
> + public void fatalError() {
> + // Argh
> + Logger.error(this, "Peer " + source +
> " asked us for the blob file for the ext jar, then got a fatal error when we
> tried to send the UOMSendingMain");
> + }
> +
> + public void sent() {
> + if(logMINOR)
> + Logger.minor(this, "Message
> sent, data soon");
> + }
> +
> + @Override
> + public String toString() {
> + return super.toString() + "(" + uid +
> ":" + source.getPeer() + ")";
> + }
> + }, updateManager.ctr);
> + } catch(NotConnectedException e) {
> + Logger.error(this, "Peer " + source + " asked us for
> the blob file for the ext jar, then disconnected when we tried to send the
> UOMSendingExt: " + e, e);
> + return true;
> + }
> +
> + return true;
> +
> + }
> +
> public boolean handleRequestMain(Message m, final PeerNode source) {
> // Do we have the data?
>
>
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
>