[omniORB] omniORB 4.0.3 (vxWorks) stuck in tcpTransport initialization

Kiesswetter, Florian (Florian) fkiesswe at lucent.com
Tue Apr 19 11:36:28 BST 2005


Duncan,

we use omniORB 4.0.3 for vxWorks and I expect a bug in the tcp transport initialization in the case if there are interfaces which don't have the flag IFF_UP.
Below are the suspect lines out of the file tcpTransportImplc.cc in the function "void vxworks_get_ifinfo(omnivector<const char*>& ifaddrs)" (line 406). 
If an interface in the list is not UP this part will not be evaluated, and the entryLength and the pointer to the ifreq struct will not be modified and hence not set to the next interface. 
-> omniORB will continue in an endless loop for this not running interface. I think the last brace should be moved up 2 lines.

    if (((struct ifreq *)ifreqBuf)->ifr_flags & IFF_UP) {
      if (ifr->ifr_addr.sa_family == AF_INET) {
	// AF_INET entries are of type sockaddr_in = 16 bytes
	struct sockaddr_in* iaddr = (struct sockaddr_in*) &(ifr->ifr_addr);
	CORBA::String_var s;
	s = tcpConnection::ip4ToString(iaddr->sin_addr.s_addr);
	ifaddrs.push_back(s._retn());
      }
      
      // ifreq structures have variable lengths
      entryLength -= offset;
      ifr = (struct ifreq *)((char *)ifr + offset);
 }

May be you can check if I am right.
Thanks,
Florian

___________________________________________________________
				Lucent Technologies  O
				Bell Labs Innovations
___________________________________________________________

Florian Kießwetter		Dept.:	FLI64, NodeB SW Dev.
Thurn-und-Taxis-Str. 10		Phone:	+49 911 526 3927
D-90411 Nürnberg, Germany		Fax:	+49 911 526 3856
Room 4 - 114  			mailto:fkiesswe at lucent.com
___________________________________________________________




More information about the omniORB-list mailing list