X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/c2a71b0d1dd8f3be50993207c61423d22bc3f4bf..f85e6f6edb2c9415bc10bd2015479d72ea8c5ae2:/unix/uxnet.c diff --git a/unix/uxnet.c b/unix/uxnet.c index 9d9e03bc..ce062d8a 100644 --- a/unix/uxnet.c +++ b/unix/uxnet.c @@ -26,7 +26,7 @@ struct Socket_tag { struct socket_function_table *fn; /* the above variable absolutely *must* be the first in this structure */ - char *error; + const char *error; int s; Plug plug; void *private_ptr; @@ -56,7 +56,7 @@ struct Socket_tag { typedef struct Socket_tag *Actual_Socket; struct SockAddr_tag { - char *error; + const char *error; /* * Which address family this address belongs to. AF_INET for * IPv4; AF_INET6 for IPv6; AF_UNSPEC indicates that name @@ -90,7 +90,7 @@ static int cmpfortree(void *av, void *bv) static int cmpforsearch(void *av, void *bv) { Actual_Socket b = (Actual_Socket) bv; - int as = (int) av, bs = b->s; + int as = *(int *)av, bs = b->s; if (as < bs) return -1; if (as > bs) @@ -115,7 +115,7 @@ void sk_cleanup(void) } } -char *error_string(int error) +const char *error_string(int error) { return strerror(error); } @@ -322,7 +322,7 @@ static int sk_tcp_write_oob(Socket s, const char *data, int len); static void sk_tcp_set_private_ptr(Socket s, void *ptr); static void *sk_tcp_get_private_ptr(Socket s); static void sk_tcp_set_frozen(Socket s, int is_frozen); -static char *sk_tcp_socket_error(Socket s); +static const char *sk_tcp_socket_error(Socket s); static struct socket_function_table tcp_fn_table = { sk_tcp_plug, @@ -336,7 +336,7 @@ static struct socket_function_table tcp_fn_table = { sk_tcp_socket_error }; -Socket sk_register(void *sock, Plug plug) +Socket sk_register(OSSocket sockfd, Plug plug) { Actual_Socket ret; @@ -357,7 +357,7 @@ Socket sk_register(void *sock, Plug plug) ret->oobpending = FALSE; ret->listener = 0; - ret->s = (int)sock; + ret->s = sockfd; if (ret->s < 0) { ret->error = error_string(errno); @@ -521,6 +521,8 @@ Socket sk_new(SockAddr addr, int port, int privport, int oobinline, uxsel_tell(ret); add234(sktree, ret); + sk_addr_free(addr); + return (Socket) ret; } @@ -819,7 +821,7 @@ static int net_select_result(int fd, int event) u_long atmark; /* Find the Socket structure */ - s = find234(sktree, (void *) fd, cmpforsearch); + s = find234(sktree, &fd, cmpforsearch); if (!s) return 1; /* boggle */ @@ -837,8 +839,8 @@ static int net_select_result(int fd, int event) ret = recv(s->s, buf, sizeof(buf), MSG_OOB); noise_ultralight(ret); if (ret <= 0) { - char *str = (ret == 0 ? "Internal networking trouble" : - error_string(errno)); + const char *str = (ret == 0 ? "Internal networking trouble" : + error_string(errno)); /* We're inside the Unix frontend here, so we know * that the frontend handle is unnecessary. */ logevent(NULL, str); @@ -876,7 +878,7 @@ static int net_select_result(int fd, int event) if (s->localhost_only && !ipv4_is_loopback(isa.sin_addr)) { close(t); /* someone let nonlocal through?! */ - } else if (plug_accepting(s->plug, (void*)t)) { + } else if (plug_accepting(s->plug, t)) { close(t); /* denied or error */ } break; @@ -1003,11 +1005,11 @@ static void *sk_tcp_get_private_ptr(Socket sock) * if there's a problem. These functions extract an error message, * or return NULL if there's no problem. */ -char *sk_addr_error(SockAddr addr) +const char *sk_addr_error(SockAddr addr) { return addr->error; } -static char *sk_tcp_socket_error(Socket sock) +static const char *sk_tcp_socket_error(Socket sock) { Actual_Socket s = (Actual_Socket) sock; return s->error;