msnp-wiki/docs/commands/xfr.md
yellows111 ce7c3bee1c
0.2.0: The Winter Roll-up
i have basically touched every file help

* Moved all the error code stuff to one new sectional page, because the old way of doing it sucked big time.
* Rename passport (soap) to RST
* Formatting changes (many)
* Several corrections
* change git host because git.kevinthe.horse seems Dead
2024-12-18 20:16:29 +00:00

4.4 KiB

Introduction

XFR is a command introduced with MSNP2.

It is a Dispatch Server and Notification Server command, without either a request or response payload.

It tells the client what server to connect to for the request.

Client/Request

XFR TrID server-type

Where server-type is either SB (for a Switchboard Server), or NS (for a new Notification Server).

Server/Response

XFR TrID server-type address:port {...}

Where server-type is either SB (for Switchboard), or NS (for a Notification Server).

Where address:port is the server you have requested or being referred to is. If this is set to 0, proceed to ignore the server-type parameter and restart the login process on the current server from VER.

XFR NS

XFR TrID NS address:port {0|U} {current-server|D}

In MSNP3 and above until MSNP13, 0 is always set to 0.

In MSNP7 and above until MSNP13, current-server is the current server you are connected to.

In MSNP13 and higher, the 0 is replaced with a constant U, and the current-server is replaced with a constant D.

XFR SB

XFR TrID SB address:port authentication-method authentication-parameter {U} {domain} {direct-connect}

Where authentication-method is always CKI.

Where authentication-parameter is the "cookie" you need to log in to Switchboard.

Where U is always set to U. Since MSNP13.
No use documented.

Where domain is always set to messenger.msn.com. Since MSNP13.
No use documented.

Where direct-connect is set to one of these two values, Since MSNP14:

  • 0: This address:port can only be accessed only via the HTTP Gateway.
  • 1: This address:port can be connected to via TCP as well as the HTTP Gateway.

Examples

Before rework

Only in MSNP2 to MSNP12.

Client requests a new Switchboard session

C: XFR 1 SB
S: XFR 1 SB 10.0.1.200:1865 CKI 123456789.123456789.123456789

Client requests a new Notification server

Only used as-is in Beta 2 as the first command sent to a Dispatch Server.

C: XFR 2 NS
S: XFR 2 NS 10.0.0.5:1863

Client disconnects from server.

Client opens a connection to 10.0.0.5:1863.

Client referred from Dispatch Server

Very Old

Only in MSNP2.

C: USR 3 MD5 I example@hotmail.com
S: XFR 3 NS 10.0.0.5:1863

Client disconnects from server.

Client opens a connection to 10.0.0.5:1863.

Classic

Only in MSNP3 to MSNP6.

C: USR 4 MD5 I example@hotmail.com
S: XFR 4 NS 10.0.0.5:1863 0

Client disconnects from server.

Client opens a connection to 10.0.0.5:1863.

Modern

Only in MSNP7 to MSNP12.

C: USR 5 MD5 I example@hotmail.com
S: XFR 5 NS 10.0.0.5:1863 0 10.0.0.1:1863

Client disconnects from server.

Client opens a connection to 10.0.0.5:1863.

After rework

Since MSNP13.

Client requests a new Switchboard session

Without direct connect parameter

Only in MSNP13.

C: XFR 6 SB
S: XFR 6 SB 10.0.1.200:1865 CKI 123456789.123456789.123456789 U messenger.msn.com

With direct connect parameter

Since MSNP14.

C: XFR 7 SB
S: XFR 7 SB 10.0.1.200:1865 CKI 123456789.123456789.123456789 U messenger.msn.com 1

Client referred from Dispatch Server

C: USR 8 TWN I example@hotmail.com
S: XFR 8 NS 10.0.0.5:1863 U D

Forced soft reset

Applies for any protocol version.

S: XFR 0 NS 0
C: VER 6 MSNP7 MSNP6 MSNP5 MSNP4

Known changes

  • MSNP3: Added a new parameter that is always 0 to XFR NS.
  • MSNP7: Added a new parameter that is the current server you are communicating with to XFR NS.
  • MSNP13: Replaced 0 and the current server parameter with U and D respectively in XFR NS, and also added two parameters to XFR SB, one that is always U, and one that is a domain name, which is always messenger.msn.com.
  • MSNP14: Added a new parameter that is either 0 or 1 to XFR SB to denote whenever the client should directly connect to the address, or use the HTTP Gateway to connect instead.