[PATCH] LOCK: Reduce the scope of the mib lock in several places.

Dominik Vogt dominik.vogt at external.thalesgroup.com
Tue Aug 17 12:49:47 CEST 2010


---
 src/mib.cpp |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/mib.cpp b/src/mib.cpp
index f0576bc..f70621b 100644
--- a/src/mib.cpp
+++ b/src/mib.cpp
@@ -2826,8 +2826,8 @@ MibEntry* Mib::add(MibEntry* item)
 
 MibEntry* Mib::add(const OctetStr& context, MibEntry* item)
 {	
-	lock_mib();
 	Oidx contextKey(Oidx::from_string(context));
+	lock_mib();
 	MibContext* c = contexts.find(&contextKey);
 	if (!c) {
 		c = contexts.add(new MibContext(context));
@@ -2839,8 +2839,8 @@ MibEntry* Mib::add(const OctetStr& context, MibEntry* item)
 
 MibContext* Mib::add_context(const OctetStr& context) 
 {
-	lock_mib();
 	Oidx contextKey(Oidx::from_string(context));
+	lock_mib();
 	MibContext* c = contexts.find(&contextKey);
 	if (!c) {
 		c = contexts.add(new MibContext(context));
@@ -2851,8 +2851,8 @@ MibContext* Mib::add_context(const OctetStr& context)
 
 void Mib::remove_context(const OctetStr& context) 
 {
-	lock_mib();
 	Oidx contextKey(Oidx::from_string(context));
+	lock_mib();
 	contexts.remove(&contextKey);
 	unlock_mib();
 }
@@ -2966,8 +2966,8 @@ boolean Mib::init()
 	} 
 #endif
 	if (is_persistency_activated()) {
-		lock_mib();
 		OidListCursor<MibContext> cur;	
+		lock_mib();
 		for (cur.init(&contexts); cur.get(); cur.next()) {
 			cur.get()->init_from(get_persistent_objects_path());
 		}
@@ -2979,8 +2979,8 @@ boolean Mib::init()
 void Mib::save_all()
 {
 	if (is_persistency_activated()) {
-		lock_mib();
 		OidListCursor<MibContext> cur;	
+		lock_mib();
 		for (cur.init(&contexts); cur.get(); cur.next()) {
 			cur.get()->save_to(get_persistent_objects_path());
 		}
@@ -2992,9 +2992,9 @@ boolean Mib::save(unsigned int format, const OctetStr& path)
 {
 	MibConfigFormat* f = configFormats.getNth(format-1);
 	if (f) {
-		lock_mib();
 		boolean ok = TRUE;
 		OidListCursor<MibContext> cur;	
+		lock_mib();
 		for (cur.init(&contexts); cur.get(); cur.next()) {
 		    ok = f->save(cur.get(), path) && ok;
 		}
@@ -3019,9 +3019,9 @@ boolean Mib::load(unsigned int format, const NS_SNMP OctetStr& path)
 {
 	MibConfigFormat* f = configFormats.getNth(format-1);
 	if (f) {
-		lock_mib();
 		boolean ok = TRUE;
 		OidListCursor<MibContext> cur;	
+		lock_mib();
 		for (cur.init(&contexts); cur.get(); cur.next()) {
 		    ok = f->load(cur.get(), path) && ok;
 		}
@@ -3259,8 +3259,8 @@ boolean Mib::process_request(Request* req, int reqind)
 		MibEntryPtr entry;
 
 		Oidx tmpoid(req->get_oid(reqind));
-		lock_mib();
 		int err;
+		lock_mib();
 		// entry not available
 #ifndef _SNMPv3
 		if ((err = find_managing_object(defaultContext, 
@@ -4047,8 +4047,8 @@ void Mib::process_get_bulk_request(Request* req)
 
 void Mib::cleanup() 
 {
-	lock_mib();
 	OidListCursor<MibContext> cur;
+	lock_mib();
 	for (cur.init(&contexts); cur.get(); cur.next()) {
 		cur.get()->start_synch();
 		OidListCursor<MibEntry> c(cur.get()->get_content());
-- 
1.5.5.6


--7JfCtLOvnd9MIVvH
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: attachment;
	filename="0003-LOCK-Move-mib-lock-implementation-to-header-inline.patch"



More information about the AGENTPP mailing list