# Table of contents:
# Introduction
CVQ
is a command introduced with
CVR0.
It is a Dispatch Server command, without either a request or response payload.
Sends the current client information and retrieves the latest avaliable version of the client when there are no other avaliable protocols. For the version of this command that is sent in the main protocols, read CVR.
# Client/Request
CVQ TrID locale system-type system-ver system-arch requesting-library client-version client-identification {user-handle}
Where
locale
is a 16-bit hexadecimally encoded LCID.
0x0409
is the LCID for English, United States.
Where
system-type
is a string that defines the operating system you are using, such as
winnt
.
Where
system-ver
is the major and minor version of the operating system, such as
5.1
.
Where
system-arch
is the architecture of the processor that is used to run the client, usually
i386
.
Where
requesting-library
is the name of the library that requested this CVR, usually
MSMSGS
or
MSNMSGR
.
Where
client-version
is the current client's major, minor and patch version, should be in the format of "{M}M.m.pppp".
Where
client-identification
is the internal name of the codebase used to create
requesting-library
, usually
MSMSGS
, or an empty parameter.
Added since
MSNP4, but is empty until
MSNP8.
Where
user-handle
is the user's handle. Added since
MSNP8.
# Server/Response
CVQ TrID recommended-version recommended-version-2 minimum-allowed-version download-url fallback-url
Where
recommended-version
is the current version of the client for this system.
Where
recommended-version-2
is (usually) the same as
recommended-version
,
Could possibly be a maximum allowed version? (forced downgrade)
Where
minimum-allowed-version
is the lowest version the server considers "safe" to connect with.
If the client's
client-version
is lower than the server's
minimum-allowed-version
,
the client should automatically disconnect from the server,
and request an forced upgrade using the binary provided in download-url
.
Where
download-url
is the file to download and open to update this client to
recommended-version
.
Where
fallback-url
is the URL the client opens if it failed to download
download-url
for any reason.
# Examples
NOTE: This has been line-breaked.
Lines beginning with
..
followed by a space are continuations of the previous line.
# Old
Only used in the CVR0 implementation of MSNP2 to MSNP7.
C: CVQ 1 0x0409 win 4.10 i386 MSMSGS 1.0.0863 MSMSGS
S: CVQ 1 5.0.0537 5.0.0537 1.0.0863
.. http://download.microsoft.com/download/msnmessenger/install/5.0/w98nt42kmexp/en-us/setupdl.exe
.. http://messenger.microsoft.com
Client disconnects from server, since it sees that
minimum-allowed
is above it's
client-version
.
# New
C: CVQ 2 0x0409 winnt 5.1 i386 MSNMSGR 6.0.0602 MSMSGS example@hotmail.com
S: CVQ 2 7.0.0813 7.0.0813 6.2.0205
.. http://msgr.dlservice.microsoft.com/download/5/d/9/5d9bb5b2-49c7-4890-94ab-d1d5e44a0e6d/Install_MSN_Messenger.exe
.. http://messenger.msn.com
Client disconnects from server, since it sees that
minimum-allowed
is above it's
client-version
.
# Invalid client identification or version
This response may or may not disconnect you.
C: CVQ 3 0x0409 winnt 5.0 i386 MSNMSGR 99.9.9999 MSMSGS
S: 420 3
C: CVQ 4 0x0409 winnt 5.0 i386 YCOMM 0.1.0023 MSMSGS
S: 420 4
# Invalid language ID
C: CVQ 5 0x1111 winnt 5.1 MSNMSGR 6.0.0602 MSMSGS example@hotmail.com
S: 710 5
# Invalid CVR
C: CVQ 6 spaghetti
S: 731 6
Server disconnects client.
# Known changes
- MSNP2: Added a fallback URL parameter to the response (parameter 5). In CVR0 Only: Changed CVR to CVQ carrying the previous change.
- MSNP4: Added a client codebase identification parameter (parameter 7). Always empty.
- MSNP8: Fixed client codebase identification parameter (parameter 7), is now filled correctly and added a current user parameter (parameter 8).
- Removed in MSNP24.