Can we make pipefds[0] in netsnmp_callback_transport() as non-blocking fds.?
"Pamidipati Suresh-G20238" <[email protected]>
| Newsgroups | gmane.network.net-snmp.user |
|---|---|
| Message-ID | <[email protected]> |
Hi All,
We are using Net-snmp-5.2.2 as Agentx subagent and master agent.
In Subagent, we are observing that "select()" returns with a read-fd
set, but a subsequent "read()" call on that fd is getting blocked. The
fd-pair being used here, is created using the "pipe()" call.
We observed that read() call is blocked at line no 194 in
netsnmp_callback_recv() function of snmpCallbackDomain.c file. Following
is the code snippet.
188 DEBUGMSGTL(("transport_callback", "hook_recv enter\n"));
189
190 while (rc < 0) {
191 #ifdef WIN32
192 rc = recv(mystuff->pipefds[0], newbuf, 1, 0);
193 #else
194 rc = read(mystuff->pipefds[0], newbuf, 1);
195 #endif
196 if (rc < 0 && errno != EINTR) {
197 break;
198 }
199 }
200
We have seen this problem in Montavista linux CGE - 4.0.
After going through the Net-snmp code, we found that pipefds created
using pipe() call are not set as non-blocking fds.
Please let us know if we change the pipefds[0] as non-blocking fds as
follows, will there be any impact in the functionality of Subagent and
Master agent.
netsnmp_transport *
netsnmp_callback_transport(int to)
{
int enable_nbio;
. . .
. . .
rc = pipe(mydata->pipefds);
ioctl(mydata->pipefds[0], FIONBIO, &enable_nbio);
. . .
. . .
}
Any information on this will be really helpful.
Thanks,
Suresh.
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users