Well. I'm getting the error
Attempt to free unreferenced scalar: SV 0x316cc3c, Perl interpreter: 0
+x240a4bc a
t server.pl line 67.
in my server code. Never seen this before. What scares me is the Perl interpreter part. Any ideas?
#!/usr/bin/perl -w
use strict;
use IO::Socket;
use File::Slurp;
use threads;
use threads::shared;
use XML::LibXML;
my $subscribe:shared = 0;
my $socket=new IO::Socket::INET->new(PeerPort=>12345,Proto=>'udp',Peer
+Addr=>'localhost');
print "This is a test Sending Server\n";
my $capxml = read_file("C:\\Users\\deadpickle\\Desktop\\UAS\\GRRUVI_1.
+60\\test xml\\capabilities.xml");
my $recv = threads->new(\&recvxml);
my $send = threads->new(\&sendxml);
while(1){
}
sub sendxml{
my $socket=new IO::Socket::INET->new(PeerPort=>12345,Proto=>'udp',
+PeerAddr=>'localhost');
while (1) {
#send capabilities every 10 seconds
$socket->send($capxml);
print "Sending Capabilities\n";
sleep 10;
}
}
sub recvxml{
my $xml;
my $kid;
my $socket=new IO::Socket::INET->new(LocalPort=>56789,Proto=>'udp'
+);
while(1) {
print "Waiting for message\n";
$socket->recv($xml,3000);
print "Recieved Message: $xml\n";
# Parse Message
my $parser = XML::LibXML->new;
$parser->recover(1);
my $doc = $parser->parse_string($xml);
my $element = $doc->getDocumentElement;
my $elname = $element -> getName();
if ($elname eq 'StreamSubscribe') {
my @cap = $element -> childNodes();
foreach $kid(@cap) {
$elname = $kid -> getName();
if ($elname eq 'System') {
my @syscap = $element -> childNodes();
foreach $kid(@syscap) {
$elname = $kid -> getName();
if ($elname eq 'Stream') {
my $stream = $kid->textContent;
$subscribe = 1 if ($stream eq 'Telemetry')
+;
$subscribe = 2 if ($stream eq 'Flight Plan
+');
}
}
}
}
}
print "Subscribed to Telemetry\n" if $subscribe == 1;
print "Subscribed to Flight Plan\n" if $subscribe == 2;
}
}