Skip to content

Commit ac7068d

Browse files
committed
Fix net graph message handler memory leaks.
1 parent 0622afa commit ac7068d

31 files changed

+317
-227
lines changed

bindings/LDK/Bindings.swift

+11-8
Original file line numberDiff line numberDiff line change
@@ -6010,7 +6010,7 @@ public class Bindings {
60106010
}
60116011

60126012
return
6013-
Result_PublicKeyErrorZ(pointer: recover_pk(msgWrapper.cOpaqueStruct!, Bindings.new_LDKStr(string: sig)))
6013+
Result_PublicKeyErrorZ(pointer: recover_pk(msgWrapper.cOpaqueStruct!, Bindings.new_LDKStr(string: sig, chars_is_owned: true)))
60146014

60156015

60166016
}
@@ -6023,7 +6023,7 @@ public class Bindings {
60236023
}
60246024

60256025
return
6026-
verify(msgWrapper.cOpaqueStruct!, Bindings.new_LDKStr(string: sig), Bindings.new_LDKPublicKey(array: pk))
6026+
verify(msgWrapper.cOpaqueStruct!, Bindings.new_LDKStr(string: sig, chars_is_owned: true), Bindings.new_LDKPublicKey(array: pk))
60276027

60286028

60296029
}
@@ -6255,7 +6255,7 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
62556255
}
62566256

62576257
return
6258-
Result_InvoiceSignOrCreationErrorZ(pointer: create_phantom_invoice(amt_msat.danglingClone().cOpaqueStruct!, Bindings.new_LDKStr(string: description), Bindings.new_LDKThirtyTwoBytes(array: payment_hash), Bindings.new_LDKThirtyTwoBytes(array: payment_secret), phantom_route_hintsWrapper.dangle().cOpaqueStruct!, keys_manager.cOpaqueStruct!, network))
6258+
Result_InvoiceSignOrCreationErrorZ(pointer: create_phantom_invoice(amt_msat.danglingClone().cOpaqueStruct!, Bindings.new_LDKStr(string: description, chars_is_owned: true), Bindings.new_LDKThirtyTwoBytes(array: payment_hash), Bindings.new_LDKThirtyTwoBytes(array: payment_secret), phantom_route_hintsWrapper.dangle().cOpaqueStruct!, keys_manager.cOpaqueStruct!, network))
62596259

62606260

62616261
}
@@ -6282,7 +6282,7 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
62826282

62836283
return withUnsafePointer(to: channelmanager.cOpaqueStruct!) { (channelmanagerPointer: UnsafePointer<LDKChannelManager>) in
62846284

6285-
Result_InvoiceSignOrCreationErrorZ(pointer: create_invoice_from_channelmanager(channelmanagerPointer, keys_manager.cOpaqueStruct!, network, amt_msat.danglingClone().cOpaqueStruct!, Bindings.new_LDKStr(string: description)))
6285+
Result_InvoiceSignOrCreationErrorZ(pointer: create_invoice_from_channelmanager(channelmanagerPointer, keys_manager.cOpaqueStruct!, network, amt_msat.danglingClone().cOpaqueStruct!, Bindings.new_LDKStr(string: description, chars_is_owned: true)))
62866286

62876287
}
62886288

@@ -6312,7 +6312,7 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
63126312

63136313
return withUnsafePointer(to: channelmanager.cOpaqueStruct!) { (channelmanagerPointer: UnsafePointer<LDKChannelManager>) in
63146314

6315-
Result_InvoiceSignOrCreationErrorZ(pointer: create_invoice_from_channelmanager_and_duration_since_epoch(channelmanagerPointer, keys_manager.cOpaqueStruct!, network, amt_msat.danglingClone().cOpaqueStruct!, Bindings.new_LDKStr(string: description), duration_since_epoch))
6315+
Result_InvoiceSignOrCreationErrorZ(pointer: create_invoice_from_channelmanager_and_duration_since_epoch(channelmanagerPointer, keys_manager.cOpaqueStruct!, network, amt_msat.danglingClone().cOpaqueStruct!, Bindings.new_LDKStr(string: description, chars_is_owned: true), duration_since_epoch))
63166316

63176317
}
63186318

@@ -6429,7 +6429,7 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
64296429
}
64306430
/* RUST_TO_SWIFT_END */
64316431

6432-
public class func LDKStr_to_string(nativeType: LDKStr) -> String {
6432+
public class func LDKStr_to_string(nativeType: LDKStr, deallocate: Bool = true) -> String {
64336433
var array = [UInt8]()
64346434
for index in 0..<Int(nativeType.len) {
64356435
let currentEntry = nativeType.chars[index]
@@ -6438,6 +6438,9 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
64386438
}
64396439
let data = Data(bytes: array)
64406440
let string = String(data: data, encoding: .utf8)!
6441+
if deallocate && nativeType.len > 0{
6442+
Str_free(nativeType)
6443+
}
64416444
return string
64426445
}
64436446

@@ -6471,7 +6474,7 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
64716474
let nativeKeysManager = keysManager.cOpaqueStruct!
64726475
let amount = Option_u64Z(value: amountMsat)
64736476
let nativeAmount = amount.cOpaqueStruct!
6474-
let nativeDescription = Self.new_LDKStr(string: description)
6477+
let nativeDescription = Self.new_LDKStr(string: description, chars_is_owned: true)
64756478
return withUnsafePointer(to: channelManager.cOpaqueStruct!) { (pointer: UnsafePointer<LDKChannelManager>) -> Result_InvoiceSignOrCreationErrorZ in
64766479
let nativeResult = create_invoice_from_channelmanager(pointer, nativeKeysManager, network, nativeAmount, nativeDescription)
64776480
return Result_InvoiceSignOrCreationErrorZ(pointer: nativeResult)
@@ -6490,7 +6493,7 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
64906493
*/
64916494

64926495
public class func get_ldk_swift_bindings_version() -> String {
6493-
return "fe0ea5b41ca6eb7ef88a4d2fbd7dc1f647c89112"
6496+
return "2d6e99262b4c9728e43b7292a393e4100219a298"
64946497
}
64956498

64966499
}

bindings/LDK/options/APIError.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -120,22 +120,22 @@ APIError_clone(origPointer)
120120

121121
public class func apimisuse_error(err: String) -> APIError {
122122

123-
return APIError(pointer: APIError_apimisuse_error(Bindings.new_LDKStr(string: err)));
123+
return APIError(pointer: APIError_apimisuse_error(Bindings.new_LDKStr(string: err, chars_is_owned: true)));
124124
}
125125

126126
public class func fee_rate_too_high(err: String, feerate: UInt32) -> APIError {
127127

128-
return APIError(pointer: APIError_fee_rate_too_high(Bindings.new_LDKStr(string: err), feerate));
128+
return APIError(pointer: APIError_fee_rate_too_high(Bindings.new_LDKStr(string: err, chars_is_owned: true), feerate));
129129
}
130130

131131
public class func route_error(err: String) -> APIError {
132132

133-
return APIError(pointer: APIError_route_error(Bindings.new_LDKStr(string: err)));
133+
return APIError(pointer: APIError_route_error(Bindings.new_LDKStr(string: err, chars_is_owned: true)));
134134
}
135135

136136
public class func channel_unavailable(err: String) -> APIError {
137137

138-
return APIError(pointer: APIError_channel_unavailable(Bindings.new_LDKStr(string: err)));
138+
return APIError(pointer: APIError_channel_unavailable(Bindings.new_LDKStr(string: err, chars_is_owned: true)));
139139
}
140140

141141
public class func monitor_update_failed() -> APIError {

bindings/LDK/options/ClosureReason.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ ClosureReason_clone(origPointer)
9393

9494
public class func counterparty_force_closed(peer_msg: String) -> ClosureReason {
9595

96-
return ClosureReason(pointer: ClosureReason_counterparty_force_closed(Bindings.new_LDKStr(string: peer_msg)));
96+
return ClosureReason(pointer: ClosureReason_counterparty_force_closed(Bindings.new_LDKStr(string: peer_msg, chars_is_owned: true)));
9797
}
9898

9999
public class func holder_force_closed() -> ClosureReason {
@@ -118,7 +118,7 @@ ClosureReason_clone(origPointer)
118118

119119
public class func processing_error(err: String) -> ClosureReason {
120120

121-
return ClosureReason(pointer: ClosureReason_processing_error(Bindings.new_LDKStr(string: err)));
121+
return ClosureReason(pointer: ClosureReason_processing_error(Bindings.new_LDKStr(string: err, chars_is_owned: true)));
122122
}
123123

124124
public class func disconnected_peer() -> ClosureReason {

bindings/LDK/options/ParseError.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ ParseError_clone(origPointer)
190190

191191
public class func invalid_slice_length(a: String) -> ParseError {
192192

193-
return ParseError(pointer: ParseError_invalid_slice_length(Bindings.new_LDKStr(string: a)));
193+
return ParseError(pointer: ParseError_invalid_slice_length(Bindings.new_LDKStr(string: a, chars_is_owned: true)));
194194
}
195195

196196
public class func skip() -> ParseError {

bindings/LDK/options/PaymentError.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ PaymentError_clone(origPointer)
102102

103103
public class func invoice(a: String) -> PaymentError {
104104

105-
return PaymentError(pointer: PaymentError_invoice(Bindings.new_LDKStr(string: a)));
105+
return PaymentError(pointer: PaymentError_invoice(Bindings.new_LDKStr(string: a, chars_is_owned: true)));
106106
}
107107

108108
public class func routing(a: LightningError) -> PaymentError {

bindings/LDK/results/Result_StringErrorZ.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class Result_StringErrorZ: NativeTypeWrapper {
5454

5555
public class func ok(o: String) -> Result_StringErrorZ {
5656

57-
return Result_StringErrorZ(pointer: CResult_StringErrorZ_ok(Bindings.new_LDKStr(string: o)));
57+
return Result_StringErrorZ(pointer: CResult_StringErrorZ_ok(Bindings.new_LDKStr(string: o, chars_is_owned: true)));
5858
}
5959

6060
#warning("This method passes non-cloneable objects by owned value. Here be dragons.")

bindings/LDK/structs/BackgroundProcessor.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public init(persister: Persister, event_handler: EventHandler, chain_monitor: Ch
1313
Self.instanceCounter += 1
1414
self.instanceNumber = Self.instanceCounter
1515

16-
let graphMessageHandler = net_graph_msg_handler?.dangle().cOpaqueStruct! ?? LDKNetGraphMsgHandler(inner: nil, is_owned: true)
16+
let graphMessageHandler = net_graph_msg_handler?.cOpaqueStruct! ?? LDKNetGraphMsgHandler(inner: nil, is_owned: true)
1717

1818
self.cOpaqueStruct = withUnsafePointer(to: chain_monitor.cOpaqueStruct!) { (chain_monitorPointer: UnsafePointer<LDKChainMonitor>) in
1919
withUnsafePointer(to: channel_manager.cOpaqueStruct!) { (channel_managerPointer: UnsafePointer<LDKChannelManager>) in

bindings/LDK/structs/Description.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Description_eq(aPointer, bPointer)
5858

5959
public class func new(description: String) -> Result_DescriptionCreationErrorZ {
6060

61-
return Result_DescriptionCreationErrorZ(pointer: Description_new(Bindings.new_LDKStr(string: description)));
61+
return Result_DescriptionCreationErrorZ(pointer: Description_new(Bindings.new_LDKStr(string: description, chars_is_owned: true)));
6262
}
6363

6464
public func into_inner() -> String {

bindings/LDK/structs/ErrorMessage.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class ErrorMessage: NativeTypeWrapper {
1111
Self.instanceCounter += 1
1212
self.instanceNumber = Self.instanceCounter
1313

14-
self.cOpaqueStruct = ErrorMessage_new(Bindings.new_LDKThirtyTwoBytes(array: channel_id_arg), Bindings.new_LDKStr(string: data_arg))
14+
self.cOpaqueStruct = ErrorMessage_new(Bindings.new_LDKThirtyTwoBytes(array: channel_id_arg), Bindings.new_LDKStr(string: data_arg, chars_is_owned: true))
1515
super.init(conflictAvoidingVariableName: 0)
1616

1717
}
@@ -62,7 +62,7 @@ ErrorMessage_get_data(this_ptrPointer)
6262
let this_ptrPointer = UnsafeMutablePointer<LDKErrorMessage>.allocate(capacity: 1)
6363
this_ptrPointer.initialize(to: self.cOpaqueStruct!)
6464

65-
return ErrorMessage_set_data(this_ptrPointer, Bindings.new_LDKStr(string: val));
65+
return ErrorMessage_set_data(this_ptrPointer, Bindings.new_LDKStr(string: val, chars_is_owned: true));
6666
}
6767

6868
public func clone() -> ErrorMessage {

bindings/LDK/structs/FilesystemPersister.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class FilesystemPersister: NativeTypeWrapper {
1111
Self.instanceCounter += 1
1212
self.instanceNumber = Self.instanceCounter
1313

14-
self.cOpaqueStruct = FilesystemPersister_new(Bindings.new_LDKStr(string: path_to_channel_data))
14+
self.cOpaqueStruct = FilesystemPersister_new(Bindings.new_LDKStr(string: path_to_channel_data, chars_is_owned: true))
1515
super.init(conflictAvoidingVariableName: 0)
1616

1717
}
@@ -45,14 +45,14 @@ FilesystemPersister_get_data_dir(this_argPointer)
4545
public class func persist_manager(data_dir: String, manager: ChannelManager) -> Result_NoneErrorZ {
4646

4747
return Result_NoneErrorZ(pointer: withUnsafePointer(to: manager.cOpaqueStruct!) { (managerPointer: UnsafePointer<LDKChannelManager>) in
48-
FilesystemPersister_persist_manager(Bindings.new_LDKStr(string: data_dir), managerPointer)
48+
FilesystemPersister_persist_manager(Bindings.new_LDKStr(string: data_dir, chars_is_owned: true), managerPointer)
4949
});
5050
}
5151

5252
public class func persist_network_graph(data_dir: String, network_graph: NetworkGraph) -> Result_NoneErrorZ {
5353

5454
return Result_NoneErrorZ(pointer: withUnsafePointer(to: network_graph.cOpaqueStruct!) { (network_graphPointer: UnsafePointer<LDKNetworkGraph>) in
55-
FilesystemPersister_persist_network_graph(Bindings.new_LDKStr(string: data_dir), network_graphPointer)
55+
FilesystemPersister_persist_network_graph(Bindings.new_LDKStr(string: data_dir, chars_is_owned: true), network_graphPointer)
5656
});
5757
}
5858

bindings/LDK/structs/Invoice.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ Invoice_amount_milli_satoshis(this_argPointer)
183183

184184
public class func from_str(s: String) -> Result_InvoiceParseOrSemanticErrorZ {
185185

186-
return Result_InvoiceParseOrSemanticErrorZ(pointer: Invoice_from_str(Bindings.new_LDKStr(string: s)));
186+
return Result_InvoiceParseOrSemanticErrorZ(pointer: Invoice_from_str(Bindings.new_LDKStr(string: s, chars_is_owned: true)));
187187
}
188188

189189
public func to_str() -> String {

bindings/LDK/structs/LightningError.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class LightningError: NativeTypeWrapper {
1111
Self.instanceCounter += 1
1212
self.instanceNumber = Self.instanceCounter
1313

14-
self.cOpaqueStruct = LightningError_new(Bindings.new_LDKStr(string: err_arg), action_arg.danglingClone().cOpaqueStruct!)
14+
self.cOpaqueStruct = LightningError_new(Bindings.new_LDKStr(string: err_arg, chars_is_owned: true), action_arg.danglingClone().cOpaqueStruct!)
1515
super.init(conflictAvoidingVariableName: 0)
1616

1717
}
@@ -47,7 +47,7 @@ LightningError_get_err(this_ptrPointer)
4747
let this_ptrPointer = UnsafeMutablePointer<LDKLightningError>.allocate(capacity: 1)
4848
this_ptrPointer.initialize(to: self.cOpaqueStruct!)
4949

50-
return LightningError_set_err(this_ptrPointer, Bindings.new_LDKStr(string: val));
50+
return LightningError_set_err(this_ptrPointer, Bindings.new_LDKStr(string: val, chars_is_owned: true));
5151
}
5252

5353
public func get_action() -> ErrorAction {

bindings/LDK/structs/Record.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Record_get_args(this_ptrPointer)
5353
let this_ptrPointer = UnsafeMutablePointer<LDKRecord>.allocate(capacity: 1)
5454
this_ptrPointer.initialize(to: self.cOpaqueStruct!)
5555

56-
return Record_set_args(this_ptrPointer, Bindings.new_LDKStr(string: val));
56+
return Record_set_args(this_ptrPointer, Bindings.new_LDKStr(string: val, chars_is_owned: true));
5757
}
5858

5959
public func get_module_path() -> String {
@@ -68,7 +68,7 @@ Record_get_module_path(this_ptrPointer)
6868
let this_ptrPointer = UnsafeMutablePointer<LDKRecord>.allocate(capacity: 1)
6969
this_ptrPointer.initialize(to: self.cOpaqueStruct!)
7070

71-
return Record_set_module_path(this_ptrPointer, Bindings.new_LDKStr(string: val));
71+
return Record_set_module_path(this_ptrPointer, Bindings.new_LDKStr(string: val, chars_is_owned: true));
7272
}
7373

7474
public func get_file() -> String {
@@ -83,7 +83,7 @@ Record_get_file(this_ptrPointer)
8383
let this_ptrPointer = UnsafeMutablePointer<LDKRecord>.allocate(capacity: 1)
8484
this_ptrPointer.initialize(to: self.cOpaqueStruct!)
8585

86-
return Record_set_file(this_ptrPointer, Bindings.new_LDKStr(string: val));
86+
return Record_set_file(this_ptrPointer, Bindings.new_LDKStr(string: val, chars_is_owned: true));
8787
}
8888

8989
public func get_line() -> UInt32 {

bindings/LDK/structs/SignedRawInvoice.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ SignedRawInvoice_check_signature(this_argPointer)
9191

9292
public class func from_str(s: String) -> Result_SignedRawInvoiceParseErrorZ {
9393

94-
return Result_SignedRawInvoiceParseErrorZ(pointer: SignedRawInvoice_from_str(Bindings.new_LDKStr(string: s)));
94+
return Result_SignedRawInvoiceParseErrorZ(pointer: SignedRawInvoice_from_str(Bindings.new_LDKStr(string: s, chars_is_owned: true)));
9595
}
9696

9797
public func to_str() -> String {

bindings/LDK/structs/WarningMessage.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class WarningMessage: NativeTypeWrapper {
1111
Self.instanceCounter += 1
1212
self.instanceNumber = Self.instanceCounter
1313

14-
self.cOpaqueStruct = WarningMessage_new(Bindings.new_LDKThirtyTwoBytes(array: channel_id_arg), Bindings.new_LDKStr(string: data_arg))
14+
self.cOpaqueStruct = WarningMessage_new(Bindings.new_LDKThirtyTwoBytes(array: channel_id_arg), Bindings.new_LDKStr(string: data_arg, chars_is_owned: true))
1515
super.init(conflictAvoidingVariableName: 0)
1616

1717
}
@@ -62,7 +62,7 @@ WarningMessage_get_data(this_ptrPointer)
6262
let this_ptrPointer = UnsafeMutablePointer<LDKWarningMessage>.allocate(capacity: 1)
6363
this_ptrPointer.initialize(to: self.cOpaqueStruct!)
6464

65-
return WarningMessage_set_data(this_ptrPointer, Bindings.new_LDKStr(string: val));
65+
return WarningMessage_set_data(this_ptrPointer, Bindings.new_LDKStr(string: val, chars_is_owned: true));
6666
}
6767

6868
public func clone() -> WarningMessage {

0 commit comments

Comments
 (0)