Kyle Robbertze pushed to branch upstream at Debian OCaml Maintainers / ocaml-cry


Commits:
aac8a37f by Kyle Robbertze at 2024-04-06T09:29:27+01:00
New upstream version 1.0.3
- - - - -


5 changed files:

- CHANGES
- cry.opam
- dune-project
- src/cry.ml
- src/cry_stubs.c


Changes:

=====================================
CHANGES
=====================================
@@ -1,3 +1,9 @@
+1.0.3 (2024-03-18)
+=====
+* Raise a proper error when non-blocking connection
+  fails.
+* Fix poll segfault.
+
 1.0.2 (2024-01-08)
 ======
 * Use `poll` for select when available.


=====================================
cry.opam
=====================================
@@ -1,6 +1,6 @@
 # This file is generated by dune, edit dune-project instead
 opam-version: "2.0"
-version: "1.0.2"
+version: "1.0.3"
 synopsis: "OCaml client for the various icecast & shoutcast source protocols"
 description:
   "The cry library is an implementation of the various icecast & shoutcast 
protocols to connect to streaming servers such as icecast"


=====================================
dune-project
=====================================
@@ -1,5 +1,5 @@
 (lang dune 2.8)
-(version 1.0.2)
+(version 1.0.3)
 (name cry)
 (source (github savonet/ocaml-cry))
 (license GPL-2.0-only)


=====================================
src/cry.ml
=====================================
@@ -163,14 +163,15 @@ let connect_sockaddr ?bind_address ?timeout sockaddr =
      Printexc.raise_with_backtrace exn bt);
   let do_timeout = timeout <> None in
   let check_timeout () =
-    match timeout with
-      | Some timeout ->
-          (* Block in a select call for [timeout] seconds. *)
-          let _, w, _ = select [] [socket] [] timeout in
-          if w = [] then raise Timeout;
+    let timeout = Option.get timeout in
+    (* Block in a select call for [timeout] seconds. *)
+    let _, w, _ = select [] [socket] [] timeout in
+    if w = [] then raise Timeout;
+    match Unix.getsockopt_error socket with
+      | Some err -> raise (Unix.Unix_error (err, "connect", ""))
+      | None ->
           Unix.clear_nonblock socket;
           socket
-      | None -> assert false
   in
   let finish () =
     try


=====================================
src/cry_stubs.c
=====================================
@@ -109,7 +109,7 @@ CAMLprim value caml_cry_poll(value _read, value _write, 
value _err,
       nwrite++;
     }
     if (fds[n].revents & POLLERR) {
-      Store_field(_pread, nerr, Val_fd(fds[n].fd));
+      Store_field(_perr, nerr, Val_fd(fds[n].fd));
       nerr++;
     }
   }



View it on GitLab: 
https://salsa.debian.org/ocaml-team/ocaml-cry/-/commit/aac8a37f8fa7d5ccd084557ae751cd94393265b4

-- 
View it on GitLab: 
https://salsa.debian.org/ocaml-team/ocaml-cry/-/commit/aac8a37f8fa7d5ccd084557ae751cd94393265b4
You're receiving this email because of your account on salsa.debian.org.


Reply via email to