Hello Elmer,

sorry, I won't be able to test this today.

The source I have looks slightly different, see yourself at:

http://lxr.linux.no/linux+v2.6.24/net/tipc/port.c#L910

Maybe interesting to note: in reply to the TIPC_CONN_MSG the
tipc_conn_shutdown_event callback is called! So maybe this is
the main issue here... Your examples call the tipc_conn_msg_event
instead.

Anyway, this is linux mainline 2.6.24, Andrew or Linus should pick
a bug-fix without too much hassle.

Best regards,
Erich


On Montag 25 Februar 2008, Horvath, Elmer wrote:
> Hi,
> 
> Yes, this is possible that the code is suffering from the native API
> issue.  I don't have a copy of the 1.6.2 code installed, so...
> 
> Erich, if TIPC 1.6.2 has the following code in
> port.c:port_dispatcher_sigh()
>                 case TIPC_CONN_MSG:{
>                                 tipc_conn_msg_event cb =
> up_ptr->conn_msg_cb;
>                                 u32 peer_port = port_peerport(p_ptr);
>                                 u32 peer_node = port_peernode(p_ptr);
> 
>                                 spin_unlock_bh(p_ptr->publ.lock);
>                                 if (unlikely(!connected)) {
>                                         if (unlikely(published))
>                                                 goto reject;
>                                         tipc_connect2port(dref,&orig);
>                                 }
>                                 if (unlikely(msg_origport(msg) !=
> peer_port))
>                                         goto reject;
>                                 if (unlikely(msg_orignode(msg) !=
> peer_node))
>                                         goto reject;
> 
> Then you have the problem that was found trying to establish a
> connection with the Native API.  You would be best off upgrading to TIPC
> 1.7.5.  A very quick *TEST* would be to change the checks to what is
> below; if it allows the connection to be established with the topology
> server, then upgrade to TIPC 1.7.5 (don't just apply this change since
> there are a number of other changes required for a real fix).
> 
>                 case TIPC_CONN_MSG:{
>                                 tipc_conn_msg_event cb =
> up_ptr->conn_msg_cb;
>                                 u32 peer_port = port_peerport(p_ptr);
>                                 u32 peer_node = port_peernode(p_ptr);
> 
>                                 spin_unlock_bh(p_ptr->publ.lock);
>                                 if (unlikely(!connected)) {
>                                         if (tipc_connect2port(dref,
> &orig))
>                                                 goto reject;
>                                 } else if (unlikely(
>                                             (msg_origport(msg) !=
> peer_port) ||
>                                             (msg_orignode(msg) !=
> peer_node)))
>                                         goto reject;
> 
> Elmer

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
tipc-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to