diff --git a/doc/configuration.txt b/doc/configuration.txt
index 3c10e4d16..7a5ace286 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -1279,8 +1279,8 @@ balance url_param [check_post []]
If the modifier "check_post" is used, then an HTTP POST
request entity will be searched for the parameter argument,
- when the question mark indicating a query string ('?') is not
- present in the URL. Optionally, specify a number of octets to
+ when it is not found in a query string after a question mark
+ ('?') in the URL. Optionally, specify a number of octets to
wait for before attempting to search the message body. If the
entity can not be searched, then round robin is used for each
request. For instance, if your clients always send the LB
diff --git a/src/backend.c b/src/backend.c
index 7554923d9..f3d9f095e 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -558,14 +558,13 @@ int assign_server(struct session *s)
/* URL Parameter hashing */
if (s->txn.req.msg_state < HTTP_MSG_BODY)
break;
- if (s->txn.meth == HTTP_METH_POST &&
- memchr(s->txn.req.sol + s->txn.req.sl.rq.u, '&',
- s->txn.req.sl.rq.u_l ) == NULL)
+
+ s->srv = get_server_ph(s->be,
+ s->txn.req.sol + s->txn.req.sl.rq.u,
+ s->txn.req.sl.rq.u_l);
+
+ if (!s->srv && s->txn.meth == HTTP_METH_POST)
s->srv = get_server_ph_post(s);
- else
- s->srv = get_server_ph(s->be,
- s->txn.req.sol + s->txn.req.sl.rq.u,
- s->txn.req.sl.rq.u_l);
break;
case BE_LB_HASH_HDR:
diff --git a/src/proto_http.c b/src/proto_http.c
index eb6ba30b3..1061c35ec 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -3631,8 +3631,7 @@ int http_process_request(struct session *s, struct buffer *req, int an_bit)
if (!(s->flags & (SN_ASSIGNED|SN_DIRECT)) &&
s->txn.meth == HTTP_METH_POST && s->be->url_param_name != NULL &&
s->be->url_param_post_limit != 0 &&
- (txn->flags & (TX_REQ_CNT_LEN|TX_REQ_TE_CHNK)) &&
- memchr(msg->sol + msg->sl.rq.u, '?', msg->sl.rq.u_l) == NULL) {
+ (txn->flags & (TX_REQ_CNT_LEN|TX_REQ_TE_CHNK))) {
buffer_dont_connect(req);
req->analysers |= AN_REQ_HTTP_BODY;
}