Sudarsan Reddy
951d13d76c
TUN-4456: Replaced instances of Tick() with Ticker() in h2mux paths
...
time.Tick() does not get garbage collected because the channel
underneath never gets deleted and the underlying Ticker can never be
recovered by the garbage collector. We replace this with NewTicker() to
avoid this.
2021-05-25 18:07:06 +01:00
Igor Postelnik
8ca0d86c85
TUN-3863: Consolidate header handling logic in the connection package; move headers definitions from h2mux to packages that manage them; cleanup header conversions
...
All header transformation code from h2mux has been consolidated in the connection package since it's used by both h2mux and http2 logic.
Exported headers used by proxying between edge and cloudflared so then can be shared by tunnel service on the edge.
Moved access-related headers to corresponding packages that have the code that sets/uses these headers.
Removed tunnel hostname tracking from h2mux since it wasn't used by anything. We will continue to set the tunnel hostname header from the edge for backward compatibilty, but it's no longer used by cloudflared.
Move bastion-related logic into carrier package, untangled dependencies between carrier, origin, and websocket packages.
2021-03-29 21:57:56 +00:00
Igor Postelnik
da4d0b2bae
TUN-4067: Reformat code for consistent import order, grouping, and fix formatting. Added goimports target to the Makefile to make this easier in the future.
2021-03-24 10:53:29 -05:00
Nuno Diegues
8432735867
TUN-4060: Fix Go Vet warnings (new with go 1.16) where t.Fatalf is called from a test goroutine
2021-03-16 16:12:11 +00:00
cthuang
e2262085e5
TUN-3617: Separate service from client, and implement different client for http vs. tcp origins
...
- extracted ResponseWriter from proxyConnection
- added bastion tests over websocket
- removed HTTPResp()
- added some docstrings
- Renamed some ingress clients as proxies
- renamed instances of client to proxy in connection and origin
- Stream no longer takes a context and logger.Service
2021-02-23 14:19:44 +00:00
Igor Postelnik
db0562c7b8
Fixed connection error handling by removing duplicated errors, standardizing on non-pointer error types
2021-01-22 10:58:06 -06:00
Areg Harutyunyan
870f5fa907
TUN-3470: Replace in-house logger calls with zerolog
2020-12-23 14:15:17 -06:00
cthuang
6886e5f90a
TUN-3467: Serialize cf-cloudflared-response-meta during package initialization using jsoniter
2020-11-11 15:11:42 +00:00
cthuang
9ac40dcf04
TUN-3462: Refactor cloudflared to separate origin from connection
2020-11-11 15:11:42 +00:00
cthuang
cb39f26f27
TUN-3406: Proxy websocket requests over Go http2
2020-11-11 15:11:42 +00:00
cthuang
2c9b7361b7
TUN-3427: Define a struct that only implements RegistrationServer in tunnelpogs
2020-10-01 09:08:32 +01:00
Adam Chalmers
1a96889141
TUN-3286: Use either ID or name in Named Tunnel subcommands.
2020-08-19 14:39:45 +00:00
Igor Postelnik
bd15c6b8c3
TUN-3208: Reduce copies and allocations on h2mux write path. Pre-allocate 16KB write buffer on the first write if possible. Use explicit byte array for chunks on write thread to avoid copying through intermediate buffer due to io.CopyN.
...
benchmark old ns/op new ns/op delta
BenchmarkSingleStreamLargeResponseBody-8 17786594 12163494 -31.61%
benchmark old allocs new allocs delta
BenchmarkSingleStreamLargeResponseBody-8 17086 15869 -7.12%
benchmark old bytes new bytes delta
BenchmarkSingleStreamLargeResponseBody-8 58215169 21604391 -62.89%
2020-07-29 14:30:12 +00:00
Igor Postelnik
42fe2e7266
TUN-3208: Add benchmark for large response write
2020-07-29 14:30:12 +00:00
Igor Postelnik
44e3be2c88
TUN-3209: improve performance and reduce allocations during user header serialization from h1 to h2
...
benchmark old ns/op new ns/op delta
BenchmarkH1ResponseToH2ResponseHeaders-4 10360 5048 -51.27%
benchmark old allocs new allocs delta
BenchmarkH1ResponseToH2ResponseHeaders-4 135 26 -80.74%
benchmark old bytes new bytes delta
BenchmarkH1ResponseToH2ResponseHeaders-4 8543 3667 -57.08%
2020-07-29 14:29:07 +00:00
Igor Postelnik
61d5461138
TUN-3209: Add benchmark for header serialization
2020-07-29 14:29:07 +00:00
Dalton
c716dd273c
AUTH-2648 updated usage text
2020-06-11 11:08:05 -05:00
Dalton
046be63253
AUTH-2596 added new logger package and replaced logrus
2020-05-27 17:07:19 -05:00
Michael Borkenstein
b89cc22896
AUTH-2369: RDP Bastion prototype
2020-05-19 21:10:50 -05:00
Igor Postelnik
fbe2989f61
TUN-2955: Fix connection and goroutine leaks when tunnel conection is terminated on error. Only unregister tunnels that had connected successfully. Close edge connection used to unregister the tunnel. Use buffered channels for error channels where receiver may quit early on context cancellation.
2020-05-06 03:13:24 +00:00
Areg Harutyunyan
1c6ea36e73
TUN-2894: ResponseMetaHeader should be public
2020-04-11 01:01:05 +01:00
Areg Harutyunyan
06f29306cd
TUN-2881: Parameterize response meta information header name in the generating function
2020-04-10 20:26:09 +01:00
Areg Harutyunyan
322f909edb
TUN-2880: Return metadata about source of the response from cloudflared
2020-04-10 01:01:38 +01:00
Areg Harutyunyan
0b2b6c8e12
TUN-2850: Tunnel stripping Cloudflare headers
2020-03-31 16:52:13 +00:00
Areg Harutyunyan
80f387214c
TUN-2796: Implement HTTP2 CONTINUATION headers correctly
2020-03-24 13:46:17 +00:00
Dalton
a368fbbe9b
AUTH-2394 fixed header for websockets. Added TCP alias
2020-03-23 10:27:53 -05:00
Areg Harutyunyan
96f11de7ab
TUN-2820: Serialized headers for Websockets
2020-03-19 18:08:58 +00:00
Areg Harutyunyan
5bd4028ea7
TUN-2761: Use the new header management functions in cloudflared
2020-03-08 03:38:54 +00:00
Nick Vollmar
7b81cf8aa6
TUN-2779: update sample HTML pages
2020-03-03 19:35:41 +00:00
Areg Harutyunyan
a14aa0322c
TUN-2767: Test for large headers
2020-02-27 22:15:04 +00:00
Areg Harutyunyan
6488843ac4
TUN-2746: Add the new header management functions
2020-02-21 18:37:38 +00:00
Areg Harutyunyan
52ab2c8227
TUN-2745: Rename existing header management functions
2020-02-20 20:31:34 +00:00
Adam Chalmers
269351bbea
TUN-2703: Muxer.Serve terminates when its context is Done
2020-02-20 20:09:10 +00:00
Areg Harutyunyan
d6c2c4ee4a
TUN-2717: Function to serialize/deserialize HTTP headers
2020-02-10 19:18:06 +00:00
Nick Vollmar
54b386188a
TUN-2651: Fix panic in h2mux reader when a stream error is encountered
2020-01-31 09:59:10 -06:00
Nick Vollmar
8b43454024
TUN-2631: only notify that activeStreamMap is closed if ignoreNewStreams=true
2019-12-11 17:05:28 -06:00
Nick Vollmar
b499c0fdba
TUN-2608: h2mux.Muxer.Shutdown always returns a non-nil channel
2019-12-04 17:21:30 +00:00
Tim Bart
92736b2677
bug(cloudflared): nil pointer deference on h2DictWriter Close() ( #154 )
...
Unlike other h2DictWriter methods, the Close() method does check whether
w.comp is nil.
This PR adds a check for non nil compressor before attempting to close
Bug: #141
2019-12-03 16:29:40 +04:00
Nick Vollmar
1d96bccc04
TUN-2178: public API to create new h2mux.MuxedStreamRequest
2019-11-13 14:04:19 -06:00
Chung-Ting Huang
13bf65ce4e
TUN-2506: Expose active streams metrics
2019-11-07 14:09:31 -06:00
Nick Vollmar
e14ec1a1fb
TUN-2505: Terminate stream on receipt of RST_STREAM; MuxedStream.CloseWrite() should terminate the MuxedStream.Write() loop
2019-11-06 21:24:18 +00:00
Chung-Ting Huang
3a9a0a0d75
TUN-2489: Delete stream from activestreammap when read and write are both closed
2019-11-05 11:06:11 -06:00
Felix Bünemann
1f6a330098
Fix #129 : Excessive memory usage streaming large files ( #142 )
...
This drops the default size auf the h2mux write buffer from 512 MB to 1 MB.
This massively reduces memory usage, since each stream has its own buffer.
2019-10-17 17:15:51 -05:00
Nick Vollmar
4d2583edf5
TUN-2344: log more details: http2.Framer.ErrorDetail() if available, connectionID
2019-10-15 10:59:24 -05:00
Nick Vollmar
b836cb350a
TUN-2162: Decomplect OpenStream to allow finer-grained timeouts
2019-09-05 15:23:41 +00:00
Chung-Ting Huang
2fa09e1cc6
TUN-1976: Pass tunnel hostname through header
2019-06-21 10:43:06 -05:00
Chung-Ting Huang
d26a8c5d44
TUN-1893: Proxy requests to the origin based on tunnel hostname
2019-06-13 14:46:22 -05:00
Chung-Ting Huang
ca619a97bc
TUN-1952: Group ClientConfig fields by the component that uses the config, and return the part of the config that failed to be applied
2019-06-13 14:39:51 -05:00
Nick Vollmar
6f8708d33c
TUN-1847: Log a distinct message when OpenStream fails while waiting for response headers
2019-05-13 16:46:25 -05:00
Chung-Ting Huang
2bef5dbe72
TUN-1682: Add context to OpenStream to prevent it from blocking indefinitely.
2019-04-11 13:44:42 -05:00