Transport allways seems to be "hooked" to first location online

I have an desktop computer and then laptop computer, and also ofcourse openfire server.

My problems is that with whatever computer I have logged in first does seem to get highest priority allways, no matter is it set away or so. If I set my first loggen on desktop to away, I see MSN transport also as away in laptop messenger, and nothing I do helps on this. All the messages goes only to desktop computer, which is obviously wrong in that case.

Even as I write with laptop computer, recipients answer goes to desktop…

How is this meant to work?

Openfire 3.4.2 and IM gateway 1.2.1a

Some more info…

Pidgin was online but away at home. When I logged in with Meebo web-messenger I could only see my 4 transports (AIM, ICQ, MSN, Y!), them being away, but no contacts from transports at all. I only saw my few native XMPP contacts in the list… As soon as I closed the Pidgin-connection trough Openfire admin, and logged in again with Meebo, my transport contacts appeared as they should.

It seems like the transports somehow links itself to first client connection whatever that is… As transports stays also away if there already are online but away connection from a location and then connecting to server from elsewhere…

Took a notice also that priorities doesn’t seem to play any role in this, as with 2 Pidgins, the first away-state pidgin has priority 0, and new online pidgin has priority 1, but transports “insist” being away. With away pidgin + meedo online both priorities are 0, same behaviour both cases.

Playing around with this issue now for 2 weeks, and it is still there with Openfire 3.4.3 and IM Gateway 1.2.2…

Also I have propably some more clarification to the problem. When I log on from 2 resources and changed statuses around for testing this issue again, I saw that when no messages was exchanged yet, gateways seems to work very correctly (stays online if any resource is online), but as soon as an IM message comes or goes, it seems that this is where IM Gateway starts to “bond” the resourse where the IM message was said or happened to be received.

As soon as IM Message comes/goes, and I change resources so that “first message” resource gets away and second resource stays online, then I turn off any open IM windows (for completeness), then it doesn’t matter do I say something first with now online resource, or does someone talk to me, all the messages still goes to the now away resource where the first IM was got/send to and gateways statuses are away, while they should be online, as there is resource that is online.

While we are at this, I don’t know is it due to this bug, but isn’t this supposed to work in the way that if someone says something to me, new message should arrive to any online resource (or any number of highest priorities) until I answer from some resource and then that specific conversation is done only between that resource and receiver? And that if I suddenly start to talk to same contact from other resource, no matter of priority, it should steer all future conversation of that contact to this new resource until chat get closed or I change resource again?

Currently, as I see, IM Gateway (or Openfire itself?) doesn’t do that, but somehow “binds” itself to resource where first message was sent/received no matter do I even open up new contact in second resource and talk, answers goes to the “binded” resource.

In between I have totally reinstalled Openfire and IM gateway, as newest Openfire was released as .deb I ddin’t use any old settings, so those can’t play part here either.

Resources themselves mean absolutely nothing when it comes to routing messages, only priorities. The IM Gateway plugin sends messages to your bare JID, which Openfire then routes. Openfire should be routing these according to whatever resource has the highest priority. There is a caveat to that, that being when two or more resources are logged in with the same priority. What happens at this point I do not know off the top of my head, but my understanding is that it’s supposed to go to the last one that had activity. (I think we have an open issue to add support for choosing that behavior at some point)

So… that all said. I don’t believe the IM Gateway plugin is causing this as it has no real way of handling that if it’s just sending to a bare jid. You are probably aware that I’m one of the developers of Openfire now though. So don’t think I’m passing you off. hehehehe

So the real problem here is… why can’t I reproduce this behavior? I’ve run through your scenario and it comes up working as I would expect. Scenarios I tried are as follows: I’ll use R for resource and P for priority.

RaP1 logs in

all incoming messages go to Ra

RbP2 logs in

all incoming messages now go to Rb

RaP1 changes to RaP3

all incoming messages now go to Ra

RaP3 changes to RaP2

all incoming messages are still going to Ra at this point it seems, I guess it had the last activity by changing?

RbP2 changes to RbP4

all incoming messages go to Rb

RcP5 logs in

all incoming messages go to Rc

So… I can’t get it to fail to behave properly.

Away, available, all of that stuff doesn’t matter one bit. It’s all about the priority. You can be away with a priority of 50 indicating that you still want messages coming to your away resource. (Assuming of course the other resource is less than 50)

Resources themselves mean absolutely nothing when it comes to routing messages, only priorities.

Away, available, all of that stuff doesn’t matter one bit. It’s all about the priority. You can be away with a priority of 50 indicating that you still want messages coming to your away resource. (Assuming of course the other resource is less than 50)

Well, when away with resource ‘desktop’ that got messages going on first, it does get priority of 0, and other one ‘laptop’ stays online with priority of 1, yet all and any messages still gets received to desktop until I am totally logged off with desktop. And what seems obviously wrong to me is that all the gateways stays at away too, changing only when desktop changes status, or when totally logged off with desktop.

So the real problem here is… why can’t I reproduce this behavior?

Now this would be too easy then it seems. I don’t know… Do you want to see any logs or something?

Openfire should be routing these according to whatever resource has the highest priority. There is a caveat to that, that being when two or more resources are logged in with the same priority. What happens at this point I do not know off the top of my head, but my understanding is that it’s supposed to go to the last one that had activity. (I think we have an open issue to add support for choosing that behavior at some point)

To here I have an suggestion, and basically a neccesity even: If there are multiple resources with same priority and new message arrives (no open conversation beforehand with that contact), then the messages should go to all resources that has same highest priority, until some resource answers to it. Then also messages should keep going into same resource no matter priority as long as same conversation is open on same resource, or until another resource starts talking to this contact.

Then again there should be some sort of timeout so that if I left some contact open for too long (left conversation open to desktop and going away) and the contact talks to me, messages should arrive again to highest priority(ies), or highest priority(ies) + already open resource until again I have answered to the contact from some resource.

All the better if those could be configurable for each owns tasting. Also my opinion is that you can’t never have messages going to too mmny resources, but you can to too little amount of them

Multiple resources was the thing I started to like about XMPP back then so this means much to me =)

Message was edited by: olmari, clarified text some bit