MEDIUM: server: Allow relative weights greater than 100%

Allow relative weights greater than 100%,
capping the absolute value to 256 which is
the largest supported absolute weight.

Signed-off-by: Simon Horman <horms@verge.net.au>
diff --git a/src/server.c b/src/server.c
index 7a2774c..4c1762f 100644
--- a/src/server.c
+++ b/src/server.c
@@ -176,9 +176,14 @@
 
 	w = atoi(weight_str);
 	if (strchr(weight_str, '%') != NULL) {
-		if (w < 0 || w > 100)
+		if (w < 0)
 			return "Relative weight must be positive.\n";
+		/* Avoid integer overflow */
+		if (w > 25600)
+			w = 25600;
 		w = sv->iweight * w / 100;
+		if (w > 256)
+			w = 256;
 	}
 	else if (w < 0 || w > 256)
 		return "Absolute weight can only be between 0 and 256 inclusive.\n";