Ethercard udp data parsing

I’m pretty sure I’m doing something silly here. I just need to get my incoming udp data into a variable using the ethercard library and an ENC28J60 ethernet board. Here’s the code I’m working with.

#include <EtherCard.h>
#include <IPAddress.h>

#define STATIC 1  // set to 1 to disable DHCP (adjust myip/gwip values below)

// ethernet interface ip address
static byte myip[] = { 192,168,1,50 };
// gateway ip address
static byte gwip[] = { 192,168,1,1 };

// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x70,0x69,0x69,0x2D,0x30,0x31 };
byte Ethernet::buffer[500]; // tcp/ip send and receive buffer
//callback that prints received packets to the serial port
void udpSerialPrint(word port, byte ip[4], const char *data, word len) {
  char incoming = ether.packetReceive();

void setup(){

  if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)
    Serial.println( "Failed to access Ethernet controller");
  ether.staticSetup(myip, gwip);
  if (!ether.dhcpSetup())
    Serial.println("DHCP failed");

  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip);
  ether.printIp("DNS: ", ether.dnsip);

  //register udpSerialPrint() to port 1337
  ether.udpServerListenOnPort(&udpSerialPrint, 1337);

  //register udpSerialPrint() to port 42.
  ether.udpServerListenOnPort(&udpSerialPrint, 42);

void loop(){
  //this must be called for ethercard functions to work.

It’s just a slightly modified version of the UDPListener example that comes with the ethercard library. I’m assuming my variable “incoming” isn’t being populated because where ether.packetReceive is looking at an empty buffer by the time it tries to populate. Could be wrong as well. Thanks for any help.

  char incoming = ether.packetReceive();

Why do you think packetReceive() returns a char?