Protocols/OSCAR/SNAC/ICBM MISSED CALLS

From NINA Wiki
Jump to navigation Jump to search
OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
ID Origin Name Foodgroup Service Status Version
0x0004, 0x000A Host ICBM__MISSED_CALLS Unspecified BOS Active 1.25

When the host is unable to send one or more messages to the client, the host sends this SNAC to the client to let it know that it missed some messages ("calls").

It does this at the earliest possible time (e.g., at the first available time slot allowed by minInterICBMInterval). So if user A sends a message to user B, and the server denies sending to user B because of size, user A gets an error and user B gets a missed call.

SNAC Header

Foodgroup uint16 (word) 00 04
Subgroup uint16 (word) 00 0A
Flags uint16 (word) 00 00
Request ID uint32 (dword) 00 00 00 00

SNAC Data

Name Type Notes
missedCallArray Rest of SNAC array of ICBM Missed Call Information about the messages that were missed

Datatype: ICBM Missed Call

This represents a single missed IM from a sender, sent to the potential receiver.

Name Type Notes
channel uint16 (word) Channel on which the missed message was
senderInfo OSERVICE__USERINFO Information about the sender
numMissed uint16 (word) How many messages were dropped
reason uint16 (word) [Class: ICBM__MISSED_CALL_REASONS] Why the IM failed

Class: ICBM__MISSED_CALL_REASONS

These are the reasons sent to a receiver why they could not receive an IM from a sender.

Name Value Notes
ICBM__MCR_TOO_LARGE 0x0001 Sender's message was too large
ICBM__MCR_RATE_EXCEEDED 0x0002 Sender exceeded the receiver's rate limit
ICBM__MCR_EVIL_SENDER 0x0004 Message rejected because sender is EVIL
ICBM__MCR_EVIL_RECEIVER 0x0008 Message rejected because receiver is EVIL
SNAC(04,0A)  ICBM__MISSED_CALLS 

This snac mean that somebody send you a message but server can't deliver it to you for some reason. It contain information about user, who send you a message, number of missed messages and reason. Known reason types:

0 - Message was invalid
1 - Message was too large
2 - Message rate exceeded
3 - Sender too evil (sender warn level > your max_msg_sevil)
4 - You are too evil (sender max_msg_revil > your warn level)

See also SNAC(04,02), SNAC(04,05) for more information about message limitations and additional info about online userinfo block.

 00 04   word   SNAC family
 00 0A   word   SNAC subtype
 00 00   word   SNAC flags
 xx xx xx xx   dword   SNAC request-id
 

Following structure may be repeated more then once

 xx xx   word   missed message type (channel)
 xx   char   uin string length
 xx ..   string   uin string
 xx xx   word   warning level
 00 04   word   Number of TLV in fixed part (user online info)
 00 01   word   TLV.Type(0x01) - user class
 xx xx   word   TLV.Length
 xx xx xx xx   dword   User class
 00 06   word   TLV.Type(0x06) - user status
 xx xx   word   TLV.Length
 xx xx xx xx   dword   User status
 00 0F   word   TLV.Type(0x0F) - online time
 xx xx   word   TLV.Length
 xx xx xx xx   dword   Client online time
 00 03   word   TLV.Type(0x03) - signon time
 xx xx   word   TLV.Length
 xx xx xx xx   dword   Time when client gone online
 xx xx   word   number of missed messages
 xx xx   word   Reason (see list above)



Example SNAC dumps with flap header:


  2A 02 12 05 00 38 00 04  00 0A 00 00 8E 36 C7 B1 *....8.......6..
  00 02 07 36 32 31 38 38  39 35 00 00 00 04 00 01 ...6218895......
  00 02 00 06 00 04 00 02  00 00 00 0F 00 04 00 00 ................
  00 00 00 03 00 04 3D E7  38 8B 00 01 00 01       ......=.8.....


ICBM SNACs

SNAC List
Subgroup Origin Name
0x0001 Any ICBM__ERR
This is the error SNAC for the ICBM foodgroup.
0x0002 Client ICBM__ADD_PARAMETERS
This SNAC is typically sent prior to sending the OSERVICE__CLIENT_ONLINE so that the host is properly initialized with the clients' preferences.
0x0003 Client ICBM__DEL_PARAMETERS
These are the delete all parameters for a given channel.
0x0004 Client ICBM__PARAMETER_QUERY
This SNAC requests ICBM parameters from the host.
0x0005 Host ICBM__PARAMETER_REPLY
This SNAC is sent by the host in response to a ICBM__PARAMETER_QUERY.
0x0006 Client ICBM__CHANNEL_MSG_TOHOST
This is the basic inter-client message after which the group was named (Inter-Client Basic Messages).
0x0007 Host ICBM__CHANNEL_MSG_TOCLIENT
This is the ICBM__CHANNEL_MSG_TOHOST after it has been reformatted by the host and sent to the destination client.
0x0008 Client ICBM__EVIL_REQUEST
This requests that the specified user is sent an EVIL notification.
0x0009 Host ICBM__EVIL_REPLY
The reply tells the requester, the sender of an ICBM__EVIL_REQUEST SNAC, how much EVIL, if any, was applied to the recipient.
0x000A Host ICBM__MISSED_CALLS
When the host is unable to send one or more messages to the client, the host sends this SNAC to the client to let it know that it missed some messages ("calls").
0x000B Any ICBM__CLIENT_ERR
This error notice is one of the few SNACs that can be sent to the host and received by a client.
0x000C Host ICBM__HOST_ACK
This SNAC is sent by the host upon receipt of any ICBM__CHANNEL_MSG_TOHOST which includes the optional ICBM__TLV_TAGS_REQUEST_HOST_ACK TLV.
0x000D NCD ICBM__SIN_STORED
This is not currently documented. Want to contribute?
0x000E NCD ICBM__SIN_LIST_QUERY
This is not currently documented. Want to contribute?
0x000F NCD ICBM__SIN_LIST_REPLY
This is not currently documented. Want to contribute?
0x0010 Client ICBM__SIN_RETRIEVE
This requests ICBM__CHANNEL_MSG_TOCLIENT messages be generated for each of the stored ICBMs. Any message retrieved is deleted.
0x0011 NCD ICBM__SIN_DELETE
This is not currently documented. Want to contribute?
0x0012 NCD ICBM__NOTIFY_REQUEST
This is not currently documented. Want to contribute?
0x0013 NCD ICBM__NOTIFY_REPLY
This is not currently documented. Want to contribute?
0x0014 Any ICBM__CLIENT_EVENT
This SNAC is sent as a control message, sent by a client to inform the recipient of an event, or by the host informing of an event.
0x0017 Host ICBM__SIN_REPLY
The host successfully processed the request to retrieve all the offline messages.