Hi list :)

I've been troubleshooting something for hours and can't quite put something 
together.

My app implements the net-snmp async API via the usual snmp_open / 
snmp_pdu_create / snmp_parse_oid / snmp_add_var / snmp_async_send. I supply a 
callback to snmp_async_send() and an object containing data that my callback 
needs to process the result.

In my scenario, I have an open session, and I've submitted a request via that 
session but it's not coming back. In the normal flow of things, this request 
times out fine and my callback function is run, and it's passed 
NETSNMP_CALLBACK_OP_TIMED_OUT. However, in certain circumstances I need to 
flush my app and force it to dump data into it's backend data store. In these 
circumstances, I want to effectively "cancel" the pending request as gracefully 
as possible, and free some objects (namely the data object that's been passed 
to the SNMP API for callback).

>From what I understand I can just call snmp_close() and any requests waiting 
>are freed up nicely. Looking at the snmp_api.c code, snmp_close() should 
>result in my callbacks being run immediately with 
>NETSNMP_CALLBACK_OP_TIMED_OUT. This is desirable because my app just treats it 
>as an error and flushes the whole request cleanly so I don't have any bad 
>pointers.

The problem I'm having is that when I snmp_close() the sessions, my callback 
isn't triggering. snmp_close() is returning OK, and it looks like the session 
is killed OK. However, because the callback isn't triggered, the data object 
isn't getting dereferenced and I'm ultimately hitting my refcounter logic 
telling me "you can't free this, it's referenced by something!"

Am I missing something? Perhaps I can't see the wood for the trees?! Or is 
there a better way to do what I want to achieve without having to ignore my 
internal refcounting APIs??

SNMP lib version is 5.3.x (RHEL 5) - not had chance to test it against the 
latest and greatest upstream, but need to target stock RHEL rpms.

Thanks in advance
Al.

------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Net-snmp-users mailing list
Net-snmp-users@lists.sourceforge.net
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users

Reply via email to