updates.
authorPekka Riikonen <priikone@silcnet.org>
Tue, 23 Jan 2007 14:47:25 +0000 (14:47 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 23 Jan 2007 14:47:25 +0000 (14:47 +0000)
CHANGES
TODO
doc/draft-riikonen-silc-multimedia-session-00.nroff
includes/Makefile.ad
lib/configure.ad
lib/doc/LIBINDEX
lib/doc/platforms.html
lib/silcutil/tests/test_silcasync.c
lib/silcutil/tests/test_silcfdstream.c
lib/silcutil/tests/test_silcfsm.c
lib/silcutil/tests/test_silcnet.c

diff --git a/CHANGES b/CHANGES
index e46811d786893243c6eee5cbc739cc90082fbe6d..ef32bfc29fc25499645117182e2da50938855c7b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,30 @@
+Tue Jan 23 16:05:27 EET 2007  Pekka Riikonen <priikone@silcnet.org>
+
+       * The silc_schedule_set_listen_fd now returns boolean value.
+         Fixed FD task adding to check correctly for already added
+         FD tasks.  Added stricter error checking for FD scheduling
+         with epoll().  Affected files are lib/silcutil/silcschedule.[ch]
+         and lib/silcutil/unix/silcunixschedule.c.
+
+       * The silc_stream_set_notifier now returns boolean value.  Changed
+         all streams to support and check for the error condition.
+         Affected files are in lib/silcutil/.
+
+       * Fixed SKE library session aborting and deletion.  Affected
+         file are lib/silcske/silcske.c.
+
+Tue Jan 16 18:22:08 EET 2007  Pekka Riikonen <priikone@silcnet.org>
+
+       * Implemented PKCS #1 with appendix with hash OID in the
+         signature.  Affected files are lib/silccrypt/silcpkcs1.[ch],
+         lib/silccrypt/silchash.[ch] and 
+         lib/silcasn1/silcasn1[_encode|decode].[ch].
+
+Sun Jan 14 23:12:41 EET 2007  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added support for Version (V) SILC public key identifier.
+         Affected files are lib/silccrypt/silcpk.[ch].
+
 Tue Jan  9 19:37:51 EET 2007  Pekka Riikonen <priikone@silcnet.org>
 
        * Rewrote connection auth request in client library.  It is now
diff --git a/TODO b/TODO
index 9c7561bcba6151b798ee396fbf52474d175bd1a2..1d77eafbfbfee7028905701b1eeed73c7ab74b2a 100644 (file)
--- a/TODO
+++ b/TODO
@@ -85,6 +85,8 @@ lib/silcsftp                  ****DONE****
 lib/silccore/silcpacket.[ch]   ****PARTLY DONE****
 ============================
 
+ o Implement silc_packet_engine_stop and silc_packet_stream_destroy.
+
  o Implement ACK packet and packet payload.
 
  o SilcPacketEngine. (***DONE)
@@ -138,9 +140,9 @@ lib/silccrypt                       ****PARTLY DONE****
 =============
 
  o Implement SILC Public Key Version 2 handling in sign/verify.  Implement
-   Version (V) identifier.
+   Version (V) identifier (***DONE)
 
- o Implement PKCS #1 sign/verify with hash OID.
+ o Implement PKCS #1 sign/verify with hash OID. (***TESTING NEEDED)
 
  o Implement the defined SilcDH API.  The definition is in
    lib/silccrypt/silcdh.h.
index 97f4ad1df2b5c85708749349970ddd2463bdea9a..9e21409ed1555bf32312d51988b45b516f96e918 100644 (file)
@@ -169,8 +169,8 @@ The Origin (o=) field describes from where the session originates.  The
 The Connection Data (c=) field describes the connection information for
 the multimedia session.  When performing peer-to-peer multimedia session
 the <network type> is 'IN', indicating Internet connection.  When
-performing multimedia session inside SILC network it is 'SILC'.  When the
-'SILC' network type is used the <address type> and <connection address>
+performing multimedia session inside SILC network it is 'SILC'.  When
+the 'SILC' network type is used the <address type> and <connection address>
 sub-fields are omitted.  Examples:
 
        c=SILC
@@ -179,8 +179,8 @@ sub-fields are omitted.  Examples:
 
 The Media Announcements (m=) field describes the media information for the
 multimedia session.  If the network type in c= field is 'SILC' the <port>
-sub-field MUST be set to 9 (discard).  The <transport> for RTP over UDP is
-'RTP/AVP', for RTP over TCP it is 'TCP/RTP/AVP', and for non-RTP protocol
+sub-field MUST be set to 9 (discard).  The <transport> for RTP over UDP
+is 'RTP/AVP', for RTP over TCP it is 'TCP/RTP/AVP', and for non-RTP protocol
 over UDP it is 'udp' and over TCP it is 'tcp'.  The <fmt> sub-field
 includes the RTP media payload number when using RTP.  When using non-RTP
 protocol it includes MIME subtype.  Examples:
@@ -209,8 +209,8 @@ attribute is omitted the session type is expected to be "direct".  The
 following parameters are defined for attribute "silc".
 
        channel         The name of the channel for group conferencing.
-                       Can be used only with "group" session type.
-                       More than one channel parameters may be defined.
+                        Can be used only with "group" session type.
+                        More than one channel parameters may be defined.
 
 
 The [RFC4145] specifies a "setup" attribute that defines which party of the
index 4a016351a1c8d637906159ab9e8d214d28c6008f..0a26283ce9b8234714093795a44f14ad44b62a98 100644 (file)
@@ -21,7 +21,7 @@ AUTOMAKE_OPTIONS = 1.0 no-dependencies foreign
 include_HEADERS = \
        silc.h \
        silcwin32.h \
-       silcepoc.h \
+       silcsymbian.h \
        silcbeos.h \
        silcos2.h \
        silcversion.h
@@ -30,7 +30,7 @@ include_HEADERS = \
 EXTRA_DIST = \
        silc.h \
        silcwin32.h \
-       silcepoc.h \
+       silcsymbian.h \
        silcbeos.h \
        silcos2.h \
        silcversion.h.in \
index 5f13377fbedd59f9d5562a91b62617bd6256efbd..a3a7eea93edffabeb59b4091ff81fe70fbe2b028 100644 (file)
@@ -207,8 +207,6 @@ lib/silcske/Makefile
 lib/silcutil/Makefile
 lib/silcutil/unix/Makefile
 lib/silcutil/win32/Makefile
-lib/silcutil/beos/Makefile
-lib/silcutil/os2/Makefile
 lib/silcapputil/Makefile
 #ifdef SILC_DIST_SFTP
 lib/silcsftp/Makefile
index b12935e15116bd1f94dcde7c1eef655e183db990..ece0a0a7152a7fd2e1f856b699dcf548c02dcc23 100644 (file)
@@ -7,7 +7,7 @@
 <br />
 <small>
 Version: @VERSION@<br />
-Copyright &copy; 1997 - 2005 The SILC Project<br />
+Copyright &copy; 1997 - 2007 The SILC Project<br />
 Updated: @DATE@
 </small>
 <br /><br /><br />
@@ -45,7 +45,7 @@ of the Toolkit always delivers the latest version of this reference manual.
 <br /><br />
 <b>Resource Links</b>
 <br /><br />
-Please refer to these outside links for more information about the SILC 
+Please refer to these outside links for more information about the SILC
 project and SILC Protocol.
 
 <br /><br />
index fa873d93dc19d88c787ba5d57ad2f699fc4e5a84..7fd26cd79d1f4cec7439be001c058b9b2468367e 100644 (file)
@@ -11,12 +11,13 @@ differences between platforms.
 <li><a href="#unix">Unix & Linux Implementation</a><br />
 <li><a href="#windows">Windows Implementation</a><br />
 <li><a href="#macosx">Mac OS X Implementation</a>
+<li><a href="#symbian">Symbian Implementation</a>
 
 <br />&nbsp;<br />&nbsp;<br />
 <b>Supported Platforms</b>
 
 <br />&nbsp;<br />
-SILC Toolkit supports by default all Unix and Linux platforms, Windows 
+SILC Toolkit supports by default all Unix and Linux platforms, Windows
 platforms from Windows 98 and newer, and Mac OS X.  In the future there is
 also plans to add support for other platforms such as Symbian OS (EPOC).
 
@@ -58,3 +59,25 @@ All features and components delivered with the SILC Toolkit work on Mac
 OS X platform.  There are no special Mac OS X platform related
 implementation issues with current version of SILC Toolkit.
 
+
+<br />&nbsp;<br />&nbsp;<br />
+<b><a name="symbian"></a>Symbian Implementation</b>
+
+<br />&nbsp;<br />
+Symbian support in SILC Toolkit is still experimental.  By default all
+feature and components delivered with SILC Toolkit are supported on
+Symbian.  However, there are some certain issues with the Symbian version
+of the SILC Toolkit
+
+<br />&nbsp;<br />
+<li>The function <tt>silc_schedule</tt> on Symbian will return immediately,
+instead of blocking the calling thread/process as on other platforms.  On
+symbian the function is equivalent to <tt>silc_schedule_one</tt>, and that
+function should be used instead.  The design of SilcSchedule on Symbian
+enables efficient data I/O even when <tt>silc_schedule_one</tt> is called
+from a timer task.  The data I/O is scheduled separately by the Symbian
+Active Scheduler and the SilcSchedule will merely schedule timeouts.
+
+<li>The function <tt>silc_client_run</tt> on Symbian will return immediately.
+On symbian the <tt>silc_client_run_one<tt> should be used instead.  It can
+used from a timer or from an idle task.
index 96210e08df50431c2286fb000f8070e5b5163841..ca68c7d01f6703a272f1742f68f264e9762d19d1 100644 (file)
@@ -94,7 +94,7 @@ SILC_FSM_STATE(test_st_second)
 
   /** Finish */
   silc_fsm_next_later(fsm, test_st_finish, 2, 0);
-  SILC_FSM_WAIT;
+  return SILC_FSM_WAIT;
 }
 
 SILC_FSM_STATE(test_st_finish)
@@ -102,7 +102,7 @@ SILC_FSM_STATE(test_st_finish)
   SILC_LOG_DEBUG(("test_st_finish"));
 
   SILC_LOG_DEBUG(("Finish machine"));
-  SILC_FSM_FINISH;
+  return SILC_FSM_FINISH;
 }
 
 static void destructor(SilcFSM fsm, void *fsm_context,
index c0039b1ce5f73d72deef4b6035e42bc5751f06b4..e4d53a59e7316d327107c6c8a8875ded929b7f14 100644 (file)
@@ -32,7 +32,7 @@ SILC_FSM_STATE(st_end)
 {
   unlink("/tmp/test_silcfdstream");
   unlink("/tmp/test_silcfdstream_copy");
-  SILC_FSM_FINISH;
+  return SILC_FSM_FINISH;
 }
 
 SILC_FSM_STATE(st_readwrite)
@@ -83,7 +83,7 @@ SILC_FSM_STATE(st_readwrite)
       if (i == -1) {
         SILC_LOG_DEBUG(("Would block, write later"));
         silc_fsm_next(fsm, st_end);
-        SILC_FSM_WAIT;
+        return SILC_FSM_WAIT;
       }
 
       if (i == -2) {
@@ -99,7 +99,7 @@ SILC_FSM_STATE(st_readwrite)
   if (ret == -1) {
     SILC_LOG_DEBUG(("Would block, read later"));
     silc_fsm_next(fsm, st_end);
-    SILC_FSM_WAIT;
+    return SILC_FSM_WAIT;
   }
 
   if (ret == -2) {
@@ -117,11 +117,11 @@ SILC_FSM_STATE(st_readwrite)
   }
 
   silc_fsm_next(fsm, st_end);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 
  err:
   silc_fsm_next(fsm, st_end);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(st_write)
@@ -159,7 +159,7 @@ SILC_FSM_STATE(st_write)
     if (ret == -1) {
       SILC_LOG_DEBUG(("Would block, write later"));
       silc_fsm_next(fsm, st_readwrite);
-      SILC_FSM_WAIT;
+      return SILC_FSM_WAIT;
     }
 
     if (ret == -2) {
@@ -179,11 +179,11 @@ SILC_FSM_STATE(st_write)
 
   SILC_LOG_DEBUG(("Continue to next state"));
   silc_fsm_next(fsm, st_readwrite);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 
  err:
   silc_fsm_next(fsm, st_end);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 static void fsm_dest(SilcFSM fsm, void *fsm_context, void *context)
index 5432d418c9fc5e6179060515668c0a0083a99ec3..b0464393ac85551749286dfa9c8a6e1b92c22007 100644 (file)
@@ -75,7 +75,7 @@ SILC_FSM_STATE(test_st_start)
   /** Move to second state */
   SILC_LOG_DEBUG(("Move to next state"));
   silc_fsm_next(fsm, test_st_second);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(test_st_second)
@@ -85,7 +85,7 @@ SILC_FSM_STATE(test_st_second)
   /** Move to second timeout state, timeout */
   SILC_LOG_DEBUG(("Move to next state with 2 second timeout"));
   silc_fsm_next_later(fsm, test_st_second_timeout, 2, 0);
-  SILC_FSM_WAIT;
+  return SILC_FSM_WAIT;
 }
 
 SILC_TASK_CALLBACK(test_second_timeout)
@@ -111,7 +111,7 @@ SILC_FSM_STATE(test_st_second_timeout)
   silc_fsm_next_later(fsm, test_st_third, 3, 0);
   silc_schedule_task_add_timeout(silc_fsm_get_schedule(fsm),
                                 test_second_timeout, f, 2, 500000);
-  SILC_FSM_WAIT;
+  return SILC_FSM_WAIT;
 }
 
 static void async_call_cb(void *context)
@@ -167,7 +167,7 @@ SILC_FSM_STATE(test_thread_st_start)
   /** Move to final state, timeout */
   SILC_LOG_DEBUG(("Move to final state with %d second timeout", f->timeout));
   silc_fsm_next_later(fsm, test_thread_st_finish, f->timeout, 0);
-  SILC_FSM_WAIT;
+  return SILC_FSM_WAIT;
 }
 
 SILC_FSM_STATE(test_thread_st_finish)
@@ -175,7 +175,7 @@ SILC_FSM_STATE(test_thread_st_finish)
   SILC_LOG_DEBUG(("test_thread_st_finish"));
 
   SILC_LOG_DEBUG(("Finishing the thread"));
-  SILC_FSM_FINISH;
+  return SILC_FSM_FINISH;
 }
 
 SILC_FSM_STATE(test_st_fifth)
@@ -199,7 +199,7 @@ SILC_FSM_STATE(test_st_fifth)
   SILC_LOG_DEBUG(("Waiting for thread to terminate for 5 seconds"));
   silc_fsm_next(fsm, test_st_sixth);
   SILC_FSM_EVENT_TIMEDWAIT(&f->sema, 5, 0, NULL);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(test_thread2_st_start)
@@ -211,7 +211,7 @@ SILC_FSM_STATE(test_thread2_st_start)
   /** Move to final state, timeout */
   SILC_LOG_DEBUG(("Move to final state with %d second timeout", f->timeout));
   silc_fsm_next_later(fsm, test_thread2_st_finish, f->timeout, 0);
-  SILC_FSM_WAIT;
+  return SILC_FSM_WAIT;
 }
 
 SILC_FSM_STATE(test_thread2_st_finish)
@@ -223,7 +223,7 @@ SILC_FSM_STATE(test_thread2_st_finish)
   SILC_FSM_EVENT_SIGNAL(&f->sema);
 
   SILC_LOG_DEBUG(("Finishing the thread"));
-  SILC_FSM_FINISH;
+  return SILC_FSM_FINISH;
 }
 
 SILC_FSM_STATE(test_st_sixth)
@@ -235,7 +235,7 @@ SILC_FSM_STATE(test_st_sixth)
   /** Move to next state, timeout */
   SILC_LOG_DEBUG(("Continue to next state with 4 second timeout"));
   silc_fsm_next_later(fsm, test_st_seventh, 4, 0);
-  SILC_FSM_WAIT;
+  return SILC_FSM_WAIT;
 }
 
 SILC_FSM_STATE(test_thread3_st_start)
@@ -244,14 +244,14 @@ SILC_FSM_STATE(test_thread3_st_start)
 
   if (t->rounds == 0) {
     SILC_FSM_EVENT_SIGNAL(&t->sema);
-    SILC_FSM_FINISH;
+    return SILC_FSM_FINISH;
   }
 
   t->rounds--;
 
   /** Call in recursive */
   silc_fsm_next(fsm, test_thread3_st_start);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(test_st_seventh)
@@ -274,7 +274,7 @@ SILC_FSM_STATE(test_st_seventh)
 
   /** Move to wait threads */
   silc_fsm_next(fsm, test_st_eighth);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(test_st_eighth)
@@ -293,7 +293,7 @@ SILC_FSM_STATE(test_st_eighth)
 
   /** Move to next thread */
   silc_fsm_next(fsm, test_st_ninth);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(test_thread4_st_start)
@@ -302,14 +302,14 @@ SILC_FSM_STATE(test_thread4_st_start)
 
   if (t->rounds == 0) {
     SILC_FSM_EVENT_SIGNAL(&t->sema);
-    SILC_FSM_FINISH;
+    return SILC_FSM_FINISH;
   }
 
   t->rounds--;
 
   /** Call in recursive */
   silc_fsm_next(fsm, test_thread4_st_start);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(test_st_ninth)
@@ -334,7 +334,7 @@ SILC_FSM_STATE(test_st_ninth)
 
   /** Move to wait threads */
   silc_fsm_next(fsm, test_st_tenth);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(test_st_tenth)
@@ -352,7 +352,7 @@ SILC_FSM_STATE(test_st_tenth)
 
   /** Finished successfully */
   silc_fsm_next_later(fsm, test_st_finish, 2, 0);
-  SILC_FSM_WAIT;
+  return SILC_FSM_WAIT;
 }
 
 SILC_FSM_STATE(test_st_finish)
@@ -360,7 +360,7 @@ SILC_FSM_STATE(test_st_finish)
   SILC_LOG_DEBUG(("test_st_finish"));
 
   SILC_LOG_DEBUG(("Finish machine"));
-  SILC_FSM_FINISH;
+  return SILC_FSM_FINISH;
 }
 
 static void destructor(SilcFSM fsm, void *fsm_context,
index 246d56bf3b7a04ce9cd5d35963a1e76e9bef52e8..2931bd7475ea13d51c59078602dfea91a33f89ec 100644 (file)
@@ -66,13 +66,13 @@ SILC_FSM_STATE(test_st_connected)
 
   if (f->server_status != SILC_NET_OK) {
     SILC_LOG_DEBUG(("Creating connection failed"));
-    SILC_FSM_FINISH;
+    return SILC_FSM_FINISH;
   }
 
   silc_socket_stream_get_info(f->server_stream, NULL, &host, &ip, &port);
   SILC_LOG_DEBUG(("Connected to server %s, %s:%d", host, ip, port));
 
-  SILC_FSM_FINISH;
+  return SILC_FSM_FINISH;
 }
 
 SILC_FSM_STATE(test_st_start)
@@ -89,7 +89,7 @@ SILC_FSM_STATE(test_st_start)
     /** Creating network listener failed */
     SILC_LOG_DEBUG(("Listener creation failed"));
     silc_fsm_next(fsm, test_st_finish);
-    SILC_FSM_CONTINUE;
+    return SILC_FSM_CONTINUE;
   }
 
   /* Create thread to connect to the listener */
@@ -100,7 +100,7 @@ SILC_FSM_STATE(test_st_start)
   SILC_LOG_DEBUG(("Start waiting for incoming connections"));
   silc_fsm_event_init(&f->sema, fsm);
   silc_fsm_next(fsm, test_st_second);
-  SILC_FSM_CONTINUE;
+  return SILC_FSM_CONTINUE;
 }
 
 SILC_FSM_STATE(test_st_second)
@@ -117,7 +117,7 @@ SILC_FSM_STATE(test_st_second)
     /** Accepting new connection failed */
     SILC_LOG_DEBUG(("Accepting failed %d", f->client_status));
     silc_fsm_next(fsm, test_st_finish);
-    SILC_FSM_CONTINUE;
+    return SILC_FSM_CONTINUE;
   }
 
   silc_socket_stream_get_info(f->client_stream, NULL, &host, &ip, &port);
@@ -148,7 +148,7 @@ SILC_FSM_STATE(test_st_finish)
   silc_net_close_listener(f->server);
 
   SILC_LOG_DEBUG(("Finish machine"));
-  SILC_FSM_FINISH;
+  return SILC_FSM_FINISH;
 }
 
 static void destructor(SilcFSM fsm, void *fsm_context,