The problem this time was also wrong disco-info, see http://www.xmpp.org/registrar/disco-categories.html. Iget:
<iq from='sms.jabbim.pl' <email address hidden>/Coccinella@Mats-Bengtssons-dator' id='1022' type='result'>
<identity category='service' name='Poland SMS transport' type='sms'/>
<feature var='vcard-temp'/><feature var='jabber:iq:version'/>
<feature var='jabber:iq:gateway'/><feature var='jabber:iq:agents'/><feature var='vcard-temp'/>
<feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/>
and service/sms isn't a registered disco identity. My fallbacks for getting icons failed and I have now added more traps that will work in more situations. However, in this case there is just no category='service' so I return an empty image. Have no idea what "service" is supposed to mean and it is better not to assume anything.
In situations like this one it can help if you provide some more debug info like this: consider the top proc of the stack trace ("::Rosticons::Get") and add some puts statements, at least for the arguments since I don't always get them in the stack trace. And perhaps a few other puts so I can see what is happening. 90% of my time is spent trying to figure out what has happened and just a small part actually fixing it.