diff --git a/src/sds.c b/src/sds.c
index c3a0ccb97..b6c2aaf3e 100644
--- a/src/sds.c
+++ b/src/sds.c
@@ -196,6 +196,10 @@ sds sdscat(sds s, char *t) {
     return sdscatlen(s, t, strlen(t));
 }
 
+sds sdscatsds(sds s, sds t) {
+    return sdscatlen(s, t, sdslen(t));
+}
+
 sds sdscpylen(sds s, char *t, size_t len) {
     struct sdshdr *sh = (void*) (s-(sizeof(struct sdshdr)));
     size_t totlen = sh->free+sh->len;
diff --git a/src/sds.h b/src/sds.h
index eff1b03e8..ee336d1de 100644
--- a/src/sds.h
+++ b/src/sds.h
@@ -62,6 +62,7 @@ size_t sdsavail(sds s);
 sds sdsgrowzero(sds s, size_t len);
 sds sdscatlen(sds s, void *t, size_t len);
 sds sdscat(sds s, char *t);
+sds sdscatsds(sds s, sds t);
 sds sdscpylen(sds s, char *t, size_t len);
 sds sdscpy(sds s, char *t);