Commit Graph

6299 Commits

Author SHA1 Message Date
tinnus-napbus
e481aded3c
Update pkg/arvo/sys/vane/eyre.hoon
Co-authored-by: fang <git@fang.io>
2022-09-29 13:32:32 +13:00
tinnus-napbus
66f543289d
Update pkg/arvo/sys/vane/eyre.hoon
Co-authored-by: fang <git@fang.io>
2022-09-29 13:32:18 +13:00
tinnus-napbus
387b48bed6
Update pkg/arvo/sys/vane/eyre.hoon
Co-authored-by: fang <git@fang.io>
2022-09-29 13:32:07 +13:00
tinnus-napbus
c0e2974678
Update pkg/arvo/sys/vane/eyre.hoon
Co-authored-by: fang <git@fang.io>
2022-09-29 13:31:47 +13:00
Tinnus Napbus
ac1dac0c6c eyre: simplify auto-https logic 2022-09-24 21:52:34 +12:00
Joe Bryan
9df08c5e72 ames: ignore pki nponsorship loss 2022-09-22 10:38:39 -04:00
fang
bdf9f9d044
Merge pull request #5929 from urbit/jon/remove-dork
clay: remove $dork
2022-09-15 22:23:56 +02:00
fang
92d1b4c300
Merge pull request #5990 from xiphiness/patch-2
dojo dir validation: %ct scry at case da+now if imaginary case 0
2022-09-15 22:23:09 +02:00
fang
16f78af00a
Merge pull request #5982 from urbit/m/eyre-head-down
eyre: look for lowercase last-event-id header
2022-09-15 22:22:32 +02:00
fang
6abe91cd9c
Merge pull request #5808 from dnmfarrell/dnmfarrell/arvo-test-dont-require-a-list
pkg: -test shouldn't require a list of paths
2022-09-15 22:20:15 +02:00
Philip Monk
3eda93cac3
Merge pull request #5360 from urbit/m/new-desk
gen: add |new-desk for creating minimal desks
2022-09-15 11:20:31 -08:00
Edward Amsden
105710d54e
clay: remove stack tracing 2022-09-14 19:28:17 -05:00
Edward Amsden
4f8c851ef7
Don't print a stack trace for read-at-aeon-fail
We shouldn't get a clay stack trace for read-at-aeon-fail because that gives us miles of clay stack trace whenever hoon compilation fails
2022-09-14 19:26:21 -05:00
Philip Monk
77319d20c4 clay: fix kelvin upgrade issues 2022-09-14 01:04:13 -08:00
Philip Monk
44074ad33b tests: make pass 2022-09-13 17:52:32 -08:00
Philip Monk
c3f5fe923a docket: update to use tire instead of kiln 2022-09-13 16:14:43 -08:00
Philip Monk
c46fb686ff kiln: remove resolve XX's 2022-09-12 20:51:39 -08:00
Philip Monk
4ae324849f kiln: remove |bump 2022-09-12 20:29:59 -08:00
Philip Monk
f61d16965a kiln: fix +vat,+vats 2022-09-12 20:22:22 -08:00
Philip Monk
18b65a973f kiln: fix |ota and installing locally 2022-09-07 22:45:11 -08:00
Philip Monk
c82b7c4ff2 kiln: fixes 2022-09-07 22:38:35 -08:00
Philip Monk
0d757b4436 kiln: migrate previous OTA state 2022-09-07 21:56:12 -08:00
fang
50ee2eb1c0
Merge pull request #5951 from urbit/pkova/dns-race
dns-address: subscribe before poke and fix wire mismatch
2022-09-07 19:41:14 +02:00
Philip Monk
1102288d75 kiln: remove old |sync, various fixes 2022-09-06 22:52:59 -08:00
xiphiness
2bc2d5a1bb
dojo dir validation: %ct scry at case da+now if imaginary case 0
PR #5840 mostly fixed #1559, but introduced a new bug. before, you could safely `=dir` into a desk without a case, and it would use the nonexistent case `ud+0` as the beam for dojo state, and switch that out for da+now whenever it tries to resolve the current path. but this check causes it to fail, because `ud+0` is a nonexistent case. this uses he-beam to transform the beam in the conditional to see if the case is 0, and if it is, changes the case to da+now before it scries
2022-09-06 16:24:22 -05:00
fang
108c6253d3
Merge branch 'philip/nuke' into next/arvo 2022-09-06 22:25:19 +02:00
fang
f46d8dd557
Merge pull request #5974 from urbit/m/recork-slower
ames: bump recork timer back up to a day
2022-09-06 22:18:14 +02:00
fang
bc597c25ef
Merge pull request #5978 from urbit/philip/nuke
gall: don't add duplicate nonce in +ap-nuke
2022-09-06 22:17:49 +02:00
fang
7a4034f48a
Merge pull request #5977 from urbit/m/cork-undone
ames, gall: no %done on corks
2022-09-06 22:17:34 +02:00
fang
9c931f844b
Merge pull request #5976 from urbit/m/ames-restir
ames: clean & re-set recork timer during %stir
2022-09-06 22:17:18 +02:00
fang
36dd2f8ace
Merge branch 'next/arvo' into m/recork-slower 2022-09-06 22:16:41 +02:00
fang
e22b198dea
Merge pull request #5972 from urbit/ted/grq-test-2
tests: ames+gall subscribe/kick/resubscribe sequence
2022-09-06 22:15:47 +02:00
fang
fec3c45d30
Merge pull request #5971 from urbit/jb/recork-error
ames: handle failed recork timers
2022-09-06 22:15:12 +02:00
Joe Bryan
e4e0c31975 hoon: updates +slew to avoid dynamic eval 2022-09-06 12:50:44 -04:00
Joe Bryan
d89c73fc79 hoon: update key virtualization gates to use fully-static formulas 2022-09-06 11:05:08 -04:00
Joe Bryan
657c5c5a03 pill: update +solid formulas to be more static 2022-09-06 11:04:46 -04:00
Joe Bryan
f91c6c54db arvo: update bootstrap/lifecycle formulas to be fully static 2022-09-06 11:03:21 -04:00
Tinnus Napbus
27349c51ab eyre: add auto-https redirects
if a cert is configured and a secure port is live it will set the
redirect flag in http-config.state.

When it gets a ++request it will return a 301 redirect to
https://[host]/[path] if:

  1. not already secure
  2. redirect flag set
  3. secure port live
  4. is not requesting /.well-known/acme-challenge/...
  5. the host is in domains.state

It will not happen if forwarded-secured, localhost, local loopback, ip
addresses or domains not in domains.state.

in ++load it checks the secure port is live and a cert is set and
enables it if so (for people who already use in-urbit letencrypt)

%rule %cert tasks also toggle it (only turning it on if secure port
live)

%live tasks also toggle it (only turning it on if cert set)

Have tested with a couple of ships and seems to work fine.

This is useful in combination with pyry's auto arvo.network dns config
system - can finally get rid of reverse proxies entirely.
2022-09-04 02:58:09 +12:00
Philip Monk
8884e7dfbc kiln: make compile 2022-09-02 16:51:39 -08:00
Philip Monk
093f0ae9de Merge branch 'philip/inline-thread' into philip/agent-clay-wip 2022-09-01 19:03:17 -08:00
Philip Monk
3aea8220bc kiln: add +sync 2022-08-30 18:32:31 -08:00
fang
53cc33b291
eyre: look for lowercase last-event-id header
Eyre always gets passed request headers in lowercase, so we should search for
the lowercased version of the header.

Arguably `+get-header` should lowercase keys before comparing them, but that's
a more serious behavioral change.
2022-08-30 16:44:11 +02:00
Philip Monk
e3a8cab943 khan: support inline threads
This allows you to pass a thread directly into khan, instead of passing
a filename.  This has several implications:

- The friction for using threads from an app is significantly lower.
  Consider:

    =/  shed
      =/  m  (strand ,vase)
      ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('hi'))
      ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('there'))
      (pure:m !>('product'))
    [%pass /wire %arvo %k %lard %base shed]

- These threads close over their subject, so you don't need to parse
  arguments out from a vase -- you can just refer to them.  The produced
  value must still be a vase.

    ++  hi-ship
      |=  [=ship msg1=@t msg2=@t]
      =/  shed
        =/  m  (strand ,vase)
        ;<  ~  bind:m  (poke:strandio [ship %hood] %helm-hi !>(msg1))
        ;<  ~  bind:m  (poke:strandio [ship %hood] %helm-hi !>(msg2))
        (pure:m !>('product'))
      [%pass /wire %arvo %k %lard %base shed]

- Inline threads can be added to the dojo, though this PR does not add
  any sugar for this.

    =strandio -build-file %/lib/strandio/hoon
    =sh |=  message=@t
        =/  m  (strand:rand ,vase)
        ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('hi'))
        ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>(message))
        (pure:m !>('product'))
    |pass [%k %lard %base (sh 'the message')]

Implementation notes:
- Review the commits separately: the first is small and implements the
  real feature.  The second moves the strand types into lull so khan can
  refer to them.

- In lull, I wanted to put +rand inside +khan, but this fails to that
  issue that puts the compiler in a loop.  +rand depends on +gall, which
  depends on +sign-arvo, which depends on +khan.  If +rand is in +khan,
  this spins the compiler.  The usual solution is to either move
  everything into the same battery (very ugly here) or break the
  recursion (which we do here).
2022-08-29 21:04:50 -08:00
Philip Monk
0e14eedb50 spider: accept inline threads 2022-08-29 20:09:08 -08:00
Philip Monk
4bef3277d5 azimuth: remove :azimuth|kick 2022-08-29 10:57:47 -08:00
Philip Monk
fa569cf7f3 kiln: wip 2022-08-29 10:53:36 -08:00
Philip Monk
9a4d754429 clay: add +tire subscription for app state 2022-08-25 19:13:51 -08:00
Philip Monk
1ce53d06ba gall: don't add duplicate nonce in +ap-nuke
This gets added in +ap-handle-peers.  This caused outgoing subscriptions
to not get cleaned up properly.

Issue introduced in c2d77a5d.
2022-08-25 13:29:51 -08:00
fang
ab75e83398
gall: don't enqueue %cork as outstanding
Ames will no longer send acks. Consider it completed immediately, and
clean up the outstanding queue whenever it's empty.
2022-08-25 18:14:40 +02:00
fang
0e5b3b4107
ames: don't give %done on cork
Locally, %cork is guaranteed to succeed instantly. The requesting vane
doesn't need an ack to safely consider the flow "closed".
2022-08-25 18:13:29 +02:00
Ted Blackman
5fb20a57cb tests: give %cork ack to gall 2022-08-25 16:36:14 +03:00
Ted Blackman
9b2f95b7b3 ames: revert added debug print 2022-08-25 16:36:14 +03:00
Ted Blackman
80c5172490 tests: check for correct subscription nonce 2022-08-25 16:36:14 +03:00
Ted Blackman
5ee16c38a1 tests: ames+gall full subscribe+clog+kick+resubscribe sequence 2022-08-25 16:36:14 +03:00
Ted Blackman
f558ad4348 tests: more steps, subscriber ames now sends %cork 2022-08-25 16:36:14 +03:00
Ted Blackman
59d71ecbc9 tests: remove defunct test library 2022-08-25 16:36:14 +03:00
Ted Blackman
15861150ba /lib/test/ames-gall: clean up lanes 2022-08-25 16:36:14 +03:00
Ted Blackman
c67a358308 tests: helper core to avoid repeated metamorphoses 2022-08-25 16:36:14 +03:00
Ted Blackman
94cb3952b7 tests: subscriber ames gets kick 2022-08-25 16:36:14 +03:00
Ted Blackman
0b2ba509c3 tests: gall and ames give kick over network 2022-08-25 16:36:14 +03:00
Ted Blackman
c301930fac tests: give %kick from %clog 2022-08-25 16:36:14 +03:00
Ted Blackman
59c5aa0b2a tests: give %clog to gall 2022-08-25 16:36:14 +03:00
Ted Blackman
c0adf6c25c tests: %watch to %watch-ack codepath complete 2022-08-25 16:36:14 +03:00
Ted Blackman
cfdf4d8467 tests: fix 2022-08-25 16:36:14 +03:00
Ted Blackman
583dd42747 tests: ames receives %watch-ack 2022-08-25 16:36:14 +03:00
Ted Blackman
01f761d07a tests: receiver ames sends %watch-ack packet 2022-08-25 16:36:14 +03:00
Ted Blackman
4518cf4838 tests: receiver gall gives %done to ames 2022-08-25 16:36:14 +03:00
Ted Blackman
becb1d7f18 tests: gall runs %pub +on-watch 2022-08-25 16:36:14 +03:00
Ted Blackman
52637ea2fe tests: ames passes %watch to gall on receiver, gall emits %deal to itself 2022-08-25 16:36:14 +03:00
Ted Blackman
1f9e04ab1c tests: ames sends %watch %plea 2022-08-25 16:36:14 +03:00
Ted Blackman
e2e4a102e8 tests: ~nec gall passes %watch to itself 2022-08-25 16:36:13 +03:00
Ted Blackman
3fdc7379a2 tests: get %sub agent to emit %watch 2022-08-25 16:36:13 +03:00
Ted Blackman
317f03e337 tests: test galls can now load %sub and %pub agents 2022-08-25 16:36:13 +03:00
Ted Blackman
c48c2f4b6a /lib/test: add +run-chain for test sequences 2022-08-25 16:36:13 +03:00
Ted Blackman
f2b85df948 tests: initial setup for gall and ames on two ships 2022-08-25 16:36:13 +03:00
Ted Blackman
81bfe17f37 tests: WIP gall request queue tests 2022-08-25 16:36:13 +03:00
fang
81462da7aa
ames: clean & re-set recork timer during %stir
Pre-release ships may have multiple recork timers. This ensures that,
after stir, we always have exactly one.
2022-08-25 14:42:16 +02:00
fang
0871c24e24
ames: bump recork timer back up to a day
We had lowered this initially for easier testing, but a day should be
sufficient for real-world use.
2022-08-25 14:11:45 +02:00
fang
b2422030f7
ames: correctly identify stale routes 2022-08-25 13:41:55 +02:00
Philip Monk
ed3b028d9a Merge remote-tracking branch 'origin/master' into philip/snap 2022-08-23 14:16:57 -08:00
Joe Bryan
76cc8939d3 ames: fix error slog on failed attestation timer 2022-08-23 14:34:08 -04:00
Joe Bryan
5b8f26558e ames: handle failed recork timers 2022-08-23 14:33:53 -04:00
Joe Bryan
679b38138d ames: prevent larval stage from possibly clobbering adult state 2022-08-23 10:37:01 -04:00
Ted Blackman
5a96f3bdbe ames: drop %hear as larva; check duct before metamorpohse 2022-08-23 16:45:17 +03:00
Ted Blackman
07601c6bee ames: metamorphose on first +take if possible 2022-08-23 16:09:35 +03:00
Ted Blackman
9abe49489d ames: +on-stir clean up comments 2022-08-23 13:31:10 +03:00
Joe Bryan
9439841ce8 ames: refactor %stir, %rest stale/wrong timers 2022-08-22 20:14:02 -04:00
Philip Monk
43ad38cd82 azimuth: reorder %kick flow
Before this, the %watch to eth-watcher was happening before the %poke,
and so eth-watcher was responding with its entire history immediately.
This is bad because it takes a lot of memory to process that many logs,
and also because those logs are stale.

Now, the %poke happens first, which clears the history.
2022-08-19 20:22:20 -08:00
Philip Monk
c6024c2661 azimuth: clear logs on %kick
%kick is supposed to start back from the snapshot and move forward.
Without this, we would only fetch logs that we hadn't already fetched.
Thus, if you were up-to-date when you kicked, you would miss anything
that happened between the time the snapshot was taken and the present,
though you would see things after the present.

Also reverted lull change to make this a safer upgrade.
2022-08-19 15:04:30 -08:00
fang
a04d564269
Merge pull request #5963 from urbit/m/ames-eager-molt
ames: ensure larva initializes adult's state
2022-08-20 00:35:50 +02:00
fang
3a7938f057
ames: say "metamorphosis" in all relevant cases 2022-08-20 00:05:20 +02:00
fang
53b0e7ecaa
ames: ensure larva initializes adult's state
Previously, when the larva got to processing enqueued events, it was
doing so without loading state into the adult beforehand, resulting in
incorrect processing of events.

Here, we make the larva call +molt more eagerly, ensuring that the adult
always has its state available when we use it.
2022-08-19 23:58:10 +02:00
Philip Monk
ca0a00cb3c Merge remote-tracking branch 'origin/master' into philip/snap 2022-08-19 12:37:25 -08:00
fang
8108595b2b
gall: don't inject potentially-fake acks
We shouldn't be hitting this case anymore. Injecting events into agents
which they might not expect, and might not even be real, is bad.
2022-08-19 21:39:44 +02:00
fang
59f0556e3b
Merge pull request #5958 from urbit/ted/rake
gall: %rake task to clean up dead %leave's
2022-08-19 21:29:08 +02:00
fang
de6f525f02
Merge pull request #5956 from urbit/ted/gen-ames-flows
+ames-flows: diagnostic generator to count ames flows
2022-08-19 21:23:38 +02:00
fang
a79f2f27e5
Merge pull request #5961 from urbit/m/ames-stir-thoroughly
ames: don't skip closing flows in +on-stir
2022-08-19 21:22:49 +02:00
fang
a9a8619daa
Merge pull request #5947 from urbit/ted/staying-alive-rebase
gall: revive %hood and %dojo on keypress
2022-08-19 21:22:28 +02:00
fang
ce2e433a8a
ames: don't skip closing flows in +on-stir
Yes, there is a global timer for closing flows, but all that does is
enqueue a cork message. +on-stir needs to set _pump_ timers for all
flows that might still have messages to send, which includes closing
flows.
2022-08-19 20:26:08 +02:00
fang
cfa18b1f1f
gall: when kicked, register %cork as outstanding
When ames notifies us that our subscription has been kicked, we enqueue
a cork to clean up the flow. Unlike the %leave case, however, we were
not registering the cork in the queue of outstanding comms. We would
eventually get an ack, but not know what for, and erroneously inject
%poke-acks and %watch-acks.

Here we simply add a %cork entry to the queue before sending it.
2022-08-19 16:04:36 +02:00