diff --git a/copyparty/web/up2k.js b/copyparty/web/up2k.js
index 88fa816f..16003615 100644
--- a/copyparty/web/up2k.js
+++ b/copyparty/web/up2k.js
@@ -99,60 +99,65 @@ function up2k_flagbus() {
"act": false,
"last_tx": ["x", null]
};
+ var dbg = function (who, msg) {
+ console.log('flagbus(' + flag.id + '): [' + who + '] ' + msg);
+ };
flag.ch.onmessage = function (ev) {
- console.log('flagbus(' + flag.id + '): ' + ev.data);
var who = ev.data[0],
what = ev.data[1];
if (who == flag.id) {
- console.log('flagbus: hi me (??)');
+ dbg(who, 'hi me (??)');
return;
}
flag.act = new Date().getTime();
if (what == "want") {
// lowest id wins, don't care if that's us
if (who < flag.id) {
- console.log('flagbus: got wants (ack)');
+ dbg(who, 'wants (ack)');
flag.wants = [who, flag.act];
}
else {
- console.log('flagbus: got wants (ign)');
+ dbg(who, 'wants (ign)');
}
}
else if (what == "have") {
- console.log('flagbus: got have');
+ dbg(who, 'have');
flag.owner = [who, flag.act];
}
else if (what == "give") {
if (flag.owner && flag.owner[0] == who) {
flag.owner = null;
- console.log('flagbus: got good give');
+ dbg(who, 'give (ok)');
}
else {
- console.log('flagbus: got bad give wth');
+ dbg(who, 'give, INVALID, ' + flag.owner);
}
}
else if (what == "hi") {
- console.log('flagbus: got hi');
+ dbg(who, 'hi');
flag.ch.postMessage([flag.id, "hey"]);
}
+ else {
+ dbg('?', ev.data);
+ }
};
var tx = function (now, msg) {
var td = now - flag.last_tx[1];
if (td > 500 || flag.last_tx[0] != msg) {
+ dbg('*', 'tx ' + msg);
flag.ch.postMessage([flag.id, msg]);
- console.log('flagbus: tx ' + msg);
flag.last_tx = [msg, now];
}
};
var do_take = function (now) {
- console.log('flagbus: do_take');
+ //dbg('*', 'do_take');
tx(now, "have");
flag.owner = [flag.id, now];
flag.ours = true;
};
var do_want = function (now) {
- console.log('flagbus: do_want');
+ //dbg('*', 'do_want');
tx(now, "want");
};
flag.take = function (now) {
@@ -173,8 +178,8 @@ function up2k_flagbus() {
do_want(now);
};
flag.give = function () {
+ dbg('#', 'put give');
flag.ch.postMessage([flag.id, "give"]);
- console.log('flagbus: put give');
flag.owner = null;
flag.ours = false;
};
@@ -295,6 +300,7 @@ function up2k_init(have_crypto) {
var parallel_uploads = cfg_get('nthread');
var multitask = bcfg_get('multitask', true);
var ask_up = bcfg_get('ask_up', true);
+ var flag_en = bcfg_get('flag_en', false);
var col_hashing = '#00bbff';
var col_hashed = '#004466';
@@ -327,12 +333,7 @@ function up2k_init(have_crypto) {
return un2k("this is the basic uploader; up2k needs at least
chrome 21 // firefox 13 // edge 12 // opera 12 // safari 5.1");
var flag = false;
- try {
- flag = up2k_flagbus();
- }
- catch (ex) {
- console.log("flag error: " + ex.toString());
- }
+ apply_flag_cfg();
function nav() {
ebi('file' + fdom_ctr).click();
@@ -480,14 +481,16 @@ function up2k_init(have_crypto) {
mutex = true;
while (true) {
- ebi('srv_info').innerHTML =
- new Date().getTime() + ", " +
- st.todo.hash.length + ", " +
- st.todo.handshake.length + ", " +
- st.todo.upload.length + ", " +
- st.busy.hash.length + ", " +
- st.busy.handshake.length + ", " +
- st.busy.upload.length;
+ if (false) {
+ ebi('srv_info').innerHTML =
+ new Date().getTime() + ", " +
+ st.todo.hash.length + ", " +
+ st.todo.handshake.length + ", " +
+ st.todo.upload.length + ", " +
+ st.busy.hash.length + ", " +
+ st.busy.handshake.length + ", " +
+ st.busy.upload.length;
+ }
if (flag) {
var need_flag = 0 !=
@@ -1001,6 +1004,28 @@ function up2k_init(have_crypto) {
bcfg_set('ask_up', ask_up);
}
+ function tgl_flag_en() {
+ flag_en = !flag_en;
+ bcfg_set('flag_en', flag_en);
+ apply_flag_cfg();
+ }
+
+ function apply_flag_cfg() {
+ if (flag_en && !flag) {
+ try {
+ flag = up2k_flagbus();
+ }
+ catch (ex) {
+ console.log("flag error: " + ex.toString());
+ tgl_flag_en();
+ }
+ }
+ else if (!flag_en && flag) {
+ flag.ch.close();
+ flag = false;
+ }
+ }
+
function nop(ev) {
ev.preventDefault();
this.click();
@@ -1018,6 +1043,7 @@ function up2k_init(have_crypto) {
ebi('nthread').addEventListener('input', bumpthread, false);
ebi('multitask').addEventListener('click', tgl_multitask, false);
ebi('ask_up').addEventListener('click', tgl_ask_up, false);
+ ebi('flag_en').addEventListener('click', tgl_flag_en, false);
var nodes = ebi('u2conf').getElementsByTagName('a');
for (var a = nodes.length - 1; a >= 0; a--)
diff --git a/copyparty/web/upload.html b/copyparty/web/upload.html
index 269e8e9b..aa2d468f 100644
--- a/copyparty/web/upload.html
+++ b/copyparty/web/upload.html
@@ -53,11 +53,15 @@