+/* Sets the new connection stream into use and creates packet stream */
+
+SILC_FSM_STATE(silc_client_st_connect_set_stream)
+{
+ SilcClientConnection conn = fsm_context;
+ SilcClient client = conn->client;
+
+ /* Create packet stream */
+ conn->stream = silc_packet_stream_create(client->internal->packet_engine,
+ conn->internal->schedule,
+ (SilcStream)conn->stream);
+ if (!conn->stream) {
+ /** Cannot create packet stream */
+ SILC_LOG_DEBUG(("Could not create packet stream"));
+ conn->callback(client, conn, SILC_CLIENT_CONN_ERROR, 0, NULL,
+ conn->context);
+ silc_fsm_next(fsm, silc_client_st_connect_error);
+ return SILC_FSM_CONTINUE;
+ }
+
+ silc_packet_set_context(conn->stream, conn);
+
+ /** Start key exchange */
+ silc_fsm_next(fsm, silc_client_st_connect_key_exchange);
+ return SILC_FSM_CONTINUE;
+}
+