]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/tipc/subscr.c
Revert c6537d6742985da1fbf12ae26cde6a096fd35b5c
[net-next-2.6.git] / net / tipc / subscr.c
index ab6eab4c45e2b0ecbbc460ddbed0045d48792f1c..ff123e56114a14e5e05671ac846d59a4e5555723 100644 (file)
@@ -274,7 +274,7 @@ static void subscr_cancel(struct tipc_subscr *s,
 {
        struct subscription *sub;
        struct subscription *sub_temp;
-       __u32 type, lower, upper, timeout, filter;
+       __u32 type, lower, upper;
        int found = 0;
 
        /* Find first matching subscription, exit if not found */
@@ -282,18 +282,12 @@ static void subscr_cancel(struct tipc_subscr *s,
        type = ntohl(s->seq.type);
        lower = ntohl(s->seq.lower);
        upper = ntohl(s->seq.upper);
-       timeout = ntohl(s->timeout);
-       filter = ntohl(s->filter) & ~TIPC_SUB_CANCEL;
 
        list_for_each_entry_safe(sub, sub_temp, &subscriber->subscription_list,
                                 subscription_list) {
                        if ((type == sub->seq.type) &&
                            (lower == sub->seq.lower) &&
-                           (upper == sub->seq.upper) &&
-                           (timeout == sub->timeout) &&
-                            (filter == sub->filter) &&
-                             !memcmp(s->usr_handle,sub->evt.s.usr_handle,
-                                    sizeof(s->usr_handle)) ){
+                           (upper == sub->seq.upper)) {
                                found = 1;
                                break;
                        }
@@ -310,7 +304,7 @@ static void subscr_cancel(struct tipc_subscr *s,
                k_term_timer(&sub->timer);
                spin_lock_bh(subscriber->lock);
        }
-       dbg("Cancel: removing sub %u,%u,%u from subscriber %p list\n",
+       dbg("Cancel: removing sub %u,%u,%u from subscriber %x list\n",
            sub->seq.type, sub->seq.lower, sub->seq.upper, subscriber);
        subscr_del(sub);
 }
@@ -358,7 +352,8 @@ static struct subscription *subscr_subscribe(struct tipc_subscr *s,
        sub->seq.upper = ntohl(s->seq.upper);
        sub->timeout = ntohl(s->timeout);
        sub->filter = ntohl(s->filter);
-       if ((sub->filter && (sub->filter != TIPC_SUB_PORTS)) ||
+       if ((!(sub->filter & TIPC_SUB_PORTS) ==
+            !(sub->filter & TIPC_SUB_SERVICE)) ||
            (sub->seq.lower > sub->seq.upper)) {
                warn("Subscription rejected, illegal request\n");
                kfree(sub);