Client: java
Patch: David Mollitor
This closes#2137
Use SLF4J API to log full Exception details. Use SLF4J parameterized logging instead of String format.
Client: Haskell
Patch: Philipp Hausmann
This closes#2108
The read functions for handles promise to return *up* to the requested
number of bytes. This means in case we read less bytes, we should try
again to read some more bytes.
Client: go
Go 1.13 introduced a new, optional, hidden interface for error
implementations to make them unwrappable [1]. We currently already kind
of support that (via TTransportException.Err), so just add a new
function to make it Go 1.13+ compatible.
[1] https://pkg.go.dev/errors@go1.13?tab=doc#pkg-overview
Client: java
Patch: David Mollitor
This closes#2131
The class TSSLTransportFactory is wrapping TTransportExceptions, which have a particular "type,"
in a type-less TTransportException and therefore the Exception type is lost.
Client: cpp,pas,py
Patch: Max Ulidtko
This closes#2124
If a host doesn't have assigned IPv4 or IPv6 addresses, thrift communication
over localhost-only is impossible due to thrift library bug. It happens
when making getaddrinfo syscall with AI_ADDRCONFIG flag.
From man getaddrinfo(3):
If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4 addresses
are returned in the list pointed to by res only if the local system has at least
one IPv4 address configured, and IPv6 addresses are returned only if the local
system has at least one IPv6 address configured. The loopback address is not
considered for this case as valid as a configured address.
Upstream bug with AI_ADDRCONFIG ai_flags was fixed for cpp library and win32
platform only. See https://issues.apache.org/jira/browse/THRIFT-2539
Patch based on Thrift 0.13.0, commit cecee50308.
This commit adds a simple middleware framework for Go clients.
It provides:
* A `ClientMiddleware` function interface used to define the actual middleware
* `WrapClient`, the function that you use to wrap a `TClient` in a list of middleware
* A helper `WrappedTClient` struct to help with developing middleware
Client: go
This commit adds a simple middleware framework for Go servers.
It provides:
* A `ProcessorMiddleware` function interface used to define the actual middleware
* `WrapProcessor`, the function that you use to wrap a `TProcessor` in a list of middleware
* A helper `WrappedTProcessorFunction` struct to help with developing middleware
This is a breaking change for any custom implementations of the `TProcessor`
interface, but does not effect the code generated by compiling Thrift files. It
adds two functions to the interface that are a part of the generated `TProcessor`
code, but were not defined in the interface explicitly.
When establishing a WebSocket connection, Firefox sends Connection: keep-alive, Upgrade instead of just Connection: Upgrade. Check to see if Upgrade is in the header instead of checking to see if it is the entire header value.
Client: d