Skip to content

Commit

Permalink
Added payload_contains program
Browse files Browse the repository at this point in the history
Implementation is copied from route_contains mutatis mutandis.

Use memmem to compare routes and payloads.

memmem needs `_GNU_SOURCE` to be set. cf:
http://man7.org/linux/man-pages/man3/memmem.3.html
  • Loading branch information
HeinrichHartmann committed Apr 29, 2016
1 parent 0965e69 commit 8fb946a
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions fqd_prog.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,15 @@
* IN THE SOFTWARE.
*/

#define _GNU_SOURCE
#include <string.h>
#include "fqd.h"

bool fqd_route_prog__true__(fq_msg *, int, valnode_t *);
bool fqd_route_prog__sample__d(fq_msg *, int, valnode_t *);
bool fqd_route_prog__route_contains__s(fq_msg *, int, valnode_t *);
bool fqd_route_prog__payload_prefix__s(fq_msg *, int, valnode_t *);


bool fqd_route_prog__true__(fq_msg *m, int nargs, valnode_t *args) {
fq_assert(nargs == 0);
(void)m;
Expand All @@ -48,15 +49,12 @@ fqd_route_prog__sample__d(fq_msg *m, int nargs, valnode_t *args) {

bool
fqd_route_prog__route_contains__s(fq_msg *m, int nargs, valnode_t *args) {
int flen, i;
int flen;
fq_assert(nargs == 1);
fq_assert(args[0].value_type == RP_VALUE_STRING);
flen = strlen(args[0].value.s);
if(flen > m->route.len) return false;
for(i=0;i<=m->route.len - flen;i++)
if(memcmp(args[0].value.s, m->route.name+i, flen) == 0)
return true;
return false;
return memmem(m->route.name, m->route.len, args[0].value.s, flen) != NULL;
}

bool
Expand All @@ -70,3 +68,13 @@ fqd_route_prog__payload_prefix__s(fq_msg *m, int nargs, valnode_t *args) {
return true;
return false;
}

bool
fqd_route_prog__payload_contains__s(fq_msg *m, int nargs, valnode_t *args) {
int flen;
fq_assert(nargs == 1);
fq_assert(args[0].value_type == RP_VALUE_STRING);
flen = strlen(args[0].value.s);
if(flen > m->payload_len) return false;
return memmem(m->payload, m->payload_len, args[0].value.s, flen) != NULL;
}

0 comments on commit 8fb946a

Please sign in to comment.