Leonardo fail to send UDP

I am currently working on a project to send OSC Messages from a Leonardo style board with integrated W5500 chip (dfr0342) but am running into an issue keeping the UDP messages live. When using the basic web server example the board runs fine, if I then upload the OSC example below it will send the UDP messages for about 2 seconds before stopping and loosing all activity on the switch and arduino board.

The code will only work when I have uploaded it after the web server has been running, if I boot the board with the code on it there is no activity on the RJ45 sockets or switch.

Any help would be appreciated.

#include <Ethernet2.h>
#include <EthernetUdp2.h>
#include <SPI.h>    
#include <OSCMessage.h>
#define SS     10U    //D10 ---- SS 
#define RST    11U    //D11 -----Reset


EthernetUDP Udp;

//the Arduino's IP
IPAddress ip(192, 168, 1, 250);
//destination IP
IPAddress outIp(192, 168, 1, 20);
const unsigned int outPort = 5300;

 byte mac[] = {  
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // you can find this written on the board of some Arduino Ethernets or shields
void setup() {
  Ethernet.begin(mac,ip);
    Udp.begin(8888);

}


void loop(){
  //the message wants an OSC address as first argument
  OSCMessage msg("/analog/2");
  
  Udp.beginPacket(outIp, outPort);
    msg.send(Udp); // send the bytes to the SLIP stream
  Udp.endPacket(); // mark the end of the OSC Packet
  msg.empty(); // free space occupied by message

  delay(100);
}
  Udp.beginPacket(outIp, outPort);
    msg.send(Udp); // send the bytes to the SLIP stream
  Udp.endPacket(); // mark the end of the OSC Packet
  msg.empty(); // free space occupied by message

This code does not make sense. The beginPacket() method allocated/initializes an array. Between that function call and the endPacket() function call, you write data to be sent to the array. When you call endPacket, the contents of the packet are sent. Calling msg.send() with the Udp object with the empty array doesn’t make sense.