Commit 3c471f85 authored by Timo Teräs's avatar Timo Teräs
Browse files

main/opennhrp: 0.11.1-r1

fix for opennhrp script event handling
parent 1c067227
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=opennhrp
pkgver=0.11.1
pkgrel=0
pkgrel=1
pkgdesc="NBMA Next Hop Resolution Protocol daemon"
url="http://sourceforge.net/projects/opennhrp"
license="GPL-3"
......@@ -10,6 +10,7 @@ makedepends="c-ares-dev"
subpackages="$pkgname-doc"
source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2
opennhrp-0.9.3-peer-up-bgp.patch
opennhrp-0.11.1-fix.patch
$pkgname.initd
$pkgname.confd
"
......@@ -29,5 +30,6 @@ build() {
}
md5sums="9cc1e99de2b132591d685eb5f9d70630 opennhrp-0.11.1.tar.bz2
f81539fc92800bb79668dda119a97d1d opennhrp-0.9.3-peer-up-bgp.patch
0e6defecbb3f54814bc3580bb41b0e3f opennhrp-0.11.1-fix.patch
85821b61c02427146b866b7582157cfd opennhrp.initd
8eee86233728dc0d156bbfee6d98f338 opennhrp.confd"
commit c24f2cf55eee9a5aefe27bcb34822a5737f170cf
Author: Timo Teras <timo.teras@iki.fi>
Date: Mon Sep 14 08:25:09 2009 +0300
peer: reset both events when script triggers
otherwise we can get same callback twice.
diff --git a/nhrp/nhrp_peer.c b/nhrp/nhrp_peer.c
index b447784..e5721a5 100644
--- a/nhrp/nhrp_peer.c
+++ b/nhrp/nhrp_peer.c
@@ -308,14 +308,16 @@ struct nhrp_peer *nhrp_peer_from_event(union nhrp_peer_event e, int revents)
if (revents & EV_CHILD) {
peer = container_of(e.child, struct nhrp_peer, child);
- ev_timer_stop(&peer->timer);
} else if (revents & EV_TIMEOUT) {
peer = container_of(e.timer, struct nhrp_peer, timer);
- ev_child_stop(&peer->child);
} else {
NHRP_BUG_ON(revents != 0);
peer = container_of(e.child, struct nhrp_peer, child);
}
+
+ ev_child_stop(&peer->child);
+ ev_timer_stop(&peer->timer);
+
return peer;
}
diff --git a/nhrp/nhrp_server.c b/nhrp/nhrp_server.c
index d928886..ad6e292 100644
--- a/nhrp/nhrp_server.c
+++ b/nhrp/nhrp_server.c
@@ -195,13 +195,18 @@ static void nhrp_server_finish_reg(struct nhrp_pending_request *pr)
static void nhrp_server_finish_cie_reg_cb(union nhrp_peer_event e, int revents)
{
- struct nhrp_peer *peer = nhrp_peer_from_event(e, revents);
- struct nhrp_pending_request *pr = peer->request;
- struct nhrp_packet *packet = pr->packet;
- struct nhrp_cie *cie = pr->cie;
+ struct nhrp_peer *peer;
+ struct nhrp_pending_request *pr;
+ struct nhrp_packet *packet;
+ struct nhrp_cie *cie;
struct nhrp_peer_selector sel;
char tmp[64], reason[32];
+ peer = nhrp_peer_from_event(e, revents);
+ pr = peer->request;
+ packet = pr->packet;
+ cie = pr->cie;
+
peer->request = NULL;
nhrp_address_format(&peer->protocol_address, sizeof(tmp), tmp);
if (revents != 0 && nhrp_peer_event_ok(e, revents)) {
diff -ru opennhrp-0.9.2.orig/nhrp/nhrp_peer.c opennhrp-0.9.2/nhrp/nhrp_peer.c
--- opennhrp-0.9.2.orig/nhrp/nhrp_peer.c 2009-02-02 13:12:46 +0000
+++ opennhrp-0.9.2/nhrp/nhrp_peer.c 2009-02-02 13:36:51 +0000
@@ -1260,7 +1260,8 @@
{
char tmp[NHRP_PEER_FORMAT_LEN];
- NHRP_BUG_ON(peer->flags & NHRP_PEER_FLAG_REMOVED);
+ if (peer->flags & NHRP_PEER_FLAG_REMOVED)
+ return;
nhrp_debug("Removing %s %s",
nhrp_peer_type[peer->type],
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment