diff --git a/src/net/posix-stack.cc b/src/net/posix-stack.cc index 074c6c6b89..ead4bb396d 100644 --- a/src/net/posix-stack.cc +++ b/src/net/posix-stack.cc @@ -187,7 +187,9 @@ class posix_socket_impl final : public socket_impl { explicit posix_socket_impl(compat::polymorphic_allocator* allocator=memory::malloc_allocator) : _allocator(allocator) {} virtual future connect(socket_address sa, socket_address local, transport proto = transport::TCP) override { - return find_port_and_connect(sa, local, proto).then([fd = _fd, proto, allocator = _allocator] () mutable { + auto f = find_port_and_connect(sa, local, proto); + return f.then([this, proto, allocator = _allocator] () mutable { + auto fd = _fd; std::unique_ptr csi; if (proto == transport::TCP) { csi.reset(new posix_connected_tcp_socket_impl(std::move(fd), allocator));