Protocols/OSCAR/SNAC/ICBM CLIENT ERR: Difference between revisions
(Created page with "{{Protocols/OSCAR}} {{Protocols/OSCAR/SNAC/Stats |origin={{Protocols/OSCAR/SNAC/ICBM__CLIENT_ERR/Origin}} |name=ICBM__CLIENT_ERR |id=0x0004, 0x000B |service={{Protocols/OSCAR/...") |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 10: | Line 10: | ||
{{Protocols/OSCAR/SNAC/ICBM__CLIENT_ERR/Description}} | {{Protocols/OSCAR/SNAC/ICBM__CLIENT_ERR/Description}} | ||
The SNAC can come from either origin source, this is because the message is basically forwarded from the source client, to the server, to the destination client. | |||
This SNAC may only be sent as a programmatic response to an inter-client message. It is used to indicate that there was some problem with the original message received by the sender. If this SNAC is not immediately generated as a response, the client loses the right to send it at all and attempts to send it will be rejected by the server. | |||
As transmitted, "cookie", "channel", and "username" are to be those which were presented in the inter-client message being rejected. As received, "username" has been changed to indicate the source of the error. It is not allowed to respond to a CLIENT_ERR SNAC with another CLIENT_ERR SNAC. Receiving a CLIENT_ERR SNAC does not grant the right to EVIL. | |||
== SNAC Header == | |||
{{Protocols/OSCAR/SNAC/Header | {{Protocols/OSCAR/SNAC/Header | ||
|foodgroup=00 04 | |foodgroup=00 04 | ||
Line 17: | Line 23: | ||
|reqid=00 00 00 00}} | |reqid=00 00 00 00}} | ||
=== SNAC | == SNAC Data == | ||
{| class="wikitable" | |||
! Name | |||
! Type | |||
! Notes | |||
|- | |||
| cookie | |||
| [[Protocols/OSCAR/Foodgroups/ICBM#Datatype:_Cookie|ICBM Cookie]] | |||
| Opaque data generated by conversation initiator and used to link up the conversation and errors | |||
|- | |||
| channel | |||
| uint16 (word) | |||
| ''[Class: [[Protocols/OSCAR/Foodgroups/ICBM#Class:_ICBM_CHANNELS|ICBM__CHANNELS]]]'' Channel the message is on | |||
|- | |||
| username | |||
| string08 | |||
| Destination username when sending and the source username when received | |||
|- | |||
| code | |||
| uint16 (word) | |||
| ''[Class: [[Protocols/OSCAR/SNAC/ICBM__CLIENT_ERR|ICBM__CLIENT_ERR]]]'' Error code | |||
|- | |||
| errorInfo | |||
| blob | |||
| Optional error info | |||
|} | |||
=== Class: ICBM__CLIENT_ERRORS === | |||
The following are Inter-Client error codes. | |||
{| class="wikitable" | |||
! Name | |||
! Value | |||
! Notes | |||
|- | |||
| ICBM__CLIENT_ERR_UNSUPPORTED_CHANNEL | |||
| 0x01 | |||
| Receiving client does not understand the channel | |||
|- | |||
| ICBM__CLIENT_ERR_BUSTED_ICBM_PAYLOAD | |||
| 0x02 | |||
| Receiving client thinks the payload is busted | |||
|- | |||
| ICBM__CLIENT_ERR_CHANNEL_SPECIFIC_ERROR | |||
| 0x03 | |||
| See [[Protocols/OSCAR/Services/Rendezvous#Class:_ICBM_RENDEZVOUS_NAK|ICBM__RENDEZVOUS_NAK]] which will be inside the errorInfo for values for ICBM__CHANNEL_RENDEZVOUS | |||
|} | |||
=== From Aleksandr Shutko: SNAC(04,0B) client message error or data SNAC(04,0B) ICBM__CLIENT_ERR === | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br> | |||
Client send this snac as reply to [[Protocols/OSCAR/SNAC_04_07|SNAC(04,07)]]. | |||
Server transfer it to client without changes, but only if its format is valid. | |||
This snac also used for auto-messages (away message/busy message/chat message/etc). | |||
<br><br> | |||
First dword in msg-id cookies is actually the computer uptime in milliseconds | |||
(ie GetTickCount(), at least this is what the ICQ Lite and the other official | |||
clients I have tested uses).<br><br> | |||
<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 > | |||
<table width=640 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 0B</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=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> xx xx xx xx<br> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td valign=top>qword</td> | |||
<td width=5> </td> | |||
<td width=55% valign=top>msg-id cookie</td> | |||
</tr> | |||
<tr> | |||
<td colspan=5> </td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>message channel (see table below)</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>screenname string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>screenname string</td> | |||
</tr> | |||
<tr valign=top> | |||
<td> 00 03</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>reason code (1 - unsupported channel, 2 - busted payload, 3 - channel specific)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
If channel is supported, here is channel-specific data | |||
(see references below). | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
<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=white> | |||
<table width=100% cellSpacing=1 cellPadding=1 align=center border=0> | |||
<tr> | |||
<td bgcolor=#f0f0f0 valign=top width=15%><b> <font size=2>[[Protocols/OSCAR/SNAC/ICBM_CLIENT_ERR#Channel_1_Example|Channel 1]] </b></font></td> | |||
<td bgcolor=#f0f0f0 valign=top> Channel 1 data format (plain-text messages)</td> | |||
</tr> | |||
<tr class=corr> | |||
<td bgcolor=#f0f0f0 valign=top><b> <font size=2>[[Protocols/OSCAR/SNAC/ICBM_CLIENT_ERR#Channel_2_Example|Channel 2]] </b></font></td> | |||
<td bgcolor=#f0f0f0 valign=top> Channel 2 data format (rtf messages, rendezvous)</td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
<br>Example SNAC dump 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 54 28 00 6E 00 04 00 0B 00 00 00 00 00 0B *.T(.n.......... | |||
F3 3A C1 0C 70 18 00 00 00 02 07 36 32 31 38 38 .:..p......62188 | |||
39 35 00 03 1B 00 07 00 00 00 00 00 00 00 00 00 95.............. | |||
00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 07 ................ | |||
00 0E 00 07 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |||
00 E9 03 00 00 00 00 1B 00 55 73 65 72 20 69 73 .........User is | |||
20 63 75 72 72 65 6E 74 6C 79 20 4F 63 63 75 70 currently Occup | |||
69 65 64 00 ied. | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
== Examples == | |||
=== Channel 1 Example === | |||
==== From Aleksandr Shutko: SNAC(04,0B)/CH1 ICBM__CLIENT_ERR/CH1 ==== | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br>Client send this snac as reply to [[Protocols/OSCAR/SNAC/ICBM_CHANNEL_MSG_TO_CLIENT#Channel_1_Example|SNAC(04,07)/CH1]]. | |||
See also common description for [[Protocols/OSCAR/SNAC_04_0b|SNAC(04,0B)]]. | |||
<br><br> | |||
<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 > | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>SNAC family</td> | |||
</tr> | |||
<tr> | |||
<td> 00 0B</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=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx xx xx<br> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td valign=top>qword</td> | |||
<td width=5> </td> | |||
<td width=55% valign=top>msg-id cookie</td> | |||
</tr> | |||
<tr> | |||
<td colspan=5 height=5></td> | |||
</tr> | |||
<tr> | |||
<td> 00 01</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>message channel</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>screenname string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>screenname string</td> | |||
</tr> | |||
<tr valign=top> | |||
<td> 00 03</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>reason code (2 - busted payload, 3 - channel specific)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td colspan=5> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkred 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=610 cellSpacing=0 cellPadding=0 align=center border=0 class=corr> | |||
<tr> | |||
<td width=125> 05</td> | |||
<td width=5> </td> | |||
<td>char</td> | |||
<td width=5> </td> | |||
<td width=55%>fragment identifier (array of required capabilities)</td> | |||
</tr> | |||
<tr> | |||
<td width=125> 01</td> | |||
<td width=5> </td> | |||
<td>char</td> | |||
<td width=5> </td> | |||
<td width=55%>fragment version</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>Length of rest data</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#F9F9F9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0 class=corr> | |||
<tr> | |||
<td width=125> xx ...</td> | |||
<td width=5> </td> | |||
<td>array</td> | |||
<td width=5> </td> | |||
<td width=55%>byte array of required capabilities (1 - text)</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=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkred 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=610 cellSpacing=0 cellPadding=0 align=center border=0 class=corr> | |||
<tr> | |||
<td width=125> 01</td> | |||
<td width=5> </td> | |||
<td>char</td> | |||
<td width=5> </td> | |||
<td width=55%>fragment identifier (text message)</td> | |||
</tr> | |||
<tr> | |||
<td width=125> 01</td> | |||
<td width=5> </td> | |||
<td>char</td> | |||
<td width=5> </td> | |||
<td width=55%>fragment version</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>Length of rest data</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#F9F9F9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0 class=corr> | |||
<tr> | |||
<td width=125> 00 00</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>Message charset number</td> | |||
</tr> | |||
<tr> | |||
<td> ff ff</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td class=corr>Message language number</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string (ascii)</td> | |||
<td> </td> | |||
<td>Message text string</td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
<br>Example SNAC dump 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"> | |||
No example | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
=== Channel 2 Example === | |||
==== From Aleksandr Shutko: SNAC(04,0B)/CH2 ICBM__CLIENT_ERR/CH2 ==== | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br>Client send this snac as reply to [[Protocols/OSCAR/SNAC/ICBM_CHANNEL_MSG_TO_CLIENT#Channel_2_Example|SNAC(04,07)/CH2]]. | |||
See also common description for [[Protocols/OSCAR/SNAC_04_0b|SNAC(04,0B)]]. | |||
<br><br> | |||
<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 > | |||
<table width=640 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 0B</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=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> xx xx xx xx<br> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td valign=top>qword</td> | |||
<td width=5> </td> | |||
<td width=55% valign=top>msg-id cookie</td> | |||
</tr> | |||
<tr> | |||
<td colspan=5> </td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>message channel</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>screenname string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>screenname string</td> | |||
</tr> | |||
<tr valign=top> | |||
<td> 00 03</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>reason code (2 - busted payload, 3 - channel specific)</td> | |||
</tr> | |||
<tr><td colspan=5 height=15></td></tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#c9c9e9> Following contents is specific for capability, | |||
which was used in message with the same msg-id cookie</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td bgcolor=#e9e9e9> | |||
<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=610 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> | |||
<tr><td bgcolor=#c9c9e9 style="font-size: 13px;"> | |||
Data format description for capability <b><font face="Courier New"> | |||
{09461349-4C7F-11D1-8222-444553540000}</font></b> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word (LE)</td> | |||
<td> </td> | |||
<td>length of following data</td> | |||
</tr> | |||
<tr> | |||
<td width=147> xx xx</td> | |||
<td width=5> </td> | |||
<td>word (LE)</td> | |||
<td width=5> </td> | |||
<td width=55%>protocol version</td> | |||
</tr> | |||
<tr> | |||
<td> xx .. xx</td> | |||
<td> </td> | |||
<td>guid (LE)</td> | |||
<td> </td> | |||
<td>[[Protocols/OSCAR/UUIDs#ICQ_Message_Extensions|plugin]] or zero bytes</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>unknown</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword (LE)</td> | |||
<td> </td> | |||
<td>client capabilities flags</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>unknown</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word (LE)</td> | |||
<td> </td> | |||
<td>seems to be a downcounter</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=147> xx xx</td> | |||
<td width=5> </td> | |||
<td>word (LE)</td> | |||
<td width=5> </td> | |||
<td width=55%>length of following data</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word (LE)</td> | |||
<td> </td> | |||
<td>seems to be a downcounter as in first chunk above</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td></td> | |||
<td> </td> | |||
<td>unknown, usually zeros</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=620 cellSpacing=0 cellPadding=2 align=center border=0> | |||
<tr> | |||
<td>if plugin field in first chunk above is zero, here is | |||
[[Protocols/OSCAR/Messages#Message|message]], overwise here is | |||
plugin-specific data. | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
<br>Example SNAC dump 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 54 28 00 6E 00 04 00 0B 00 00 00 00 00 0B *.T(.n.......... | |||
F3 3A C1 0C 70 18 00 00 00 02 07 36 32 31 38 38 .:..p......62188 | |||
39 35 00 03 1B 00 07 00 00 00 00 00 00 00 00 00 95.............. | |||
00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 07 ................ | |||
00 0E 00 07 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |||
00 E9 03 00 00 00 00 1B 00 55 73 65 72 20 69 73 .........User is | |||
20 63 75 72 72 65 6E 74 6C 79 20 4F 63 63 75 70 currently Occup | |||
69 65 64 00 ied. | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
== ICBM SNACs == | |||
{{Protocols/OSCAR/Foodgroups/ICBM/SNACs/Simple}} | {{Protocols/OSCAR/Foodgroups/ICBM/SNACs/Simple}} | ||
[[Category:With_Contrib]] | |||
[[Category:Stub]] | [[Category:Stub]] | ||
[[Category:AOL]] | [[Category:AOL]] |
Latest revision as of 11:43, 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, 0x000B | Any | ICBM__CLIENT_ERR | Unspecified | BOS | Active | 1.25 |
This error notice is one of the few SNACs that can be sent to the host and received by a client.
The SNAC can come from either origin source, this is because the message is basically forwarded from the source client, to the server, to the destination client.
This SNAC may only be sent as a programmatic response to an inter-client message. It is used to indicate that there was some problem with the original message received by the sender. If this SNAC is not immediately generated as a response, the client loses the right to send it at all and attempts to send it will be rejected by the server.
As transmitted, "cookie", "channel", and "username" are to be those which were presented in the inter-client message being rejected. As received, "username" has been changed to indicate the source of the error. It is not allowed to respond to a CLIENT_ERR SNAC with another CLIENT_ERR SNAC. Receiving a CLIENT_ERR SNAC does not grant the right to EVIL.
SNAC Header
Foodgroup | uint16 (word) | 00 04 |
Subgroup | uint16 (word) | 00 0B |
Flags | uint16 (word) | 00 00 |
Request ID | uint32 (dword) | 00 00 00 00 |
SNAC Data
Name | Type | Notes |
---|---|---|
cookie | ICBM Cookie | Opaque data generated by conversation initiator and used to link up the conversation and errors |
channel | uint16 (word) | [Class: ICBM__CHANNELS] Channel the message is on |
username | string08 | Destination username when sending and the source username when received |
code | uint16 (word) | [Class: ICBM__CLIENT_ERR] Error code |
errorInfo | blob | Optional error info |
Class: ICBM__CLIENT_ERRORS
The following are Inter-Client error codes.
Name | Value | Notes |
---|---|---|
ICBM__CLIENT_ERR_UNSUPPORTED_CHANNEL | 0x01 | Receiving client does not understand the channel |
ICBM__CLIENT_ERR_BUSTED_ICBM_PAYLOAD | 0x02 | Receiving client thinks the payload is busted |
ICBM__CLIENT_ERR_CHANNEL_SPECIFIC_ERROR | 0x03 | See ICBM__RENDEZVOUS_NAK which will be inside the errorInfo for values for ICBM__CHANNEL_RENDEZVOUS |
From Aleksandr Shutko: SNAC(04,0B) client message error or data SNAC(04,0B) ICBM__CLIENT_ERR
First dword in msg-id cookies is actually the computer uptime in milliseconds
(ie GetTickCount(), at least this is what the ICQ Lite and the other official
clients I have tested uses).
|
|
Example SNAC dump with flap header:
|
Examples
Channel 1 Example
From Aleksandr Shutko: SNAC(04,0B)/CH1 ICBM__CLIENT_ERR/CH1
|
Example SNAC dump with flap header:
|
Channel 2 Example
From Aleksandr Shutko: SNAC(04,0B)/CH2 ICBM__CLIENT_ERR/CH2
|
Example SNAC dump with flap header:
|
ICBM SNACs
|