Rtspsrc 'before-send' returns RTSPMessage with no data

I am trying to catch the “PAUSE” method from an rtspsrc element using the ‘before-send’ event to prevent the message making it through to my rtsp-server. There are 7 separate piplines streaming from the server.
The event appears to be captured but dereferencing the RTSPMessage returns what looks like empty or uninitialised data.

Am I doing this correctly or is there a way to retrieve this information without doing unsafe Rust?

// Connect to the before-send signal from rtspsrc
	/*
		Unfortunately, going to the NULL state involves going through PAUSED,
		so rtspsrc does not know the difference and will send a PAUSE when you wanted a TEARDOWN.
		The workaround is to hook into the before-send signal and return FALSE in this case.
		REF: https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-language=c
	*/
	source.connect("before-send", false, move |values| {
		error!("Signal received: {:?}", values);
		let source = values[0]
			.get::<gst::Element>()
			.expect("Failed to get source");

		let message_ptr = values[1]
			.get::<RTSPMessage>()
			.expect("Failed to get Message")
			.as_ptr();


		unsafe {
			let message = *message_ptr;

			debug!("RTSP Message: {:?}", message);
			
		}

		Some(true.into())
	});

Console output:

2025-08-07T05:05:28.579879Z DEBUG Signal received: [(GstRTSPSrc) (GstRTSPSrc) source, (GstRTSPMessage) ((GstRTSPMessage*) 000000AEC16FF8B0)]
2025-08-07T05:05:28.579886Z DEBUG Signal received: [(GstRTSPSrc) (GstRTSPSrc) source, (GstRTSPMessage) ((GstRTSPMessage*) 000000AEC17FF590)]
2025-08-07T05:05:28.579887Z DEBUG Signal received: [(GstRTSPSrc) (GstRTSPSrc) source, (GstRTSPMessage) ((GstRTSPMessage*) 000000AEC0AFF610)]
2025-08-07T05:05:28.579886Z DEBUG Signal received: [(GstRTSPSrc) (GstRTSPSrc) source, (GstRTSPMessage) ((GstRTSPMessage*) 000000AEC0BFF8E0)]
2025-08-07T05:05:28.580861Z DEBUG RTSP Message: GstRTSPMessage @ 0xaec0bfec00 { type_: 0, type_data: GstRTSPMessage_type_data @ 0xaec0bfec08 { request: GstRTSPMessage_type_data_request @ 0xaec0bfec08 { method: 0, uri: 0x0, version: 0 }, response: GstRTSPMessage_type_data_response @ 0xaec0bfec08 { code: 0, reason: 0x0, version: 0 }, data: GstRTSPMessage_type_data_data @ 0xaec0bfec08 { channel: 0 } } }
2025-08-07T05:05:28.580286Z DEBUG RTSP Message: GstRTSPMessage @ 0xaec16febd0 { type_: 0, type_data: GstRTSPMessage_type_data @ 0xaec16febd8 { request: GstRTSPMessage_type_data_request @ 0xaec16febd8 { method: 0, uri: 0x0, version: 0 }, response: GstRTSPMessage_type_data_response @ 0xaec16febd8 { code: 0, reason: 0x0, version: 0 }, data: GstRTSPMessage_type_data_data @ 0xaec16febd8 { channel: 0 } } }
2025-08-07T05:05:28.580543Z DEBUG RTSP Message: GstRTSPMessage @ 0xaec17fe8b0 { type_: 0, type_data: GstRTSPMessage_type_data @ 0xaec17fe8b8 { request: GstRTSPMessage_type_data_request @ 0xaec17fe8b8 { method: 0, uri: 0x0, version: 0 }, response: GstRTSPMessage_type_data_response @ 0xaec17fe8b8 { code: 0, reason: 0x0, version: 0 }, data: GstRTSPMessage_type_data_data @ 0xaec17fe8b8 { channel: 0 } } }
2025-08-07T05:05:28.580687Z DEBUG RTSP Message: GstRTSPMessage @ 0xaec0afe930 { type_: 0, type_data: GstRTSPMessage_type_data @ 0xaec0afe938 { request: GstRTSPMessage_type_data_request @ 0xaec0afe938 { method: 0, uri: 0x0, version: 0 }, response: GstRTSPMessage_type_data_response @ 0xaec0afe938 { code: 0, reason: 0x0, version: 0 }, data: GstRTSPMessage_type_data_data @ 0xaec0afe938 { channel: 0 } } }
2025-08-07T05:05:28.579924Z DEBUG Signal received: [(GstRTSPSrc) (GstRTSPSrc) source, (GstRTSPMessage) ((GstRTSPMessage*) 000000AEC15FF230)]
2025-08-07T05:05:28.583062Z DEBUG RTSP Message: GstRTSPMessage @ 0xaec15fe550 { type_: 0, type_data: GstRTSPMessage_type_data @ 0xaec15fe558 { request: GstRTSPMessage_type_data_request @ 0xaec15fe558 { method: 0, uri: 0x0, version: 0 }, response: GstRTSPMessage_type_data_response @ 0xaec15fe558 { code: 0, reason: 0x0, version: 0 }, data: GstRTSPMessage_type_data_data @ 0xaec15fe558 { channel: 0 } } }