+ fd_stream->schedule = schedule;
+
+ /* Schedule the file descriptors */
+ if (schedule) {
+ if (fd_stream->fd2 > 0) {
+ silc_schedule_task_add_fd(schedule, fd_stream->fd2,
+ silc_fd_stream_io, stream);
+ silc_file_set_nonblock(fd_stream->fd2);
+ }
+ if (fd_stream->fd1 > 0) {
+ silc_schedule_task_add_fd(schedule, fd_stream->fd1,
+ silc_fd_stream_io, stream);
+ silc_schedule_set_listen_fd(schedule, fd_stream->fd1,
+ SILC_TASK_READ, FALSE);
+ silc_file_set_nonblock(fd_stream->fd1);;
+ if (fd_stream->fd2 < 1)
+ fd_stream->fd2 = fd_stream->fd1;
+ }
+ } else {
+ silc_schedule_unset_listen_fd(fd_stream->schedule, fd_stream->fd1);
+ silc_schedule_unset_listen_fd(fd_stream->schedule, fd_stream->fd2);
+ }
+}
+
+/* Return schedule */
+
+SilcSchedule silc_fd_stream_get_schedule(SilcStream stream)
+{
+ SilcFDStream fd_stream = stream;
+
+ if (!SILC_IS_FD_STREAM(fd_stream))
+ return NULL;
+
+ return fd_stream->schedule;