[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [MirageOS-devel] More troubles with tcp on ARM
My attempts to get tcp working in a VM on ARM continue. Now I've dropped cohttp and moved down to straight tcp/udp instead. The following is the code of a simple server: ~~~ open V1_LWT open Lwt open Printf module Main (C:CONSOLE) (S:STACKV4) = struct module T = S.TCPV4 let rec tcp_echo console flow = T.read flow >>= function | `Eof -> T.close flow | `Error _ -> T.close flow | `Ok b -> C.log_s console (sprintf " %d - %s" (Cstruct.len b) (Cstruct.to_string b)) >>= fun () -> T.write flow b >>= function | `Eof -> T.close flow | `Error _ -> T.close flow | `Ok () -> tcp_echo console flow let start console stack = S.listen_udpv4 stack 18081 ( fun ~src ~dst ~src_port b -> C.log_s console (sprintf "udp: %s:%d" (Ipaddr.V4.to_string src) src_port) >>= fun () -> C.log_s console (sprintf " udp: %d - %s" (Cstruct.len b) (Cstruct.to_string b)) ); S.listen_tcpv4 stack 18080 ( fun flow -> let dst, dst_port = T.get_dest flow in C.log_s console (sprintf "tcp: %s:%d" (Ipaddr.V4.to_string dst) dst_port) >>= fun () -> tcp_echo console flow ); S.listen stack end ~~~ It works fine in Unix mode, both on x86 and on my cubietruck board. When built in Xen mode though it doesn't work as well. When run in Unix mode I see the expected behaviour: shell my server console ----- ----------------- % echo hello | ncat -4 -u localhost 18081 -> udp: 127.0.0.1:46507 udp: 6 - hello % echo hello | ncat -4 localhost 18080 -> tcp: 127.0.0.1:59888 hello 6 - hello % echo foobar | ncat -4 localhost 18080 -> tcp: 127.0.0.1:59888 foobar 6 - foobar When running the server in a VM on ARM I see the same behaviour for UDP, but for TCP it changes. shell my server console ----- ----------------- % echo hello | ncat -4 -u localhost 18081 -> udp: 127.0.0.1:46507 udp: 6 - hello % echo hello | ncat -4 localhost 18080 -> tcp: 127.0.0.1:59888 6 - 6 - Yupp, the string is printed twice, it has a length, but it's missing actual data! Any pointers as to where to start looking would be much appreciated, as well as confirmation that this really is an issue and not just a user error ;) /M -- Magnus Therning OpenPGP: 0xAB4DFBA4 email: magnus@xxxxxxxxxxxx jabber: magnus@xxxxxxxxxxxx twitter: magthe http://therning.org/magnus For a successful technology, reality must take precedence over public relations, for nature cannot be fooled. -- R.P. Feynman Attachment:
pgpL9Ky1RUUnx.pgp _______________________________________________ MirageOS-devel mailing list MirageOS-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |