Added silc_schedule_[set|get]_global. Added many APIs to call
[crypto.git] / lib / silcutil / silcsocketstream.c
index 5e3357433f3b7120114ca103d1f13c891bf6f073..e11fff73a5a5b29fdd1922b6d1b2b60476fedc97 100644 (file)
@@ -152,10 +152,20 @@ silc_socket_tcp_stream_create(SilcSocket sock, SilcBool lookup,
   SilcSocketStream stream;
   SilcSocketHostLookup l;
 
-  if (!sock || !schedule) {
-    SILC_LOG_ERROR(("Missing arguments to silc_socket_tcp_stream_create"));
+  if (!schedule) {
+    schedule = silc_schedule_get_global();
+    if (!schedule) {
+      silc_set_errno(SILC_ERR_INVALID_ARGUMENT);
+      if (callback)
+       callback(silc_errno, NULL, context);
+      return NULL;
+    }
+  }
+
+  if (!sock) {
+    silc_set_errno(SILC_ERR_INVALID_ARGUMENT);
     if (callback)
-      callback(SILC_ERR_INVALID_ARGUMENT, NULL, context);
+      callback(silc_errno, NULL, context);
     return NULL;
   }
 
@@ -219,6 +229,14 @@ SilcStream silc_socket_udp_stream_create(SilcSocket sock, SilcBool ipv6,
 {
   SilcSocketStream stream;
 
+  if (!schedule) {
+    schedule = silc_schedule_get_global();
+    if (!schedule) {
+      silc_set_errno(SILC_ERR_INVALID_ARGUMENT);
+      return NULL;
+    }
+  }
+
   stream = silc_calloc(1, sizeof(*stream));
   if (!stream)
     return NULL;