X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/347732736a7c51fb7ebcab24122de84882e9665f..76347f46fb70138ad34af07b2ab00625600931f1:/mac/otnet.c diff --git a/mac/otnet.c b/mac/otnet.c index 809906b3..61c7fa50 100644 --- a/mac/otnet.c +++ b/mac/otnet.c @@ -185,7 +185,7 @@ static int ot_tcp_write_oob(Socket s, char const *data, int len); static void ot_tcp_set_private_ptr(Socket s, void *ptr); static void *ot_tcp_get_private_ptr(Socket s); static void ot_tcp_set_frozen(Socket s, int is_frozen); -static char *ot_tcp_socket_error(Socket s); +static const char *ot_tcp_socket_error(Socket s); static void ot_recv(Actual_Socket s); void ot_poll(void); @@ -234,7 +234,7 @@ Socket ot_register(void *sock, Plug plug) } Socket ot_new(SockAddr addr, int port, int privport, int oobinline, - int nodelay, Plug plug) + int nodelay, int keepalive, Plug plug) { static struct socket_function_table fn_table = { ot_tcp_plug, @@ -281,7 +281,7 @@ Socket ot_new(SockAddr addr, int port, int privport, int oobinline, return (Socket) ret; } - /* TODO: oobinline, nodelay */ + /* TODO: oobinline, nodelay, keepalive */ /* * Bind to local address. @@ -324,6 +324,8 @@ Socket ot_new(SockAddr addr, int port, int privport, int oobinline, ret->next->prev = &ret->next; ot.socklist = ret; + /* XXX: don't know whether we can sk_addr_free(addr); */ + return (Socket) ret; } @@ -420,7 +422,7 @@ char *ot_addr_error(SockAddr addr) sprintf(buf, "error %d", addr->error); return buf; } -static char *ot_tcp_socket_error(Socket sock) +static const char *ot_tcp_socket_error(Socket sock) { Actual_Socket s = (Actual_Socket) sock; static char buf[128]; @@ -466,18 +468,16 @@ void ot_poll(void) void ot_recv(Actual_Socket s) { OTResult o; - char buf[20480]; + char buf[2048]; OTFlags flags; if (s->frozen) return; - do { - o = OTRcv(s->ep, buf, sizeof(buf), &flags); - if (o > 0) - plug_receive(s->plug, 0, buf, o); - if (o < 0 && o != kOTNoDataErr) - plug_closing(s->plug, NULL, 0, 0); /* XXX Error msg */ - } while (o > 0); + o = OTRcv(s->ep, buf, sizeof(buf), &flags); + if (o > 0) + plug_receive(s->plug, 0, buf, o); + if (o < 0 && o != kOTNoDataErr) + plug_closing(s->plug, NULL, 0, 0); /* XXX Error msg */ }