# # # patch "cmd_scgi.cc" # from [89c2e17fe8de4f8e6ba7b1a6a08c91140f5fe992] # to [9914ca376bc5ff1571f325a8c61af12edc47e626] # # patch "http_client.cc" # from [8426be887870d861c82ca8be3bdcdfdb94d843eb] # to [de43fa61ee3e1e89cda67d78e56fc69ef91beb61] # # patch "json_io.cc" # from [a32899cbd5f29b85ee33e444f547ea3e4ca637a0] # to [02d4ad4a7676c30eac7df72f9d7fa2e286b0bba9] # # patch "json_msgs.cc" # from [e5675a4dd2f25383886856de7e108b33c197dff8] # to [6757f8ac1d69fa2dfa923dd29d1041196ef3679d] # ============================================================ --- cmd_scgi.cc 89c2e17fe8de4f8e6ba7b1a6a08c91140f5fe992 +++ cmd_scgi.cc 9914ca376bc5ff1571f325a8c61af12edc47e626 @@ -398,7 +398,7 @@ process_transaction(connection_type type << "\r\n"; out.flush(); } - catch (informative_failure & e) + catch (recoverable_failure & e) { std::cerr << "informative failure -- " << e.what() << std::endl; out << "Status: 400 Bad request\r\n" @@ -448,7 +448,7 @@ CMD_NO_WORKSPACE(gserve, // C rsa_keypair_id key; // still unused... if (app.opts.use_transport_auth) { - N(app.lua.hook_persist_phrase_ok(), + E(app.lua.hook_persist_phrase_ok(), origin::user, F("need permission to store persistent passphrase (see hook persist_phrase_ok())")); get_user_key(app.opts, app.lua, db, keys, key); } ============================================================ --- http_client.cc 8426be887870d861c82ca8be3bdcdfdb94d843eb +++ http_client.cc de43fa61ee3e1e89cda67d78e56fc69ef91beb61 @@ -134,7 +134,8 @@ http_client::parse_http_status_line() L(FL("connection is eof")); L(FL("http_client: response: [[%s]]") % tmp); - E(tmp.substr(0,pat.size()) == pat, F("HTTP status line: %s") % tmp); + E(tmp.substr(0,pat.size()) == pat, origin::network, + F("HTTP status line: %s") % tmp); } void @@ -158,8 +159,8 @@ http_client::crlf() void http_client::crlf() { - E(io->get() == '\r', F("expected CR in HTTP response")); - E(io->get() == '\n', F("expected LF in HTTP response")); + E(io->get() == '\r', origin::network, F("expected CR in HTTP response")); + E(io->get() == '\n', origin::network, F("expected LF in HTTP response")); } @@ -250,6 +251,7 @@ json_channel::inquire_about_revs(set::const_iterator i = revs.begin(); i != revs.end(); ++i) - r.add_str(encode_hexenc(i->inner()())); + r.add_str(encode_hexenc(i->inner()(), origin::database)); return b.v; } @@ -175,7 +175,8 @@ decode_msg_inquire_request(json_value_t std::string s; for (size_t i = 0; i < nargs; ++i) if (q[syms::revs][i].get(s)) - revs.insert(revision_id(decode_hexenc(s))); + revs.insert(revision_id(decode_hexenc(s, origin::network), + origin::network)); return true; } } @@ -197,7 +198,7 @@ encode_msg_inquire_response(set::const_iterator i = revs.begin(); i != revs.end(); ++i) { - r.add_str(encode_hexenc(i->inner()())); + r.add_str(encode_hexenc(i->inner()(), origin::database)); } return b.v; } @@ -217,7 +218,9 @@ decode_msg_inquire_response(json_value_t if (r.len(nrevs)) for (size_t i = 0; i < nrevs; ++i) if (r[i].get(tmp)) - revs.insert(revision_id(decode_hexenc(tmp))); + + revs.insert(revision_id(decode_hexenc(tmp, origin::network), + origin::network)); return true; } return false; @@ -235,7 +238,7 @@ encode_msg_descendants_request(set::const_iterator i = revs.begin(); i != revs.end(); ++i) - r.add_str(encode_hexenc(i->inner()())); + r.add_str(encode_hexenc(i->inner()(), origin::database)); return b.v; } @@ -254,7 +257,8 @@ decode_msg_descendants_request(json_valu std::string s; for (size_t i = 0; i < nargs; ++i) if (q[syms::revs][i].get(s)) - revs.insert(revision_id(decode_hexenc(s))); + revs.insert(revision_id(decode_hexenc(s, origin::network), + origin::network)); return true; } } @@ -274,7 +278,7 @@ encode_msg_descendants_response(vector::const_iterator i = revs.begin(); i != revs.end(); ++i) - r.add_str(encode_hexenc(i->inner()())); + r.add_str(encode_hexenc(i->inner()(), origin::database)); return b.v; } @@ -293,7 +297,8 @@ decode_msg_descendants_response(json_val std::string s; for (size_t i = 0; i < nargs; ++i) if (q[syms::revs][i].get(s)) - revs.push_back(revision_id(decode_hexenc(s))); + revs.push_back(revision_id(decode_hexenc(s, origin::network), + origin::network)); return true; } } @@ -342,8 +347,10 @@ encode_cset(builder b, cset const & cs) { builder tmp = b.add_obj(); tmp[syms::patch].str(i->first.as_internal()); - tmp[syms::from].str(encode_hexenc(i->second.first.inner()())); - tmp[syms::to].str(encode_hexenc(i->second.second.inner()())); + tmp[syms::from].str(encode_hexenc(i->second.first.inner()(), + origin::database)); + tmp[syms::to].str(encode_hexenc(i->second.second.inner()(), + origin::database)); } for (set >::const_iterator @@ -393,7 +400,7 @@ decode_cset(query q, cset & cs) string content; I(change[syms::content].get(content)); cs.files_added.insert(make_pair(file_path_internal(path), - file_id(content))); + file_id(content, origin::network))); } else if (change[syms::patch].get(path)) { @@ -401,15 +408,17 @@ decode_cset(query q, cset & cs) I(change[syms::from].get(from)); I(change[syms::to].get(to)); cs.deltas_applied.insert(make_pair(file_path_internal(path), - make_pair(file_id(decode_hexenc(from)), - file_id(decode_hexenc(to))))); + make_pair(file_id(decode_hexenc(from, origin::network), + origin::network), + file_id(decode_hexenc(to, origin::network), + origin::network)))); } else if (change[syms::clear].get(path)) { string key; I(change[syms::attr].get(key)); cs.attrs_cleared.insert(make_pair(file_path_internal(path), - attr_key(key))); + attr_key(key, origin::network))); } else if (change[syms::set].get(path)) { @@ -417,8 +426,8 @@ decode_cset(query q, cset & cs) I(change[syms::attr].get(key)); I(change[syms::value].get(val)); cs.attrs_set.insert(make_pair(make_pair(file_path_internal(path), - attr_key(key)), - attr_value(val))); + attr_key(key, origin::network)), + attr_value(val, origin::network))); } else I(false); @@ -440,7 +449,8 @@ encode_rev(builder b, revision_t const & e != rev.edges.end(); ++e) { builder edge = edges.add_obj(); - edge[syms::old_revision].str(encode_hexenc(edge_old_revision(e).inner()())); + edge[syms::old_revision].str(encode_hexenc(edge_old_revision(e).inner()(), + origin::database)); builder changes = edge[syms::changes].arr(); encode_cset(changes, edge_changes(e)); } @@ -454,7 +464,7 @@ decode_rev(query q, revision_t & rev) I(q[syms::vers].get(vers)); I(vers == "1"); - rev.new_manifest = manifest_id(new_manifest); + rev.new_manifest = manifest_id(new_manifest, origin::network); size_t nargs = 0; query edges = q[syms::edges]; I(edges.len(nargs)); @@ -467,7 +477,8 @@ decode_rev(query q, revision_t & rev) query changes = edge[syms::changes]; shared_ptr cs(new cset()); decode_cset(changes, *cs); - rev.edges.insert(make_pair(revision_id(decode_hexenc(old_revision)), cs)); + rev.edges.insert(make_pair(revision_id(decode_hexenc(old_revision, origin::network), + origin::network), cs)); } rev.made_for = made_for_database; } @@ -500,8 +511,9 @@ decode_data_records(query q, vector(dat)); - data_records.push_back(file_data_record(file_id(id), + file_data data(decode_base64_as(dat, origin::network), + origin::network); + data_records.push_back(file_data_record(file_id(id, origin::network), data)); } } @@ -536,9 +548,10 @@ decode_delta_records(query q, vector(del)); - delta_records.push_back(file_delta_record(file_id(src_id), - file_id(dst_id), + file_delta delta(decode_base64_as(del, origin::network), + origin::network); + delta_records.push_back(file_delta_record(file_id(src_id, origin::network), + file_id(dst_id, origin::network), delta)); } } @@ -553,7 +566,7 @@ encode_msg_get_full_rev_request(revision builder b; b[syms::type].str(syms::get_full_rev_request()); b[syms::vers].str("1"); - b[syms::id].str(encode_hexenc(rid.inner()())); + b[syms::id].str(encode_hexenc(rid.inner()(), origin::database)); return b.v; } @@ -567,7 +580,7 @@ decode_msg_get_full_rev_request(json_val q[syms::vers].get(vers) && vers == "1" && q[syms::id].get(id)) { - rid = revision_id(decode_hexenc(id)); + rid = revision_id(decode_hexenc(id, origin::network), origin::network); return true; } return false; @@ -651,7 +664,7 @@ decode_msg_put_full_rev_request(json_val q[syms::vers].get(vers) && vers == "1" && q[syms::id].get(id)) { - rid = revision_id(id); + rid = revision_id(id, origin::network); query rq = q[syms::rev]; decode_rev(rq, rev); query dat = q[syms::data_records]; @@ -713,7 +726,7 @@ decode_msg_get_rev_request(json_value_t q[syms::vers].get(vers) && vers == "1" && q[syms::id].get(id)) { - rid = revision_id(id); + rid = revision_id(id, origin::network); return true; } return false; @@ -774,7 +787,7 @@ decode_msg_put_rev_request(json_value_t q[syms::vers].get(vers) && vers == "1" && q[syms::id].get(id)) { - rid = revision_id(id); + rid = revision_id(id, origin::network); query rq = q[syms::rev]; decode_rev(rq, rev); return true; @@ -834,7 +847,7 @@ decode_msg_get_file_data_request(json_va q[syms::vers].get(vers) && vers == "1" && q[syms::id].get(id)) { - fid = file_id(id); + fid = file_id(id, origin::network); return true; } return false; @@ -864,7 +877,8 @@ decode_msg_get_file_data_response(json_v q[syms::vers].get(vers) && vers == "1" && q[syms::data].get(dat)) { - data = file_data(decode_base64_as(dat)); + data = file_data(decode_base64_as(dat, origin::network), + origin::network); return true; } return false; @@ -898,8 +912,9 @@ decode_msg_put_file_data_request(json_va q[syms::id].get(id) && q[syms::data].get(dat)) { - fid = file_id(id); - data = file_data(decode_base64_as(dat)); + fid = file_id(id, origin::network); + data = file_data(decode_base64_as(dat, origin::network), + origin::network); return true; } return false; @@ -961,8 +976,8 @@ decode_msg_get_file_delta_request(json_v q[syms::src_id].get(src) && q[syms::dst_id].get(dst)) { - src_id = file_id(src); - dst_id = file_id(dst); + src_id = file_id(src, origin::network); + dst_id = file_id(dst, origin::network); return true; } return false; @@ -992,7 +1007,8 @@ decode_msg_get_file_delta_response(json_ q[syms::vers].get(vers) && vers == "1" && q[syms::delta].get(del)) { - delta = file_delta(decode_base64_as(del)); + delta = file_delta(decode_base64_as(del, origin::network), + origin::network); return true; } return false; @@ -1030,9 +1046,10 @@ decode_msg_put_file_delta_request(json_v q[syms::src_id].get(src) && q[syms::delta].get(del)) { - src_id = file_id(src); - dst_id = file_id(dst); - delta = file_delta(decode_base64_as(del)); + src_id = file_id(src, origin::network); + dst_id = file_id(dst, origin::network); + delta = file_delta(decode_base64_as(del, origin::network), + origin::network); return true; } return false;