Skip to content

Commit 616e898

Browse files
author
Guy Bedford
authored
fix: set SSL properly for created dynamic backends (#1016)
1 parent 4c5c083 commit 616e898

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

integration-tests/js-compute/fixtures/app/src/dynamic-backend.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,11 @@ routes.set('/backend/timeout', async () => {
5757
);
5858
routes.set('/implicit-dynamic-backend/dynamic-backends-enabled', async () => {
5959
allowDynamicBackends(true);
60-
await assertResolves(() => fetch('https://http-me.glitch.me/headers'));
60+
await assertResolves(async () => {
61+
await fetch('https://http-me.glitch.me/headers');
62+
const backend = Backend.fromName('http-me.glitch.me');
63+
strictEqual(backend.isSSL, true);
64+
});
6165
await assertResolves(() => fetch('https://www.fastly.com'));
6266
enforceExplicitBackends();
6367
await assertRejects(() => fetch('https://www.fastly.com'));

runtime/fastly/builtins/backend.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1694,7 +1694,9 @@ JSObject *Backend::create(JSContext *cx, JS::HandleObject request) {
16941694
if (!name_js_str) {
16951695
return nullptr;
16961696
}
1697+
JS::RootedValue name(cx, JS::StringValue(name_js_str));
16971698
std::string name_str((char *)slice.data, slice.len);
1699+
JS::SetReservedSlot(request, static_cast<uint32_t>(Request::Slots::Backend), name);
16981700

16991701
// Check if we already constructed an implicit dynamic backend for this host.
17001702
bool found;
@@ -1707,6 +1709,7 @@ JSObject *Backend::create(JSContext *cx, JS::HandleObject request) {
17071709
return nullptr;
17081710
}
17091711
JS::RootedObject backend(cx, &already_built_backend.toObject());
1712+
17101713
return backend;
17111714
}
17121715

@@ -1722,7 +1725,6 @@ JSObject *Backend::create(JSContext *cx, JS::HandleObject request) {
17221725

17231726
host_api::BackendConfig backend_config = default_backend_config.clone();
17241727

1725-
JS::RootedValue name(cx, JS::StringValue(name_js_str));
17261728
auto host_backend = set_backend(cx, backend, name);
17271729
if (!host_backend) {
17281730
return nullptr;
@@ -1744,6 +1746,7 @@ JSObject *Backend::create(JSContext *cx, JS::HandleObject request) {
17441746

17451747
auto use_ssl = origin.rfind("https://", 0) == 0;
17461748
if (use_ssl) {
1749+
backend_config.use_ssl = true;
17471750
if (!set_sni_hostname(cx, backend_config, name)) {
17481751
return nullptr;
17491752
}

0 commit comments

Comments
 (0)