@@ -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 ]
0 commit comments