|
|
@ -252,18 +252,24 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
|
|
|
|
requestURL.Path = transportConfiguration.GetNormalizedPath() + sessionIdUuid.String()
|
|
|
|
requestURL.Path = transportConfiguration.GetNormalizedPath() + sessionIdUuid.String()
|
|
|
|
requestURL.RawQuery = transportConfiguration.GetNormalizedQuery()
|
|
|
|
requestURL.RawQuery = transportConfiguration.GetNormalizedQuery()
|
|
|
|
|
|
|
|
|
|
|
|
httpClient, muxResource := getHTTPClient(ctx, dest, streamSettings)
|
|
|
|
httpClient, muxRes := getHTTPClient(ctx, dest, streamSettings)
|
|
|
|
|
|
|
|
|
|
|
|
var httpClient2 DialerClient
|
|
|
|
var httpClient2 DialerClient
|
|
|
|
|
|
|
|
var muxRes2 *muxResource
|
|
|
|
var requestURL2 url.URL
|
|
|
|
var requestURL2 url.URL
|
|
|
|
if transportConfiguration.DownloadSettings != nil {
|
|
|
|
if transportConfiguration.DownloadSettings != nil {
|
|
|
|
|
|
|
|
globalDialerAccess.Lock()
|
|
|
|
|
|
|
|
if streamSettings.DownloadSettings == nil {
|
|
|
|
|
|
|
|
streamSettings.DownloadSettings = common.Must2(internet.ToMemoryStreamConfig(transportConfiguration.DownloadSettings)).(*internet.MemoryStreamConfig)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
globalDialerAccess.Unlock()
|
|
|
|
|
|
|
|
memory2 := streamSettings.DownloadSettings
|
|
|
|
dest2 := net.Destination{
|
|
|
|
dest2 := net.Destination{
|
|
|
|
Address: transportConfiguration.DownloadSettings.Address.AsAddress(), // just panic
|
|
|
|
Address: transportConfiguration.DownloadSettings.Address.AsAddress(), // just panic
|
|
|
|
Port: net.Port(transportConfiguration.DownloadSettings.Port),
|
|
|
|
Port: net.Port(transportConfiguration.DownloadSettings.Port),
|
|
|
|
Network: net.Network_TCP,
|
|
|
|
Network: net.Network_TCP,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
memory2 := common.Must2(internet.ToMemoryStreamConfig(transportConfiguration.DownloadSettings)).(*internet.MemoryStreamConfig)
|
|
|
|
httpClient2, muxRes2 = getHTTPClient(ctx, dest2, memory2)
|
|
|
|
httpClient2, _ = getHTTPClient(ctx, dest2, memory2) // no multiplex
|
|
|
|
|
|
|
|
if tls.ConfigFromStreamSettings(memory2) != nil || reality.ConfigFromStreamSettings(memory2) != nil {
|
|
|
|
if tls.ConfigFromStreamSettings(memory2) != nil || reality.ConfigFromStreamSettings(memory2) != nil {
|
|
|
|
requestURL2.Scheme = "https"
|
|
|
|
requestURL2.Scheme = "https"
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -284,13 +290,19 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
|
|
|
|
// uploadWriter wrapper, exact size limits can be enforced
|
|
|
|
// uploadWriter wrapper, exact size limits can be enforced
|
|
|
|
uploadPipeReader, uploadPipeWriter := pipe.New(pipe.WithSizeLimit(maxUploadSize - 1))
|
|
|
|
uploadPipeReader, uploadPipeWriter := pipe.New(pipe.WithSizeLimit(maxUploadSize - 1))
|
|
|
|
|
|
|
|
|
|
|
|
if muxResource != nil {
|
|
|
|
if muxRes != nil {
|
|
|
|
muxResource.OpenRequests.Add(1)
|
|
|
|
muxRes.OpenRequests.Add(1)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if muxRes2 != nil {
|
|
|
|
|
|
|
|
muxRes2.OpenRequests.Add(1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
go func() {
|
|
|
|
if muxResource != nil {
|
|
|
|
if muxRes != nil {
|
|
|
|
defer muxResource.OpenRequests.Add(-1)
|
|
|
|
defer muxRes.OpenRequests.Add(-1)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if muxRes2 != nil {
|
|
|
|
|
|
|
|
defer muxRes2.OpenRequests.Add(-1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
requestsLimiter := semaphore.New(int(scMaxConcurrentPosts.roll()))
|
|
|
|
requestsLimiter := semaphore.New(int(scMaxConcurrentPosts.roll()))
|
|
|
|