fix condition match for request method
This commit is contained in:
parent
518fad82f2
commit
641d1e53d8
4 changed files with 24 additions and 20 deletions
|
@ -150,7 +150,7 @@ condition * condition_create(char * path);
|
|||
|
||||
condition * condition_createl(char * path, int path_len);
|
||||
|
||||
int condition_cmp(condition *r1, condition *r2);
|
||||
int condition_cmp(condition *r1, match_entry *r2);
|
||||
|
||||
void r3_node_append_condition(node * n, condition * condition);
|
||||
|
||||
|
|
29
src/node.c
29
src/node.c
|
@ -300,6 +300,14 @@ node * r3_tree_match(node * n, char * path, int path_len, match_entry * entry) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
condition * r3_node_match_condition(node *n, match_entry * entry) {
|
||||
if (n->conditions && n->condition_len > 0) {
|
||||
int i;
|
||||
for (i = 0; i < n->condition_len ; i++ ) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline edge * r3_node_find_edge_str(node * n, char * str, int str_len) {
|
||||
int i = 0;
|
||||
|
@ -526,25 +534,20 @@ void r3_tree_dump(node * n, int level) {
|
|||
*
|
||||
* -1 == different condition
|
||||
*/
|
||||
int condition_cmp(condition *r1, condition *r2) {
|
||||
if ( r1 == r2 ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (r1->request_method != r2->request_method) {
|
||||
int condition_cmp(condition *r1, match_entry *r2) {
|
||||
if (r1->request_method != 0) {
|
||||
if (0 == (r1->request_method & r2->request_method) ) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int ret;
|
||||
|
||||
|
||||
if ( r1->path && r2->path ) {
|
||||
ret = strcmp(r1->path, r2->path);
|
||||
if (ret != 0) {
|
||||
return -1;
|
||||
}
|
||||
} else if ((r1->path && !r2->path) || (!r1->path && r2->path )) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ( r1->host && r2->host ) {
|
||||
|
@ -552,17 +555,13 @@ int condition_cmp(condition *r1, condition *r2) {
|
|||
if (ret != 0) {
|
||||
return -1;
|
||||
}
|
||||
} else if ((r1->host && !r2->host) || (!r1->host && r2->host )) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (r1->remote_addr_pattern && r2->remote_addr_pattern ) {
|
||||
ret = strcmp(r1->remote_addr_pattern, r2->remote_addr_pattern);
|
||||
if (r1->remote_addr_pattern) {
|
||||
ret = strcmp(r1->remote_addr_pattern, r2->remote_addr);
|
||||
if (ret != 0) {
|
||||
return -1;
|
||||
}
|
||||
} else if ((r1->remote_addr_pattern && !r2->remote_addr_pattern) || (!r1->remote_addr_pattern && r2->remote_addr_pattern )) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -128,3 +128,9 @@
|
|||
1400387761,10803251.35
|
||||
1400387926,10854580.56
|
||||
1400388003,11099634.54
|
||||
1400388313,11132551.99
|
||||
1400388338,11139229.93
|
||||
1400388369,10898128.85
|
||||
1400388529,10815527.23
|
||||
1400388539,10930897.10
|
||||
1400388591,10720695.10
|
||||
|
|
|
|
@ -225,7 +225,7 @@ END_TEST
|
|||
START_TEST(test_route_cmp)
|
||||
{
|
||||
condition *r1 = condition_create("/blog/post");
|
||||
condition *r2 = condition_create("/blog/post");
|
||||
match_entry * r2 = match_entry_create("/blog/post");
|
||||
|
||||
fail_if( condition_cmp(r1, r2) == -1, "should be the same");
|
||||
|
||||
|
@ -239,7 +239,7 @@ START_TEST(test_route_cmp)
|
|||
|
||||
|
||||
condition_free(r1);
|
||||
condition_free(r2);
|
||||
match_entry_free(r2);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
@ -253,7 +253,6 @@ START_TEST(test_insert_route)
|
|||
condition *r2 = condition_create("/blog/post");
|
||||
r1->request_method = METHOD_GET;
|
||||
r2->request_method = METHOD_POST;
|
||||
fail_if( condition_cmp(r1, r2) == 0, "should be different");
|
||||
|
||||
match_entry * entry = match_entry_create("/blog/post");
|
||||
|
||||
|
|
Loading…
Reference in a new issue