Hi,
I am trying a direct send between two programs, one listening and upon
accepting, starts a receiver and the other connecting and should start a
sender upon connecting but the on_connection_open never gets called in the
sending program. I can see with netstat the connection is established and
my listening program gets on_accept, on_transport_open and then
on_connection_open upon which a do open_receiver whereafter i get
on_session_open and then on_receiver_open upon which  i add 100 credits but
that's where the action stops. The sender only ever gets on_container_start
upon which i connect and the source code would have opened a sender in the
on_connection_open but this never gets called even though the other end and
netstat shows the connection is in fact established. A pstack on the sender
shows the run thread in epoll and select most of the time.
I removed the rpm's and downloaded 0.38.0 sources and started adding debug
prints to understand what's going on. My first venture in qpid proton
sources and all i could see that is suspect is

void on_connection_bound(messaging_handler& handler, pn_event_t* event) {
    connection c(make_wrapper(pn_event_connection(event)));
}

which makes a connection object but does nothing with it. Call's now
handler. This is the only case in proton::messaging_adapter::dispatch which
does not fall through to default in my sending app.
It's difficult to provide a working example as the code is integrated into
a bigger app which comes with a lot of libraries and other sources.  My
on_* is modeled quite closely to the examples so i suspect something in my
integration code is breaking it but i have no clue what.
My question here is, is there any suggestions how to debug this with the
qpid proton source code at hand ? Why would my on_connection_open not be
called or is it not called ? Should it have been called ?
Thanks

Reply via email to