Input-channel sessions and resynchronization

When you issue the open command for an input channel, the MSIF transfer service changes the state of the channel to Open, establishes a channel session, and initializes the channel window. SWIFT returns the first available sequence number. The MSIF transfer service uses that sequence number when sending the first InterAct primitive, and increments the sequence number for each subsequent InterAct primitive.

When you issue the close command for the input channel, its state changes to Closing. The MSIF transfer service accepts new SendMsg requests for the input channel, but it does not create or send corresponding InterAct primitives. Any transfers that were in progress when the close command was issued continue until the channel protocol is satisfied, that is, until an acknowledgment and an SnF input time (SnFInputTime) is received for each one, after which the state of the channel changes to Closed.

There are situations in which a channel can become blocked:
  • A transfer might encounter an unrecoverable error (for example, a protocol error), or a recoverable error that could not be resolved within the maximum allowed number of retries. When this happens, the MSIF transfer service changes the state of the channel to Locked, and immediately discontinues all transfers.
  • A transfer that uses an input channel might be canceled.
  • There might be pending transfers for which the accept status recorded by SWIFT and the transfer state recorded by the MSIF transfer service cannot be reconciled. When this happens and someone attempts to close the input channel, the channel enters the state Closing, but never reaches the state Closed.
When any of these things happens, to force SWIFT and the MSIF transfer service to resynchronize their windows, issue the open command with the -force parameter. SWIFT returns a list of all transfers that are members of the channel window, and the accept status of each. The MSIF transfer service compares that list to the state information that it recorded and takes whatever corrective action is necessary to complete the transfers.
Table 1 describes the actions taken by the MSIF transfer service actions during resynchronization.
Table 1. Resynchronization
SWIFT accept status Description MSIF transfer service actions during resynchronization
Accepted SWIFT received a message for this input sequence number, and sent an acknowledgment. If the MSIF transfer service did not receive an acknowledgment for this message, it asks SWIFT to resend the acknowledgment. If the MSIF transfer service does not recognize the input sequence number, it ignores the number.
ResolvedGap SWIFT did not receive a message for this input sequence number, but it received a request to skip this input sequence number. If the MSIF transfer service does not recognize the input sequence number, it ignores the number. Otherwise, it marks the input sequence number as skipped, and returns a response to the application indicating that the transfer attempt has failed.
UnresolvedGap SWIFT did not receive a message for this input sequence number, and it did not receive a request to skip this input sequence number. If the MSIF transfer service does not recognize the message, it asks SWIFT to skip this input sequence number. If the transfer encountered a recoverable error, the MSIF transfer service assumes that the error was resolved when the channel was reopened, and attempts to resend the message. If the transfer encountered an unrecoverable error, the MSIF transfer service asks SWIFT to skip this input sequence number, and sends a response to the application indicating that the transfer attempt has failed.
(other) SWIFT either did not receive a message for this input sequence number, or the input sequence number is not within the channel window. If the input sequence number is higher than the highest number reported by SWIFT, the message did not reach SWIFT. The MSIF transfer service resends the message using the same input sequence number. If the input sequence number is lower than the lowest number reported by SWIFT, the sequence number is no longer within the channel window and cannot be used. The MSIF transfer service adds a PDE indication to the message and resends it with a new sequence number.