diff options
Diffstat (limited to 'bbot')
-rw-r--r-- | bbot/manifest | 11 | ||||
-rw-r--r-- | bbot/manifest.cxx | 27 |
2 files changed, 19 insertions, 19 deletions
diff --git a/bbot/manifest b/bbot/manifest index 7e14b7d..3022535 100644 --- a/bbot/manifest +++ b/bbot/manifest @@ -60,12 +60,12 @@ namespace bbot // // $ cat key.pub | openssl sha256 // - std::string fingerprint; + butl::optional<std::string> fingerprint; machine_header_manifests machines; task_request_manifest (std::string a, - std::string f, + butl::optional<std::string> f, machine_header_manifests m) : agent (std::move (a)), fingerprint (std::move (f)), @@ -260,12 +260,15 @@ namespace bbot { public: std::string session; // The task response session. - std::string challenge; // The answer to challenge in the task response. + + // The answer to challenge in the task response. + // + butl::optional<std::string> challenge; result_manifest result; result_request_manifest (std::string s, - std::string c, + butl::optional<std::string> c, result_manifest r) : session (std::move (s)), challenge (std::move (c)), diff --git a/bbot/manifest.cxx b/bbot/manifest.cxx index 9aedcea..0f7a053 100644 --- a/bbot/manifest.cxx +++ b/bbot/manifest.cxx @@ -244,7 +244,7 @@ namespace bbot } else if (n == "fingerprint") { - if (!fingerprint.empty ()) + if (fingerprint) bad_name ("task request fingerprint redefinition"); if (!valid_sha256 (v)) @@ -261,9 +261,6 @@ namespace bbot if (agent.empty ()) bad_value ("no task request agent specified"); - if (fingerprint.empty ()) - bad_value ("no task request fingerprint specified"); - // Parse machine header manifests. // for (nv = p.next (); !nv.empty (); nv = p.next ()) @@ -281,7 +278,10 @@ namespace bbot // s.next ("", "1"); // Start of manifest. s.next ("agent", agent); - s.next ("fingerprint", fingerprint); + + if (fingerprint) + s.next ("fingerprint", *fingerprint); + s.next ("", ""); // End of manifest. for (const machine_header_manifest& m: machines) @@ -594,14 +594,11 @@ namespace bbot session = move (*sess); - // If session is not empty then the challenge and the result url must - // present, otherwise they shouldn't. + // If session is not empty then the challenge may, and the result url + // must, be present, otherwise they shouldn't. // if (!session.empty ()) { - if (!challenge) - bad_value ("no task response challenge specified"); - if (!result_url) bad_value ("no task response result url specified"); } @@ -908,7 +905,7 @@ namespace bbot } else if (n == "challenge") { - if (!challenge.empty ()) + if (challenge) bad_name ("result request challenge redefinition"); if (v.empty ()) @@ -925,9 +922,6 @@ namespace bbot if (session.empty ()) bad_value ("no result request session specified"); - if (challenge.empty ()) - bad_value ("no result request challenge specified"); - nv = p.next (); if (nv.empty ()) bad_value ("result manifest expected"); @@ -950,7 +944,10 @@ namespace bbot // s.next ("", "1"); // Start of manifest. s.next ("session", session); - s.next ("challenge", challenge); + + if (challenge) + s.next ("challenge", *challenge); + s.next ("", ""); // End of manifest. result.serialize (s); |