Protocols/OSCAR/SNAC/ICBM MISSED CALLS: Difference between revisions
No edit summary |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 20: | Line 20: | ||
== SNAC Data == | == SNAC Data == | ||
{| class="wikitable" | |||
! Name | |||
! Type | |||
! Notes | |||
|- | |||
| missedCallArray | |||
| Rest of SNAC array of [[Protocols/OSCAR/SNAC/ICBM_MISSED_CALLS#Datatype:_ICBM_Missed_Call|ICBM Missed Call]] | |||
| Information about the messages that were missed | |||
|} | |||
=== Datatype: ICBM Missed Call === | === Datatype: ICBM Missed Call === | ||
This represents a single missed IM from a sender, sent to the potential receiver. | |||
{| class="wikitable" | |||
! Name | |||
! Type | |||
! Notes | |||
|- | |||
| channel | |||
| uint16 (word) | |||
| Channel on which the missed message was | |||
|- | |||
| senderInfo | |||
| [[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Datatype:_OSERVICE_USERINFO|OSERVICE__USERINFO]] | |||
| Information about the sender | |||
|- | |||
| numMissed | |||
| uint16 (word) | |||
| How many messages were dropped | |||
|- | |||
| reason | |||
| uint16 (word) | |||
| ''[Class: [[Protocols/OSCAR/SNAC/ICBM_MISSED_CALLS#Class:_ICBM_MISSED_CALL_REASONS|ICBM__MISSED_CALL_REASONS]]]'' Why the IM failed | |||
|} | |||
=== Class: ICBM__MISSED_CALL_REASONS === | === Class: ICBM__MISSED_CALL_REASONS === | ||
These are the reasons sent to a receiver why they could not receive an IM from a sender. | |||
{| class="wikitable" | |||
! 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 | |||
|} | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#4040FF > | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td><b><font color="white">SNAC(04,0A) </font></b></td> | |||
<td width=70% align=right><b><font color="white">ICBM__MISSED_CALLS </font></b> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<table width=635 cellSpacing=0 cellPadding=0 border=0> | |||
<tr><td><br> | |||
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: <br><br> | |||
0 - Message was invalid<br> | |||
1 - Message was too large<br> | |||
2 - Message rate exceeded<br> | |||
3 - Sender too evil (sender warn level > your max_msg_sevil)<br> | |||
4 - You are too evil (sender max_msg_revil > your warn level)<br><br> | |||
See also [[Protocols/OSCAR/SNAC_04_02|SNAC(04,02)]], [[Protocols/OSCAR/SNAC_04_05|SNAC(04,05)]] | |||
for more information about message limitations and [[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Datatype:_OSERVICE_USERINFO|additional info]] about online userinfo block. | |||
<br><br> | |||
<table width=635 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9 > | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>SNAC family</td> | |||
</tr> | |||
<tr> | |||
<td> 00 0A</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC subtype</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC flags</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>SNAC request-id</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=630 cellSpacing=2 cellPadding=0 align=center border=0> | |||
<tr><td> | |||
<table width=630 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0> | |||
<tr><td bgcolor=#c9c9E9> | |||
Following structure may be repeated more then once | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9 > | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>missed message type (channel)</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>char</td> | |||
<td> </td> | |||
<td>uin string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>uin string</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>warning level</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>Number of TLV in fixed part (user online info)</td> | |||
</tr> | |||
</table> | |||
<!-- TLV 0x01 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 01</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=56%>TLV.Type(0x01) - user class</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=56%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS|User class]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x06 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 06</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=56%>TLV.Type(0x06) - user status</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=56%>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_STATUS|User status]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0F --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 0F</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=56%>TLV.Type(0x0F) - online time</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=56%>Client online time</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x03 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 03</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=56%>TLV.Type(0x03) - signon time</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=56%>Time when client gone online</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>number of missed messages</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>Reason (see list above)</td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br>Example SNAC dumps with flap header: | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr> | |||
<td bgcolor=#E9E9E9> | |||
<font size=3><pre style="font-size: 13px"> | |||
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..... | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
[[Category:With_Contrib]] | |||
== ICBM SNACs == | == ICBM SNACs == |
Latest revision as of 11:42, 14 February 2021
OSCAR Protocol |
Introduction • Terms • Clients |
Basic |
Datatypes • FLAP • SNAC • TLV |
UUIDs • Errors • Tool IDs |
Host Interaction |
Rate Limits • Migration • Messages |
Other Services |
ADMIN • ADVERT • ALERT |
BART • BOS • BUCP • CHAT |
CHAT_NAV |
Tutorials |
Sign On • BART • Rendezvous |
ICBM • Locate • Buddies |
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 |
|
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 See also SNAC(04,02), SNAC(04,05)
for more information about message limitations and additional info about online userinfo block.
ICBM SNACs
|