diff --git a/src/libguac/guacamole/wol.h b/src/libguac/guacamole/wol.h
index cdbb739..9af1a8d 100644
--- a/src/libguac/guacamole/wol.h
+++ b/src/libguac/guacamole/wol.h
@@ -42,11 +42,15 @@
  * @param broadcast_addr
  *     The broadcast address to which to send the magic Wake-on-LAN packet.
  * 
+ * @param udp_port
+ *     The UDP port to use when sending the WoL packet.
+ * 
  * @return 
  *     Zero if the packet is successfully sent to the destination; non-zero
  *     if the packet cannot be sent.
  */
-int guac_wol_wake(const char* mac_addr, const char* broadcast_addr);
+int guac_wol_wake(const char* mac_addr, const char* broadcast_addr,
+        const unsigned short udp_port);
 
 #endif /* GUAC_WOL_H */
 
diff --git a/src/libguac/wol.c b/src/libguac/wol.c
index dcbd07c..9d69306 100644
--- a/src/libguac/wol.c
+++ b/src/libguac/wol.c
@@ -69,6 +69,9 @@
  * @param broadcast_addr
  *     The broadcast address to which to send the magic WoL packet.
  * 
+ * @param udp_port
+ *     The UDP port to use when sending the WoL packet.
+ * 
  * @param packet
  *     The magic WoL packet to send.
  * 
@@ -76,13 +79,13 @@
  *     The number of bytes sent, or zero if nothing could be sent.
  */
 static ssize_t __guac_wol_send_packet(const char* broadcast_addr,
-        unsigned char packet[]) {
+        const unsigned short udp_port, unsigned char packet[]) {
     
     struct sockaddr_in wol_dest;
     int wol_socket;
     
     /* Determine the IP version, starting with IPv4. */
-    wol_dest.sin_port = htons(GUAC_WOL_PORT);
+    wol_dest.sin_port = htons(udp_port);
     wol_dest.sin_family = AF_INET;
     int retval = inet_pton(wol_dest.sin_family, broadcast_addr, &(wol_dest.sin_addr));
     
@@ -165,7 +168,8 @@
  
 }
 
-int guac_wol_wake(const char* mac_addr, const char* broadcast_addr) {
+int guac_wol_wake(const char* mac_addr, const char* broadcast_addr,
+        const unsigned short udp_port) {
     
     unsigned char wol_packet[GUAC_WOL_PACKET_SIZE];
     unsigned int dest_mac[6];
@@ -183,7 +187,8 @@
     __guac_wol_create_magic_packet(wol_packet, dest_mac);
     
     /* Send the packet and record bytes sent. */
-    int bytes_sent = __guac_wol_send_packet(broadcast_addr, wol_packet);
+    int bytes_sent = __guac_wol_send_packet(broadcast_addr, udp_port, 
+            wol_packet);
     
     /* Return 0 if bytes were sent, otherwise return an error. */
     if (bytes_sent)
diff --git a/src/protocols/rdp/rdp.c b/src/protocols/rdp/rdp.c
index d7b7589..ce6a279 100644
--- a/src/protocols/rdp/rdp.c
+++ b/src/protocols/rdp/rdp.c
@@ -615,7 +615,8 @@
                 "and pausing for %d seconds.", settings->wol_wait_time);
         
         /* Send the Wake-on-LAN request. */
-        if (guac_wol_wake(settings->wol_mac_addr, settings->wol_broadcast_addr))
+        if (guac_wol_wake(settings->wol_mac_addr, settings->wol_broadcast_addr,
+                settings->wol_udp_port))
             return NULL;
         
         /* If wait time is specified, sleep for that amount of time. */
diff --git a/src/protocols/rdp/settings.c b/src/protocols/rdp/settings.c
index 57760d9..dd8a96f 100644
--- a/src/protocols/rdp/settings.c
+++ b/src/protocols/rdp/settings.c
@@ -124,6 +124,7 @@
     "wol-send-packet",
     "wol-mac-addr",
     "wol-broadcast-addr",
+    "wol-udp-port",
     "wol-wait-time",
     NULL
 };
@@ -610,6 +611,11 @@
     IDX_WOL_BROADCAST_ADDR,
     
     /**
+     * The UDP port to use in the magic WoL packet.
+     */
+    IDX_WOL_UDP_PORT,
+    
+    /**
      * The amount of time, in seconds, to wait after sending the WoL packet
      * before attempting to connect to the host.  This should be a reasonable
      * amount of time to allow the remote host to fully boot and respond to
@@ -1133,6 +1139,11 @@
             guac_user_parse_args_string(user, GUAC_RDP_CLIENT_ARGS, argv,
                 IDX_WOL_BROADCAST_ADDR, GUAC_WOL_LOCAL_IPV4_BROADCAST);
         
+        /* Parse the WoL broadcast port. */
+        settings->wol_udp_port = (unsigned short)
+            guac_user_parse_args_int(user, GUAC_RDP_CLIENT_ARGS, argv,
+                IDX_WOL_UDP_PORT, GUAC_WOL_PORT);
+        
         /* Parse the WoL wait time. */
         settings->wol_wait_time =
             guac_user_parse_args_int(user, GUAC_RDP_CLIENT_ARGS, argv,
@@ -1202,6 +1213,7 @@
     /* Free load balancer information string */
     free(settings->load_balance_info);
     
+    /* Free Wake-on-LAN strings */
     free(settings->wol_mac_addr);
     free(settings->wol_broadcast_addr);
 
diff --git a/src/protocols/rdp/settings.h b/src/protocols/rdp/settings.h
index d809221..323ba5d 100644
--- a/src/protocols/rdp/settings.h
+++ b/src/protocols/rdp/settings.h
@@ -584,6 +584,11 @@
     char* wol_broadcast_addr;
     
     /**
+     * The UDP port to use when sending the magic WoL packet.
+     */
+    unsigned short wol_udp_port;
+    
+    /**
      * The amount of time to wait after sending the magic WoL packet before
      * continuing the connection.
      */
diff --git a/src/protocols/ssh/settings.c b/src/protocols/ssh/settings.c
index 242e1d2..b286555 100644
--- a/src/protocols/ssh/settings.c
+++ b/src/protocols/ssh/settings.c
@@ -72,6 +72,7 @@
     "wol-send-packet",
     "wol-mac-addr",
     "wol-broadcast-addr",
+    "wol-udp-port",
     "wol-wait-time",
     NULL
 };
@@ -318,6 +319,11 @@
     IDX_WOL_BROADCAST_ADDR,
     
     /**
+     * The UDP port to use when sending the WoL packet. 
+     */
+    IDX_WOL_UDP_PORT,
+    
+    /**
      * The amount of time to wait after sending the magic WoL packet prior to
      * continuing the connection attempt.  The default is no wait time
      * (0 seconds).
@@ -533,6 +539,10 @@
             guac_user_parse_args_string(user, GUAC_SSH_CLIENT_ARGS, argv,
                 IDX_WOL_BROADCAST_ADDR, GUAC_WOL_LOCAL_IPV4_BROADCAST);
         
+        settings->wol_udp_port = (unsigned short)
+            guac_user_parse_args_int(user, GUAC_SSH_CLIENT_ARGS, argv,
+                IDX_WOL_UDP_PORT, GUAC_WOL_PORT);
+        
         settings->wol_wait_time =
             guac_user_parse_args_int(user, GUAC_SSH_CLIENT_ARGS, argv,
                 IDX_WOL_WAIT_TIME, GUAC_WOL_DEFAULT_BOOT_WAIT_TIME);
diff --git a/src/protocols/ssh/settings.h b/src/protocols/ssh/settings.h
index d106b0a..64691de 100644
--- a/src/protocols/ssh/settings.h
+++ b/src/protocols/ssh/settings.h
@@ -303,6 +303,11 @@
     char* wol_broadcast_addr;
     
     /**
+     * The UDP port to use when sending the magic WoL packet.
+     */
+    unsigned short wol_udp_port;
+    
+    /**
      * The amount of time to wait for the system to wake after sending the packet.
      */
     int wol_wait_time;
diff --git a/src/protocols/ssh/ssh.c b/src/protocols/ssh/ssh.c
index 03f5b0b..aaa5a8e 100644
--- a/src/protocols/ssh/ssh.c
+++ b/src/protocols/ssh/ssh.c
@@ -208,7 +208,8 @@
                 "and pausing for %d seconds.", settings->wol_wait_time);
         
         /* Send the Wake-on-LAN request. */
-        if (guac_wol_wake(settings->wol_mac_addr, settings->wol_broadcast_addr))
+        if (guac_wol_wake(settings->wol_mac_addr, settings->wol_broadcast_addr,
+                settings->wol_udp_port))
             return NULL;
         
         /* If wait time is specified, sleep for that amount of time. */
diff --git a/src/protocols/telnet/settings.c b/src/protocols/telnet/settings.c
index 91b9e11..464f936 100644
--- a/src/protocols/telnet/settings.c
+++ b/src/protocols/telnet/settings.c
@@ -63,6 +63,7 @@
     "wol-send-packet",
     "wol-mac-addr",
     "wol-broadcast-addr",
+    "wol-udp-port",
     "wol-wait-time",
     NULL
 };
@@ -259,6 +260,11 @@
     IDX_WOL_BROADCAST_ADDR,
     
     /**
+     * The UDP port to use when sending the WoL packet.
+     */
+    IDX_WOL_UDP_PORT,
+    
+    /**
      * The amount of time, in seconds, to wait after the magic WoL packet is
      * sent before continuing the connection attempt.  The default is not to
      * wait at all (0 seconds).
@@ -511,6 +517,11 @@
             guac_user_parse_args_string(user, GUAC_TELNET_CLIENT_ARGS, argv,
                 IDX_WOL_BROADCAST_ADDR, GUAC_WOL_LOCAL_IPV4_BROADCAST);
         
+        /* Parse the WoL broadcast port. */
+        settings->wol_udp_port = (unsigned short)
+            guac_user_parse_args_int(user, GUAC_TELNET_CLIENT_ARGS, argv,
+                IDX_WOL_UDP_PORT, GUAC_WOL_PORT);
+        
         /* Parse the WoL wait time. */
         settings->wol_wait_time =
             guac_user_parse_args_int(user, GUAC_TELNET_CLIENT_ARGS, argv,
@@ -553,6 +564,10 @@
 
     /* Free terminal emulator type. */
     free(settings->terminal_type);
+    
+    /* Free WoL settings. */
+    free(settings->wol_mac_addr);
+    free(settings->wol_broadcast_addr);
 
     /* Free overall structure */
     free(settings);
diff --git a/src/protocols/telnet/settings.h b/src/protocols/telnet/settings.h
index dfaaa97..c55dc52 100644
--- a/src/protocols/telnet/settings.h
+++ b/src/protocols/telnet/settings.h
@@ -276,6 +276,11 @@
     char* wol_broadcast_addr;
     
     /**
+     * The UDP port to use when sending the WoL packet.
+     */
+    unsigned short wol_udp_port;
+    
+    /**
      * The number of seconds to wait after sending the magic WoL packet before
      * continuing the connection.
      */
diff --git a/src/protocols/telnet/telnet.c b/src/protocols/telnet/telnet.c
index 8d8d439..b2b3106 100644
--- a/src/protocols/telnet/telnet.c
+++ b/src/protocols/telnet/telnet.c
@@ -564,7 +564,8 @@
                 "and pausing for %d seconds.", settings->wol_wait_time);
         
         /* Send the Wake-on-LAN request. */
-        if (guac_wol_wake(settings->wol_mac_addr, settings->wol_broadcast_addr))
+        if (guac_wol_wake(settings->wol_mac_addr, settings->wol_broadcast_addr,
+                settings->wol_udp_port))
             return NULL;
         
         /* If wait time is specified, sleep for that amount of time. */
diff --git a/src/protocols/vnc/settings.c b/src/protocols/vnc/settings.c
index c6f3646..691e708 100644
--- a/src/protocols/vnc/settings.c
+++ b/src/protocols/vnc/settings.c
@@ -89,6 +89,7 @@
     "wol-send-packet",
     "wol-mac-addr",
     "wol-broadcast-addr",
+    "wol-udp-port",
     "wol-wait-time",
     NULL
 };
@@ -361,6 +362,11 @@
     IDX_WOL_BROADCAST_ADDR,
     
     /**
+     * The UDP port to use when sending the WoL packet.
+     */
+    IDX_WOL_UDP_PORT,
+    
+    /**
      * The number of seconds to wait after sending the magic WoL packet before
      * attempting to connect to the remote host.  The default is not to wait
      * at all (0 seconds).
@@ -608,6 +614,11 @@
             guac_user_parse_args_string(user, GUAC_VNC_CLIENT_ARGS, argv,
                 IDX_WOL_BROADCAST_ADDR, GUAC_WOL_LOCAL_IPV4_BROADCAST);
         
+        /* Parse the WoL broadcast port. */
+        settings->wol_udp_port = (unsigned short)
+            guac_user_parse_args_int(user, GUAC_VNC_CLIENT_ARGS, argv,
+                IDX_WOL_UDP_PORT, GUAC_WOL_PORT);
+        
         /* Parse the WoL wait time. */
         settings->wol_wait_time =
             guac_user_parse_args_int(user, GUAC_VNC_CLIENT_ARGS, argv,
@@ -652,6 +663,10 @@
     /* Free PulseAudio settings */
     free(settings->pa_servername);
 #endif
+    
+    /* Free Wake-on-LAN strings */
+    free(settings->wol_mac_addr);
+    free(settings->wol_broadcast_addr);
 
     /* Free settings structure */
     free(settings);
diff --git a/src/protocols/vnc/settings.h b/src/protocols/vnc/settings.h
index 8d5659e..6d1c657 100644
--- a/src/protocols/vnc/settings.h
+++ b/src/protocols/vnc/settings.h
@@ -290,6 +290,11 @@
     char* wol_broadcast_addr;
     
     /**
+     * The UDP port to use when sending the WoL packet.
+     */
+    unsigned short wol_udp_port;
+    
+    /**
      * The number of seconds after sending the magic WoL packet to wait before
      * attempting to connect to the remote host.
      */
diff --git a/src/protocols/vnc/vnc.c b/src/protocols/vnc/vnc.c
index a310e51..cd09951 100644
--- a/src/protocols/vnc/vnc.c
+++ b/src/protocols/vnc/vnc.c
@@ -247,7 +247,8 @@
                 "and pausing for %d seconds.", settings->wol_wait_time);
         
         /* Send the Wake-on-LAN request. */
-        if (guac_wol_wake(settings->wol_mac_addr, settings->wol_broadcast_addr))
+        if (guac_wol_wake(settings->wol_mac_addr, settings->wol_broadcast_addr,
+                settings->wol_udp_port))
             return NULL;
         
         /* If wait time is specified, sleep for that amount of time. */
