Skip to content

Commit 5b8a794

Browse files
committed
ref: resolve TODO & minimize changes
1 parent ce14a8c commit 5b8a794

4 files changed

Lines changed: 33 additions & 69 deletions

File tree

src/Sentry/Http/HttpTransportBase.cs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -187,20 +187,8 @@ protected internal virtual HttpRequestMessage CreateRequest(Envelope envelope)
187187
throw new InvalidOperationException("The DSN is expected to be set at this point.");
188188
}
189189

190-
var dsn = Dsn.Parse(_options.Dsn);
191-
var authHeader =
192-
$"Sentry sentry_version={_options.SentryVersion}," +
193-
$"sentry_client={SdkVersion.Instance.Name}/{SdkVersion.Instance.Version}," +
194-
$"sentry_key={dsn.PublicKey}" +
195-
(dsn.SecretKey is { } secretKey ? $",sentry_secret={secretKey}" : null);
196-
197-
return new HttpRequestMessage
198-
{
199-
RequestUri = dsn.GetEnvelopeEndpointUri(),
200-
Method = HttpMethod.Post,
201-
Headers = { { "X-Sentry-Auth", authHeader } },
202-
Content = new EnvelopeHttpContent(envelope, _options.DiagnosticLogger, _clock)
203-
};
190+
var content = new EnvelopeHttpContent(envelope, _options.DiagnosticLogger, _clock);
191+
return _options.CreateRequest(content);
204192
}
205193

206194
/// <summary>

src/Sentry/Platforms/Native/CFunctions.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,8 @@ public static bool Init(SentryOptions options)
141141

142142
unsafe
143143
{
144-
var transport = new NativeHttpTransport(options, options.GetHttpClient());
145144
var cTransport = sentry_transport_new(&nativeTransport);
146-
sentry_transport_set_state(cTransport, GCHandle.ToIntPtr(GCHandle.Alloc(transport)));
145+
sentry_transport_set_state(cTransport, GCHandle.ToIntPtr(GCHandle.Alloc(options)));
147146
sentry_transport_set_free_func(cTransport, &nativeTransportFree);
148147
sentry_options_set_transport(cOptions, cTransport);
149148
}
@@ -399,19 +398,28 @@ private static void nativeTransport(IntPtr envelope, IntPtr state)
399398
{
400399
try
401400
{
402-
var transport = GCHandle.FromIntPtr(state).Target as NativeHttpTransport;
403-
if (transport is not null)
401+
var options = GCHandle.FromIntPtr(state).Target as SentryOptions;
402+
if (options is not null)
404403
{
405404
var data = sentry_envelope_serialize(envelope, out var size);
406-
transport.SendData(data, (uint)size);
405+
var content = new StringContent(Marshal.PtrToStringAnsi(data, (int)size));
407406
sentry_free(data);
407+
408+
using var client = options.GetHttpClient();
409+
using var request = options.CreateRequest(content);
410+
// TODO: fix integration-test/sentry-server.py with gzip compression
411+
// client.SendAsync(request).GetAwaiter().GetResult();
412+
client.Send(request);
408413
}
409-
sentry_envelope_free(envelope);
410414
}
411415
catch
412416
{
413417
// never allow an exception back to native code - it would crash the app
414418
}
419+
finally
420+
{
421+
sentry_envelope_free(envelope);
422+
}
415423
}
416424

417425
[UnmanagedCallersOnly]

src/Sentry/Platforms/Native/NativeHttpTransport.cs

Lines changed: 0 additions & 49 deletions
This file was deleted.

src/Sentry/SentryOptions.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,23 @@ internal HttpClient GetHttpClient()
245245
return factory.Create(this);
246246
}
247247

248+
internal HttpRequestMessage CreateRequest(HttpContent content)
249+
{
250+
var authHeader =
251+
$"Sentry sentry_version={SentryVersion}," +
252+
$"sentry_client={SdkVersion.Instance.Name}/{SdkVersion.Instance.Version}," +
253+
$"sentry_key={ParsedDsn.PublicKey}" +
254+
(ParsedDsn.SecretKey is { } secretKey ? $",sentry_secret={secretKey}" : null);
255+
256+
return new HttpRequestMessage
257+
{
258+
RequestUri = ParsedDsn.GetEnvelopeEndpointUri(),
259+
Method = HttpMethod.Post,
260+
Headers = { { "X-Sentry-Auth", authHeader } },
261+
Content = content
262+
};
263+
}
264+
248265
/// <summary>
249266
/// Scope state processor.
250267
/// </summary>

0 commit comments

Comments
 (0)