diff --git a/ebtree/ebistree.c b/ebtree/ebistree.c
index acaf3fa..938caf7 100644
--- a/ebtree/ebistree.c
+++ b/ebtree/ebistree.c
@@ -1,6 +1,6 @@
 /*
  * Elastic Binary Trees - exported functions for Indirect String data nodes.
- * Version 5.0
+ * Version 5.1
  * (C) 2002-2009 - Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -21,6 +21,7 @@
 /* Consult ebistree.h for more details about those functions */
 
 #include "ebistree.h"
+#include "ebimtree.h"
 
 /* Find the first occurence of a zero-terminated string <x> in the tree <root>.
  * It's the caller's reponsibility to use this function only on trees which
@@ -31,6 +32,21 @@
 	return __ebis_lookup(root, x);
 }
 
+/* Find the first occurence of a length <len> string <x> in the tree <root>.
+ * It's the caller's reponsibility to use this function only on trees which
+ * only contain zero-terminated strings, and that no null character is present
+ * in string <x> in the first <len> chars. If none can be found, return NULL.
+ */
+REGPRM3 struct ebpt_node *ebis_lookup_len(struct eb_root *root, const char *x, unsigned int len)
+{
+	struct ebpt_node *node;
+
+	node = ebim_lookup(root, x, len);
+	if (!node || ((const char *)node->key)[len] != 0)
+		return NULL;
+	return node;
+}
+
 /* Insert ebpt_node <new> into subtree starting at node root <root>. Only
  * new->key needs be set with the zero-terminated string key. The ebpt_node is
  * returned. If root->b[EB_RGHT]==1, the tree may only contain unique keys. The
diff --git a/ebtree/ebistree.h b/ebtree/ebistree.h
index 984df2e..62f42c6 100644
--- a/ebtree/ebistree.h
+++ b/ebtree/ebistree.h
@@ -1,6 +1,6 @@
 /*
  * Elastic Binary Trees - macros to manipulate Indirect String data nodes.
- * Version 5.0
+ * Version 5.1
  * (C) 2002-2009 - Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -32,6 +32,7 @@
  * in ebistree.c, which simply relies on their inline version.
  */
 REGPRM2 struct ebpt_node *ebis_lookup(struct eb_root *root, const char *x);
+REGPRM3 struct ebpt_node *ebis_lookup_len(struct eb_root *root, const char *x, unsigned int len);
 REGPRM2 struct ebpt_node *ebis_insert(struct eb_root *root, struct ebpt_node *new);
 
 /* Find the first occurence of a zero-terminated string <x> in the tree <root>.
diff --git a/ebtree/ebsttree.c b/ebtree/ebsttree.c
index 8b666bc..b00ad69 100644
--- a/ebtree/ebsttree.c
+++ b/ebtree/ebsttree.c
@@ -1,6 +1,6 @@
 /*
  * Elastic Binary Trees - exported functions for String data nodes.
- * Version 5.0
+ * Version 5.1
  * (C) 2002-2009 - Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -31,6 +31,21 @@
 	return __ebst_lookup(root, x);
 }
 
+/* Find the first occurence of a length <len> string <x> in the tree <root>.
+ * It's the caller's reponsibility to use this function only on trees which
+ * only contain zero-terminated strings, and that no null character is present
+ * in string <x> in the first <len> chars. If none can be found, return NULL.
+ */
+REGPRM3 struct ebmb_node *ebst_lookup_len(struct eb_root *root, const char *x, unsigned int len)
+{
+	struct ebmb_node *node;
+
+	node = ebmb_lookup(root, x, len);
+	if (!node || node->key[len] != 0)
+		return NULL;
+	return node;
+}
+
 /* Insert ebmb_node <new> into subtree starting at node root <root>. Only
  * new->key needs be set with the zero-terminated string key. The ebmb_node is
  * returned. If root->b[EB_RGHT]==1, the tree may only contain unique keys. The
diff --git a/ebtree/ebsttree.h b/ebtree/ebsttree.h
index 87e0306..6fa6412 100644
--- a/ebtree/ebsttree.h
+++ b/ebtree/ebsttree.h
@@ -1,6 +1,6 @@
 /*
  * Elastic Binary Trees - macros to manipulate String data nodes.
- * Version 5.0
+ * Version 5.1
  * (C) 2002-2009 - Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -30,6 +30,7 @@
  * in ebsttree.c, which simply relies on their inline version.
  */
 REGPRM2 struct ebmb_node *ebst_lookup(struct eb_root *root, const char *x);
+REGPRM3 struct ebmb_node *ebst_lookup_len(struct eb_root *root, const char *x, unsigned int len);
 REGPRM2 struct ebmb_node *ebst_insert(struct eb_root *root, struct ebmb_node *new);
 
 /* Find the first occurence of a zero-terminated string <x> in the tree <root>.
