Commit Graph

1644 Commits

Author SHA1 Message Date
Erik Dubbelboer 48dd2d0ce7 Try fixing oss-fuzz running out of memory and skipping a lot 2024-01-30 08:01:06 +01:00
Erik Dubbelboer 287e3616ba Make Fuzz tests deterministic
From the Go docs:
- Fuzz targets should be fast and deterministic so the fuzzing engine can work efficiently, and new failures and code coverage can be easily reproduced.
- Since the fuzz target is invoked in parallel across multiple workers and in nondeterministic order, the state of a fuzz target should not persist past the end of each call, and the behavior of a fuzz target should not depend on global state.
2024-01-20 05:10:41 +01:00
tyltr dd1f3b97e5 update build tag (#1695)
* update  go.sum

* update build tag
2024-01-18 04:41:42 +01:00
Erik Dubbelboer c205a253b4 Put a limit on the max body size for fuzzing 2024-01-16 05:07:21 +01:00
Erik Dubbelboer 435faf8698 Bump supported Go version in readme (#1690) 2024-01-14 02:46:41 +01:00
Erik Dubbelboer a04cd8c39f Move Fuzz tests into their own file
This is required for https://github.com/google/oss-fuzz/pull/11453
2024-01-09 13:01:31 +01:00
nickajacks1 2accefa5cb refactor: move manually created tchar table to bytesconv_table_gen (#1689) 2024-01-07 08:27:45 +01:00
AdamKorcz dbca6b454d Add CIFuzz (#1443)
Adds a workflow to run fasthttp's fuzzers in the CI.
2024-01-07 07:55:01 +01:00
nickajacks1 f0905a14d1 test: migrate remaining fuzzit tests to go 1.18 fuzzing (#1687) 2024-01-06 13:39:23 +08:00
nickajacks1 08c8d32471 test(expvarhandler): fix failure when using -count to run more than once (#1688) 2024-01-06 13:35:20 +08:00
Oleksandr Redko 28615eba55 Change empty string checks to be more idiomatic (#1684) 2024-01-04 15:05:38 +01:00
nickajacks1 fec7681cdb chore: move cookie fuzz test to go 1.18 fuzzing (#1686) 2024-01-04 15:04:50 +01:00
nickajacks1 868ee455d5 feat: add function to parse HTTP header parameters (#1685)
* feat: add function to parse HTTP header parameters

The implementation is based on RFC-9110 5.6.6.

* test: add fuzz for VisitHeaderParams
2024-01-02 09:43:40 +01:00
dependabot[bot] 9ba16466df chore(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 (#1678)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.14.0 to 0.17.0.
- [Commits](https://github.com/golang/crypto/compare/v0.14.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-19 09:33:54 +08:00
Oleksandr Redko 9d6b470260 chore: Add missing dots at the end of comments (#1677) 2023-12-13 13:56:24 +08:00
Oleksandr Redko 12949de784 chore: Set max line length to 130 characters (#1676) 2023-12-05 19:49:41 +01:00
Jille Timmermans 0caa3b9bc1 writeBodyFixedSize: Only do an early flush if the reader is an *os.File (#1674)
or an *io.LimitedReader of an *os.File (because that's also supported by
https://cs.opensource.google/go/go/+/refs/tags/go1.21.4:src/bufio/bufio.go;l=784)

I think that having to flush less often outweighs the overhead of the
extra check. The appended data is known to be large, but it might still
save us a syscall by allowing it to buffer more.
2023-12-02 18:59:46 +01:00
Jille Timmermans 2ac2a3911b copyZeroAlloc: Try WriteTo and ReadFrom before acquiring a buffer (#1673)
These are the same statements at the beginning of io.CopyBuffer, but
by doing them ourselves first we trade off a little cpu for not holding
the 4kb buffer during the write.
2023-12-02 18:05:12 +01:00
Jille Timmermans 9b4e42affa bug: Flush the write buffer before putting it to the pool (#1672)
A few lines later we check if `s.ReduceMemoryUsage && hijackHandler == nil`
and call releaseWriter. We need to flush the buffer before returning it
to the pool to avoid the data getting lost.
2023-12-02 18:04:12 +01:00
Aviv Carmi 8ca7a9c89c add support for custom dial function with timeouts (#1669)
* add support for custom dial function with timeouts

* fix linting

---------

Co-authored-by: Aviv Carmi <aviv@perimeterx.com>
2023-11-27 13:46:43 +01:00
Oleksandr Redko f196617f55 chore: Use 'any' instead of 'interface{}' (#1666)
gofmt -w -r "interface{} -> any" -l .
2023-11-24 11:33:04 +01:00
Oleksandr Redko d3397c64ed Enable wastedassign, whitespace linters; fix issues (#1665) 2023-11-24 11:32:11 +01:00
Oleksandr Redko 8ecfc989d9 Enable dupword, unconvert linters (#1658) v1.51.0 2023-11-12 16:42:39 +01:00
Gusted 1834cecd7e Lazy load stackless functions (#1656)
- I noticed that fasthttp was taking up 1.8MB of heap memory, even
though it wasn't being used. This turned out to be the stackless
function: 1.80MB  github.com/valyala/fasthttp/stackless.NewFunc
- Lazy load the stackless functions with sync.Once, given this a simple
atomic read, it shouldn't affect performance for the fast-path (I
haven't seen benchmarks with compression enabled).
2023-11-12 16:36:57 +01:00
Erik Dubbelboer 3267649442 Fix spelling mistake
Fixes #1654
2023-11-10 11:33:33 +01:00
Oleksandr Redko 1242d8af15 chore: add golangci-lint config file for flexibility (#1649)
* chore: add golangci-lint config file for flexibility

https://golangci-lint.run/usage/configuration/#config-file

* chore: add golangci-lint config file for flexibility
2023-11-09 16:30:33 +01:00
Oleksandr Redko 7bd632cbde chore: Remove redundant build constraint (#1650) 2023-11-08 23:18:13 +01:00
Oleksandr Redko 4434c99758 chore: Rename coarseTime.go to coarsetime.go (#1651) 2023-11-08 23:13:59 +01:00
Tiago Peczenyj dfce853067 Skip fs cache based on config (#1644)
* add cache manager struce

* refactor cache by adding interface

* generalize ctor

* implement feature add unit tests

* fix code

* rename fs field as filesystem
2023-11-05 19:31:04 +01:00
Erik Dubbelboer 3ead307ea9 Don't fast fail when one test fails (#1645) 2023-11-05 19:25:59 +01:00
Tiago Peczenyj 5575d272de add support to go 1.21.x into test.yml (#1642)
* Update test.yml

add go 1.21.x into matrix go-version

* Drop support of go1.17 in test.yml
2023-11-05 19:10:02 +01:00
Tiago Peczenyj deda595822 fix benchmark panics on client_timing_test.go (#1643)
* Update client_timing_test.go

fix benchmark panics

* must gofumpt
2023-11-05 14:48:00 +01:00
Tiago Peczenyj 4010b16eef Add support to fs.fs on serve static files (#1640)
* substitute *os.File by fs.File

* refactor error handling by using the new recommended form

* finish implementation

* substitute seek(offset,0) by seek(offset, io.SeekStart)

* add unit test

* use io.SeekStart on Seek method
2023-11-05 14:46:42 +01:00
Scott Kidder 42bd7bb7e2 Allow redirect URI path to not be normalized. (#1638)
* Allow redirect URI path to not be normalized.

* Introduce DisableRedirectPathNormalizing field to Request

* Use field name as start of comment.

Co-authored-by: Erik Dubbelboer <erik@dubbelboer.com>

---------

Co-authored-by: Erik Dubbelboer <erik@dubbelboer.com>
2023-10-30 19:08:51 +01:00
chenyunfei 772e4aadb7 BUGFIX: HostClient.DialDualStack not work when using DoDeadline (#1634)
Co-authored-by: chenyunfei.cs <chenyunfei.cs@bytedance.com>
2023-10-21 12:38:07 +02:00
Erik Dubbelboer 24acb80b92 Update dependencies 2023-10-12 19:50:52 +02:00
Alexander Kolesov c6a17b9a57 Don't put hijackConn structure back to the pool on Close if KeepHijackedConns is enabled. (#1629) 2023-10-06 21:34:33 +02:00
xiluoxi 497922a21e reset request disableSpecialHeader (#1626) 2023-09-22 14:21:18 +02:00
Oleksandr Redko a5301d9edc Replace path.Join with filepath.Join in tests (#1623) 2023-09-18 20:13:37 +02:00
Ilya Selivanau 00419bebec chore: move rsa.key, rsa.pem to test variables (#1621) 2023-09-15 12:31:28 +02:00
Erik Dubbelboer 8cc5539af7 Fix various request timeout issues
A timeout of 0 should timeout immediately. When retrying requests the
timeout should be updated to reflect the already passed time

Fixes https://github.com/valyala/fasthttp/issues/1617
v1.50.0
2023-09-09 14:28:52 +02:00
Armin Becher 34e7da1f1b Allow connection close for custom streams (#1603)
* feat: allow connection close for custom streams

* fix: avoid req access since might already be released

* fix: fix aloc test fails

* fix: race condition when clossing body stream
2023-09-02 17:56:18 +02:00
Oleksandr Redko 8236f8d49a fasthttpproxy: fix doc examples 2023-08-30 14:13:49 +02:00
Oleksandr Redko 4ec5c5a774 docs: fix typos in comments and tests 2023-08-30 14:13:13 +02:00
Oleksandr Redko 9aa666e814 Enable gocritic linter; fix lint issues (#1612) 2023-08-29 20:08:37 +02:00
Erik Dubbelboer 0e99e64ee8 Update golangci-lint and gosec (#1609) v1.49.0 2023-08-26 12:49:17 +02:00
Duncan Overbruck 6aea1e0d44 fix round2_32, split round2 tests because they depend on sizeof int at compile time (#1607) 2023-08-24 20:39:33 +02:00
Erik Dubbelboer 4b0e6c7f7d Update ErrNoMultipartForm
Make it a more descriptive error message.

Closes #1606
2023-08-16 19:57:20 +02:00
Erik Dubbelboer 727021a86c Update security policy
The email wasn't working anymore.
2023-08-16 19:56:58 +02:00
Tim 54fdc7a73c Abstracts the RoundTripper interface and provides a default implement (#1602)
* Abstracts the RoundTripper interface and provides a default implementation for enhanced extensibility (#1601)

* test: Add custom transport test case (#1601)

* Make default RoundTripper implmention none public

Co-authored-by: Erik Dubbelboer <erik@dubbelboer.com>

---------

Co-authored-by: Erik Dubbelboer <erik@dubbelboer.com>
2023-08-10 09:43:26 +02:00