Opened 11 years ago

Last modified 6 years ago

#4933 new defect

Order not followed for buddy with multiple connections, default connection is wrong one

Reported by: kylen Owned by: EionRobb
Milestone: Component: libpurple
Version: 2.3.1 Keywords: connection order
Cc: vnicolici

Description

I have a buddy with multiple connections. If I expand the buddy the order I see is as follows:

Sametime (Available) AIM (logged in 42 min) MSN (available) Google (available) Yahoo (Available) MSN (Idle)

If I double-click on the buddy, it pops up a window trying to send to the Idle MSN at the end of the list. Why isn't it sending to the first available (Sametime) connection?

I tried editing the prefs.xml in .purple to set all status scores to 100 excpet offline, which i set to -500, but that doesn't fix this.

Attachments (1)

contact_priority.dll (14.2 KB) - added by datallah 11 years ago.
Contact Priority Plugin for 2.3.1

Download all attachments as: .zip

Change History (25)

comment:1 follow-up: Changed 11 years ago by datallah

  • pending changed from 0 to 1

You've messed with the status scores, that is the problem. If they are all set as 100, there is no way for us to differentiate between an idle and any other status.

comment:2 Changed 11 years ago by kylen

  • pending changed from 1 to 0

But if all statuses are equal, then shouldn't it follow the order in which the connections are specified? This being the last one in the list, it should not be chosen anyway.

comment:3 in reply to: ↑ 1 Changed 11 years ago by kylen

Replying to datallah:

You've messed with the status scores, that is the problem. If they are all set as 100, there is no way for us to differentiate between an idle and any other status.

I also verified that the behavior is the same if I switch back to the original values.

Ultimately, I want it to preserve my connection order, only skipping a connection if it is offline (hence why i set all of them the same). I would rather send to a higher-listed away/idle entry than one lower down the list that may be available. For example, I would list all work entries first and then all home entries--so if I am sending a message it would prefer a work connection first and then home if not connected at work.

comment:4 follow-up: Changed 11 years ago by datallah

  • pending changed from 0 to 1

The only thing you can do to control this have it choose whether it'll choose the "first" or the "last" listing (based on the "/purple/contact/last_match" preference being 0 and 1 respectively).

comment:5 in reply to: ↑ 4 ; follow-up: Changed 11 years ago by kylen

  • pending changed from 1 to 0

Replying to datallah:

The only thing you can do to control this have it choose whether it'll choose the "first" or the "last" listing (based on the "/purple/contact/last_match" preference being 0 and 1 respectively).

It was set to 0--tried setting it to 1 and it doesn't make a difference--that last Idle MSN connection is the one that pops up when I double-click the buddy.

comment:6 in reply to: ↑ 5 ; follow-up: Changed 11 years ago by datallah

  • pending changed from 0 to 1

Replying to kylen:

It was set to 0--tried setting it to 1 and it doesn't make a difference--that last Idle MSN connection is the one that pops up when I double-click the buddy.

You're not doing this while pidgin is running are you?

comment:7 in reply to: ↑ 6 Changed 11 years ago by kylen

  • pending changed from 1 to 0

Replying to datallah:

Replying to kylen:

It was set to 0--tried setting it to 1 and it doesn't make a difference--that last Idle MSN connection is the one that pops up when I double-click the buddy.

You're not doing this while pidgin is running are you?

No, I exit pidgin, edit the file and then restart.

comment:8 Changed 11 years ago by datallah

  • pending changed from 0 to 1

If the behavior is the same with the default status codes:

<pref name='status'>
	<pref name='scores'>
		<pref name='offline' type='int' value='-500'/>
		<pref name='available' type='int' value='100'/>
		<pref name='invisible' type='int' value='-50'/>
		<pref name='away' type='int' value='-100'/>
		<pref name='extended_away' type='int' value='-210'/>
		<pref name='idle' type='int' value='-50'/>
		<pref name='offline_msg' type='int' value='10'/>
	</pref>
</pref>

something else is going on here. Try using the contact priority plugin to set everything correctly; make sure that you're not overriding stuff on a per-account basis.

comment:9 Changed 11 years ago by kylen

  • pending changed from 1 to 0

I have looked everywhere but I can't find this contact priority plugin. Where can I download this plugin for Windows?

Changed 11 years ago by datallah

Contact Priority Plugin for 2.3.1

comment:10 Changed 11 years ago by datallah

  • pending changed from 0 to 1

That plugin isn't built by default. I've attached a binary for you.

comment:11 Changed 11 years ago by kylen

  • pending changed from 1 to 0

Sorry for the long delay. I have copied this plugin to my plugins directory (both in program files and application data) but don't see it in the plugins menu.

I also tried upgrading to 2.4.0 and I still see the issue.

One thing to note, however, it this only seems to happen when that last MSN connection is idle. A few days ago, it was "away" instead of idle, and the default connection was correct. This morning it is idle again, and it tries to default to that last MSN connection in the list.

comment:12 Changed 11 years ago by kylen

I still see this issue in 2.4.3

Basically, I want to always maintain my buddy contact order, unless the buddy is offline. So I have set the scores to:

<pref name='status'>
 <pref name='scores'>
  <pref name='offline' type='int' value='-500'/>
  <pref name='available' type='int' value='100'/>
  <pref name='invisible' type='int' value='100'/>
  <pref name='away' type='int' value='100'/>
  <pref name='extended_away' type='int' value='100'/>
  <pref name='idle' type='int' value='100'/>
  <pref name='offline_msg' type='int' value='100'/>
 </pref>
</pref>

What I am seeing is that idle connections somehow end up as the default--even if there are other connections ordered above it

For example, I have one buddy with 3 connections in the following order:

  • Sametime (available)
  • AIM (idle)
  • AIM (away)

and it picks the idle connection to display when I collapse the buddy, or when I double-click to start a conversation.

comment:13 follow-up: Changed 11 years ago by deryni

  • pending changed from 0 to 1

I'm assuming you have the contact priority plugin loaded, or were you unable to get it to show up in the end? Have you set per-account or per-protocol scores in the plugin at all?

comment:14 in reply to: ↑ 13 Changed 11 years ago by kylen

  • pending changed from 1 to 0

I have the plugin in both the main plugins dir and in m .purple plugins dir, but it does not seem to get loaded--I don't see it listed when I enter the plugins menu. The only settings I changed were the purple settings as described above. I'm not sure where to set per account or per-protocol scores--or is that part of the plugin.

comment:15 Changed 11 years ago by deryni

  • pending changed from 0 to 1

Those settings are part of the plugin, yes.

If you run 'pidgin -d' from the console do you see pidgin try to probe the contact priority dlls? If so does it error on them? If you don't see it trying to probe them are they in the same directory as other plugins that it does try to probe?

When this happens does it tend to avoid specific protocols or specific accounts of yours? Is there any other sort of pattern you've been able to notice?

comment:16 Changed 11 years ago by kylen

  • pending changed from 1 to 0

OK--looks like I saved the plugin bad the last time--saw an error message in the debug that said it was an invalid win32 prog. Re-downloaded and could use it.

In that plugin, I set idle, away and extended away to 100, and offline to -500. I also have the "use last buddy when scores are equal" unchecked.

Then I had a buddy with Sametime, MSN, AIM connections in that order (all available). The sametime is at the top when I expand the buddy, and is the default when i double click.

From another PC, I then use the idle maker plugin to make the MSN connection in the middle idle. Immediately, I see on this machine that the idle MSN connection becomes the default.

I then tried giving the Sametime protocol a higher point value, but that didn't change it. it still defaults to the idle msn connection.

comment:17 Changed 11 years ago by kylen

So i've seen this both when the idle account is AIM and MSN--doesn't seem to care about protocol--just idle state.

comment:18 Changed 11 years ago by kylen

Looks like the plugin reads the values i manually edited in the plugin.xml file for idle, away, extended_away and offline. Changing these in the plugin, they don't get saved--they are right back to the file values when I re-enter the plugin.

The only things that seem to get saved by the plugin are the "use last buddy" and protocol point values.

comment:19 Changed 11 years ago by lschiere

  • Component changed from unclassified to libpurple

comment:20 Changed 10 years ago by kylen

I am still seeing an issue where Idle AIM buddies in the same group get priority over active Sametime buddies that are listed higher up.

comment:21 Changed 10 years ago by QuLogic

  • Owner changed from lschiere to rekkanoryo

comment:22 Changed 6 years ago by vnicolici

This is still an issue in Pidgin 2.10.7.

This is even more annoying for XMPP, because I can't ungroup the contact.

There is only one contact, with multiple statuses on his/her devices.

When it's available on one device and away on another device pidgin shows the contact as away, instead of available.

It seems it uses the XMPP "priority" of the resources to determine the status to show, instead of showing the connections based on the priorities from prefs/status/scores .

What's funny is that pidgin doesn't even have the option to define a priority when defining an account:

https://developer.pidgin.im/ticket/1345 is closed, but the feature still doesn't exist.

Luckily IM+ on my Windows Phone has the feature, and I had to lower its priority from 5 to 0 to make it lower than the default hardcoded pidgin priority of 1.

There seems to be a plugin pack to configure priorities, but how many non-technical users will find it and be able to configure it properly?

comment:23 Changed 6 years ago by vnicolici

In any case, the default behavior is wrong. It should first order resources by pref/status/scores, then by XMPP priority.

comment:24 Changed 6 years ago by rekkanoryo

  • Owner changed from rekkanoryo to EionRobb
Note: See TracTickets for help on using tickets.
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!