diff --git a/SOURCES/rest-0.8.0-fix-the-XML-test.patch b/SOURCES/rest-0.8.0-fix-the-XML-test.patch
new file mode 100644
index 0000000..44ca0cc
--- /dev/null
+++ b/SOURCES/rest-0.8.0-fix-the-XML-test.patch
@@ -0,0 +1,218 @@
+From a09ea6bd74d6234be8456e7039403bc1c1d078bd Mon Sep 17 00:00:00 2001
+From: Christophe Fergeau <cfergeau@redhat.com>
+Date: Mon, 20 Jun 2016 12:05:48 +0200
+Subject: [PATCH 1/4] xml-node: Use GString in rest_xml_node_print()
+
+The current code is using xml = g_strconcat (xml, ...) which is causing
+some leaks as g_strconcat returns a newly allocated string. Using
+GString avoids this issue without constantly freeing the intermediate
+strings.
+
+This fixes multiple leaks like:
+
+==16611== 18 bytes in 1 blocks are definitely lost in loss record 124 of 301
+==16611==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
+==16611==    by 0x5F5CE58: g_malloc (gmem.c:94)
+==16611==    by 0x5F75B8E: g_strconcat (gstrfuncs.c:585)
+==16611==    by 0x4E450CF: rest_xml_node_print (rest-xml-node.c:287)
+==16611==    by 0x4E451DA: rest_xml_node_print (rest-xml-node.c:305)
+==16611==    by 0x4E450F8: rest_xml_node_print (rest-xml-node.c:292)
+==16611==    by 0x4009A0: main (xml.c:40)
+---
+ rest/rest-xml-node.c | 21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c
+index 57a942667f06..a8156dbbd432 100644
+--- a/rest/rest-xml-node.c
++++ b/rest/rest-xml-node.c
+@@ -283,38 +283,41 @@ rest_xml_node_print (RestXmlNode *node)
+ {
+   GHashTableIter iter;
+   gpointer       key, value;
+-  char          *xml = g_strconcat ("<", node->name, NULL);
++  GString        *xml = g_string_new (NULL);
+   RestXmlNode   *n;
+ 
++  g_string_append (xml, "<");
++  g_string_append (xml, node->name);
++
+   g_hash_table_iter_init (&iter, node->attrs);
+   while (g_hash_table_iter_next (&iter, &key, &value))
+-    xml = g_strconcat (xml, " ", key, "=\'", value, "\'", NULL);
++    g_string_append_printf (xml, " %s =\'%s\'", (char *)key, (char *)value);
+ 
+-  xml = g_strconcat (xml, ">", NULL);
++  g_string_append (xml, ">");
+ 
+   g_hash_table_iter_init (&iter, node->children);
+   while (g_hash_table_iter_next (&iter, &key, &value))
+     {
+       char *child = rest_xml_node_print ((RestXmlNode *) value);
+ 
+-      xml = g_strconcat (xml, child, NULL);
++      g_string_append (xml, child);
+       g_free (child);
+     }
+ 
+   if (node->content)
+-    xml = g_strconcat (xml, node->content, "</", node->name, ">", NULL);
+-  else
+-    xml = g_strconcat (xml, "</", node->name, ">", NULL);
++    g_string_append (xml, node->content);
++
++  g_string_append_printf (xml, "</%s>", node->name);
+ 
+   for (n = node->next; n; n = n->next)
+     {
+       char *sibling = rest_xml_node_print (n);
+ 
+-      xml = g_strconcat (xml, sibling, NULL);
++      g_string_append (xml, sibling);
+       g_free (sibling);
+     }
+ 
+-  return xml;
++  return g_string_free (xml, FALSE);
+ }
+ 
+ /**
+-- 
+2.14.2
+
+
+From a34d02947c4f102e6d16b9d328941a4b2946c8e8 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir@gnome.org>
+Date: Fri, 13 Oct 2017 18:53:39 +0200
+Subject: [PATCH 2/4] xml-node: Remove stray blank space
+
+This had broken tests/xml.c.
+
+Fallout from 61a7b231bd8b9d1b8d02dca120389e79d38b428d
+
+https://bugzilla.gnome.org/show_bug.cgi?id=788960
+---
+ rest/rest-xml-node.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c
+index a8156dbbd432..d3a7c995affd 100644
+--- a/rest/rest-xml-node.c
++++ b/rest/rest-xml-node.c
+@@ -291,7 +291,7 @@ rest_xml_node_print (RestXmlNode *node)
+ 
+   g_hash_table_iter_init (&iter, node->attrs);
+   while (g_hash_table_iter_next (&iter, &key, &value))
+-    g_string_append_printf (xml, " %s =\'%s\'", (char *)key, (char *)value);
++    g_string_append_printf (xml, " %s=\'%s\'", (char *)key, (char *)value);
+ 
+   g_string_append (xml, ">");
+ 
+-- 
+2.14.2
+
+
+From f184db2bff0618b99c4de3316082fe80439f124c Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir@gnome.org>
+Date: Fri, 13 Oct 2017 19:14:16 +0200
+Subject: [PATCH 3/4] xml-node: Define the order in which attributes & children
+ are printed
+
+The order in which GHashTable returns its key-value pairs is undefined.
+Therefore the output of rest_xml_node_print can change based on the
+GHashTable implementation. While not strictly necessary, it would be
+nice to avoid that. Having a stable order, even if it is not
+documented and depends on the current RestXmlNode code, is handy for
+testing.
+
+This was the main reason behind the tests/xml.c breakage.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=788960
+---
+ rest/rest-xml-node.c | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c
+index d3a7c995affd..973ebcf6c3fa 100644
+--- a/rest/rest-xml-node.c
++++ b/rest/rest-xml-node.c
+@@ -283,6 +283,9 @@ rest_xml_node_print (RestXmlNode *node)
+ {
+   GHashTableIter iter;
+   gpointer       key, value;
++  GList          *attrs = NULL;
++  GList          *children = NULL;
++  GList          *l;
+   GString        *xml = g_string_new (NULL);
+   RestXmlNode   *n;
+ 
+@@ -291,13 +294,29 @@ rest_xml_node_print (RestXmlNode *node)
+ 
+   g_hash_table_iter_init (&iter, node->attrs);
+   while (g_hash_table_iter_next (&iter, &key, &value))
+-    g_string_append_printf (xml, " %s=\'%s\'", (char *)key, (char *)value);
++    {
++      char *attr = g_strdup_printf ("%s=\'%s\'", (char *)key, (char *)value);
++      attrs = g_list_prepend (attrs, attr);
++    }
++
++  attrs = g_list_sort (attrs, (GCompareFunc) g_strcmp0);
++  for (l = attrs; l; l = l->next)
++    {
++      const char *attr = (const char *) l->data;
++      g_string_append_printf (xml, " %s", attr);
++    }
+ 
+   g_string_append (xml, ">");
+ 
+   g_hash_table_iter_init (&iter, node->children);
+   while (g_hash_table_iter_next (&iter, &key, &value))
++    children = g_list_prepend (children, key);
++
++  children = g_list_sort (children, (GCompareFunc) g_strcmp0);
++  for (l = children; l; l = l->next)
+     {
++      const char *name = (const char *) l->data;
++      RestXmlNode *value = (RestXmlNode *) g_hash_table_lookup (node->children, name);
+       char *child = rest_xml_node_print ((RestXmlNode *) value);
+ 
+       g_string_append (xml, child);
+@@ -317,6 +336,8 @@ rest_xml_node_print (RestXmlNode *node)
+       g_free (sibling);
+     }
+ 
++  g_list_free_full (attrs, g_free);
++  g_list_free (children);
+   return g_string_free (xml, FALSE);
+ }
+ 
+-- 
+2.14.2
+
+
+From e5ee6ef751ee5a38d7b9fadcd631cf6ecec7b240 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir@gnome.org>
+Date: Fri, 13 Oct 2017 19:16:55 +0200
+Subject: [PATCH 4/4] tests: Re-enable the XML test
+
+This reverts commit 2d1dbfe7073b1e153ff881426b40a9a517fb796b
+
+https://bugzilla.gnome.org/show_bug.cgi?id=788960
+---
+ tests/Makefile.am | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 5d77f9cf5445..5ffdd4634e9a 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -1,6 +1,4 @@
+ TESTS = proxy proxy-continuous threaded oauth oauth-async oauth2 flickr lastfm xml custom-serialize
+-# TODO: fix this test case
+-XFAIL_TESTS = xml
+ 
+ AM_CPPFLAGS = $(SOUP_CFLAGS) -I$(top_srcdir) $(GCOV_CFLAGS)
+ AM_LDFLAGS = $(SOUP_LIBS) $(GCOV_LDFLAGS) \
+-- 
+2.14.2
+
diff --git a/SPECS/rest.spec b/SPECS/rest.spec
index 410ad31..75c2633 100644
--- a/SPECS/rest.spec
+++ b/SPECS/rest.spec
@@ -1,17 +1,23 @@
 Name:          rest
 Version:       0.8.0
-Release:       1%{?dist}
+Release:       2%{?dist}
 Summary:       A library for access to RESTful web services
 
 License:       LGPLv2
 URL:           http://www.gnome.org
 Source0:       http://download.gnome.org/sources/%{name}/0.8/%{name}-%{version}.tar.xz
 
+# https://bugzilla.redhat.com/show_bug.cgi?id=1445700
+Patch0:        rest-0.8.0-fix-the-XML-test.patch
+
 BuildRequires: glib2-devel
 BuildRequires: gobject-introspection-devel
 BuildRequires: libsoup-devel
 BuildRequires: libxml2-devel
 BuildRequires: gtk-doc
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: libtool
 
 %description
 This library was designed to make it easier to access web services that
@@ -31,8 +37,10 @@ Files for development with %{name}.
 
 %prep
 %setup -q
+%patch0 -p1
 
 %build
+autoreconf -vif
 %configure --disable-static --enable-gtk-doc --enable-introspection=yes
 
 make %{?_smp_mflags} V=1
@@ -67,9 +75,13 @@ find %{buildroot} -type f -name "*.la" -delete
 %{_datadir}/gir-1.0/RestExtras-0.7.gir
 
 %changelog
+* Tue Oct 17 2017 Debarshi Ray <rishi@fedoraproject.org> - 0.8.0-2
+- Fix the XML test
+Resolves: #1445700
+
 * Wed Sep 28 2016 Kalev Lember <klember@redhat.com> - 0.8.0-1
 - Update to 0.8.0
-- Resolves: #1387040
+Resolves: #1387040
 
 * Mon May 02 2016 Debarshi Ray <rishi@fedoraproject.org> - 0.7.92-5
 - Add rest_proxy_auth_cancel for cancelling authentication