# # # patch "cmd_netsync.cc" # from [5a6b198b12a95e4a0fee8b7edf0e4f8d157fa300] # to [4863230698508fa61f8e09550c27a5be216e8221] # # patch "netsync.cc" # from [9003b38e8de8bb7b4c179446176cf61d4361ce37] # to [dd63fc06d6bab3dd3e8c30a1df6c23975bf94a54] # # patch "uri.cc" # from [cde1447e4a6c84a7d6397471930847524754283a] # to [95e2f31ced2b7db78f6eb635a789505bf3d962fe] # # patch "uri.hh" # from [9afc3c0849902ced57c34161c7a0e63ce6ca09da] # to [642fc516a8ffd9fe2dd6dafac3405a514a1bc2c5] # ============================================================ --- cmd_netsync.cc 5a6b198b12a95e4a0fee8b7edf0e4f8d157fa300 +++ cmd_netsync.cc 4863230698508fa61f8e09550c27a5be216e8221 @@ -62,7 +62,7 @@ find_key(options & opts, { utf8 host(info.client.unparsed); if (!info.client.uri.host.empty()) - host = utf8(info.client.uri.host, origin::user); + host = utf8(info.client.uri.resource, origin::user); cache_netsync_key(opts, db, keys, lua, project, host, info.client.include_pattern, @@ -94,9 +94,9 @@ build_client_connection_info(options & o parse_uri(info.client.unparsed(), info.client.uri, origin::user); var_key server_include(var_domain("server-include"), - typecast_vocab(info.client.unparsed)); + var_name(info.client.uri.resource, origin::user)); var_key server_exclude(var_domain("server-exclude"), - typecast_vocab(info.client.unparsed)); + var_name(info.client.uri.resource, origin::user)); if (info.client.uri.query.empty() && !include_or_exclude_given) { @@ -191,9 +191,9 @@ build_client_connection_info(options & o if (!db.var_exists(default_server_key) || opts.set_default) { - P(F("setting default server to %s") % info.client.uri.host); + P(F("setting default server to %s") % info.client.uri.resource); db.set_var(default_server_key, - var_value(info.client.uri.host, origin::user)); + var_value(info.client.uri.resource, origin::user)); } if (!db.var_exists(default_include_pattern_key) || opts.set_default) @@ -317,9 +317,9 @@ CMD_AUTOMATE_NO_STDIO(remote_stdio, if (!db.var_exists(default_server_key) || app.opts.set_default) { - P(F("setting default server to %s") % info.client.uri.host); + P(F("setting default server to %s") % info.client.uri.resource); db.set_var(default_server_key, - var_value(info.client.uri.host, origin::user)); + var_value(info.client.uri.resource, origin::user)); } info.client.use_argv = @@ -448,9 +448,9 @@ CMD_AUTOMATE_NO_STDIO(remote, if (!db.var_exists(default_server_key) || app.opts.set_default) { - P(F("setting default server to %s") % info.client.uri.host); + P(F("setting default server to %s") % info.client.uri.resource); db.set_var(default_server_key, - var_value(info.client.uri.host, origin::user)); + var_value(info.client.uri.resource, origin::user)); } info.client.use_argv = ============================================================ --- netsync.cc 9003b38e8de8bb7b4c179446176cf61d4361ce37 +++ netsync.cc dd63fc06d6bab3dd3e8c30a1df6c23975bf94a54 @@ -120,7 +120,7 @@ call_server(app_state & app, shared_ptr sess(new session(app, project, keys, client_voice, - info.client.uri.host, server)); + info.client.uri.resource, server)); shared_ptr wrapped; switch (info.client.connection_type) { @@ -237,7 +237,7 @@ session_from_server_sync_item(app_state shared_ptr sess(new session(app, project, keys, client_voice, - info.client.uri.host, server)); + info.client.uri.resource, server)); shared_ptr wrapped(new netsync_session(sess.get(), app.opts, app.lua, project, ============================================================ --- uri.cc cde1447e4a6c84a7d6397471930847524754283a +++ uri.cc 95e2f31ced2b7db78f6eb635a789505bf3d962fe @@ -102,6 +102,18 @@ parse_uri(string const & in, uri_t & uri { uri.clear(); + { + size_t resource_end = in.find_first_of("?#"); + if (resource_end == string::npos) + { + uri.resource = in; + } + else + { + uri.resource.assign(in, 0, resource_end); + } + } + if (try_parse_bare_authority(in, uri, made_from)) { return; ============================================================ --- uri.hh 9afc3c0849902ced57c34161c7a0e63ce6ca09da +++ uri.hh 642fc516a8ffd9fe2dd6dafac3405a514a1bc2c5 @@ -22,6 +22,9 @@ struct uri_t std::string query; std::string fragment; + // everything before the query/fragment + std::string resource; + void clear() { scheme.clear(); @@ -31,6 +34,8 @@ struct uri_t path.clear(); query.clear(); fragment.clear(); + + resource.clear(); } };