aboutsummaryrefslogtreecommitdiff
path: root/bbot/manifest.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'bbot/manifest.cxx')
-rw-r--r--bbot/manifest.cxx27
1 files changed, 12 insertions, 15 deletions
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);