diff --git a/src/server/quick_ssdp.c b/src/server/quick_ssdp.c
index 7c3a3ae..3a399ea 100644
--- a/src/server/quick_ssdp.c
+++ b/src/server/quick_ssdp.c
@@ -34,6 +34,7 @@
 #include <unistd.h>
 
 #include "mongoose.h"
+#include "url_lib.h"
 
 // TODO: Partners should define this port
 #define SSDP_PORT (56790)
@@ -208,20 +209,17 @@
   socklen_t len = sizeof(sa);
 
   if(pFriendlyName) {
-      strncpy(friendly_name, pFriendlyName, sizeof(friendly_name));
-      friendly_name[255] = '\0';
+      xmlencode(friendly_name, pFriendlyName, sizeof(friendly_name));
   } else {
       strcpy(friendly_name, "DIAL server sample");
   }
   if(pModelName) {
-      strncpy(model_name, pModelName, sizeof(model_name));
-      model_name[255] = '\0';
+      xmlencode(model_name, pModelName, sizeof(model_name));
   } else {
       strcpy(model_name, "deadbeef-dead-beef-dead-beefdeadbeef");
   }
   if(pUuid) {
-      strncpy(uuid, pUuid, sizeof(uuid));
-      uuid[255] = '\0';
+      xmlencode(uuid, pUuid, sizeof(uuid));
   } else {
       strcpy(uuid, "deadbeef-dead-beef-dead-beefdeadbeef");
   }
diff --git a/src/server/url_lib.c b/src/server/url_lib.c
index 498b221..b743a38 100644
--- a/src/server/url_lib.c
+++ b/src/server/url_lib.c
@@ -87,31 +87,48 @@
 void xmlencode(char *dst, const char *src, size_t max_size) {
     size_t current_size = 0;
     while (*src && current_size < max_size) {
-        switch (*src) {
-            case '&':
-                dst = smartstrcat(dst, "&amp;", max_size - current_size);
-                current_size += 5;
-                break;
-            case '\"':
-                dst = smartstrcat(dst, "&quot;", max_size - current_size);
-                current_size += 6;
-                break;
-            case '\'':
-                dst = smartstrcat(dst, "&apos;", max_size - current_size);
-                current_size += 6;
-                break;
-            case '<':
-                dst = smartstrcat(dst, "&lt;", max_size - current_size);
-                current_size += 4;
-                break;
-            case '>':
-                dst = smartstrcat(dst, "&gt;", max_size - current_size);
-                current_size += 4;
-                break;
-            default:
-                *dst++ = *src;
-                current_size++;
-                break;
+        // Discard invalid characters for xml encoding, assuming input
+        // shouldn't contain utf.
+        if(!((*src&0x80) ||
+           (*src < 0x20 && *src != 0x09 && *src != 0x0A && *src != 0x0D))) {
+            switch (*src) {
+                case '\t':
+                    dst = smartstrcat(dst, "&#x9;", max_size - current_size);
+                    current_size += 5;
+                    break;
+                case '\n':
+                    dst = smartstrcat(dst, "&#xA;", max_size - current_size);
+                    current_size += 5;
+                    break;
+                case '\r':
+                    dst = smartstrcat(dst, "&#xD;", max_size - current_size);
+                    current_size += 5;
+                    break;
+                case '&':
+                    dst = smartstrcat(dst, "&amp;", max_size - current_size);
+                    current_size += 5;
+                    break;
+                case '\"':
+                    dst = smartstrcat(dst, "&quot;", max_size - current_size);
+                    current_size += 6;
+                    break;
+                case '\'':
+                    dst = smartstrcat(dst, "&apos;", max_size - current_size);
+                    current_size += 6;
+                    break;
+                case '<':
+                    dst = smartstrcat(dst, "&lt;", max_size - current_size);
+                    current_size += 4;
+                    break;
+                case '>':
+                    dst = smartstrcat(dst, "&gt;", max_size - current_size);
+                    current_size += 4;
+                    break;
+                default:
+                    *dst++ = *src;
+                    current_size++;
+                    break;
+            }
         }
         src++;
     }
