diff options
Diffstat (limited to 'erts/emulator/nifs/common/prim_socket_nif.c')
-rw-r--r-- | erts/emulator/nifs/common/prim_socket_nif.c | 216 |
1 files changed, 157 insertions, 59 deletions
diff --git a/erts/emulator/nifs/common/prim_socket_nif.c b/erts/emulator/nifs/common/prim_socket_nif.c index 438387b9c4..4ac0fc0966 100644 --- a/erts/emulator/nifs/common/prim_socket_nif.c +++ b/erts/emulator/nifs/common/prim_socket_nif.c @@ -24,7 +24,8 @@ * The first function is called 'nif_<something>', e.g. nif_open. * This does the initial validation and argument processing and then * calls the function that does the actual work. This is called - * 'esock_<something>'. + * 'esock_<something>', e.g. esock_open (actually esock_open2 or + * esock_open4). * ---------------------------------------------------------------------- * * @@ -38,11 +39,30 @@ #define STATIC_ERLANG_NIF 1 - #ifdef HAVE_CONFIG_H -#include "config.h" +# include "config.h" #endif +#ifndef ESOCK_ENABLE +# include <erl_nif.h> + +static +ErlNifFunc esock_funcs[] = {}; + +static +int on_load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) +{ + (void)env; + (void)priv_data; + (void)load_info; + + return 1; +} + +ERL_NIF_INIT(prim_socket, esock_funcs, on_load, NULL, NULL, NULL) + +#else + /* If we HAVE_SCTP_H and Solaris, we need to define the following in * order to get SCTP working: */ @@ -491,6 +511,9 @@ typedef int SOCKET; /* A subset of HANDLE */ #define ESOCK_GET_RESOURCE(ENV, REF, RES) \ enif_get_resource((ENV), (REF), esocks, (RES)) +#define ESOCK_MON2TERM(E, M) \ + esock_make_monitor_term((E), (M)) + #define ESOCK_RECV_BUFFER_COUNT_DEFAULT 0 #define ESOCK_RECV_BUFFER_SIZE_DEFAULT 8192 #define ESOCK_RECV_CTRL_BUFFER_SIZE_DEFAULT 1024 @@ -3976,17 +3999,13 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(addrform); \ GLOBAL_ATOM_DECL(add_membership); \ GLOBAL_ATOM_DECL(add_source_membership); \ + GLOBAL_ATOM_DECL(alen); \ GLOBAL_ATOM_DECL(allmulti); \ GLOBAL_ATOM_DECL(any); \ - GLOBAL_ATOM_DECL(arphrd_dlci); \ - GLOBAL_ATOM_DECL(arphrd_ether); \ - GLOBAL_ATOM_DECL(arphrd_frelay); \ - GLOBAL_ATOM_DECL(arphrd_ieee802); \ - GLOBAL_ATOM_DECL(arphrd_ieee1394); \ - GLOBAL_ATOM_DECL(arphrd_loopback); \ - GLOBAL_ATOM_DECL(arphrd_netrom); \ - GLOBAL_ATOM_DECL(arphrd_none); \ + GLOBAL_ATOM_DECL(appletlk); \ + GLOBAL_ATOM_DECL(arcnet); \ GLOBAL_ATOM_DECL(associnfo); \ + GLOBAL_ATOM_DECL(atm); \ GLOBAL_ATOM_DECL(authhdr); \ GLOBAL_ATOM_DECL(auth_active_key); \ GLOBAL_ATOM_DECL(auth_asconf); \ @@ -3996,6 +4015,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(auth_level); \ GLOBAL_ATOM_DECL(autoclose); \ GLOBAL_ATOM_DECL(automedia); \ + GLOBAL_ATOM_DECL(ax25); \ GLOBAL_ATOM_DECL(bad_data); \ GLOBAL_ATOM_DECL(bindtodevice); \ GLOBAL_ATOM_DECL(block_source); \ @@ -4010,6 +4030,8 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(confirm); \ GLOBAL_ATOM_DECL(congestion); \ GLOBAL_ATOM_DECL(connect); \ + GLOBAL_ATOM_DECL(connected); \ + GLOBAL_ATOM_DECL(connecting); \ GLOBAL_ATOM_DECL(context); \ GLOBAL_ATOM_DECL(cork); \ GLOBAL_ATOM_DECL(credentials); \ @@ -4022,6 +4044,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(delayed_ack_time); \ GLOBAL_ATOM_DECL(dgram); \ GLOBAL_ATOM_DECL(disable_fragments); \ + GLOBAL_ATOM_DECL(dlci); \ GLOBAL_ATOM_DECL(domain); \ GLOBAL_ATOM_DECL(dontfrag); \ GLOBAL_ATOM_DECL(dontroute); \ @@ -4032,6 +4055,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(dying); \ GLOBAL_ATOM_DECL(dynamic); \ GLOBAL_ATOM_DECL(echo); \ + GLOBAL_ATOM_DECL(eether); \ GLOBAL_ATOM_DECL(egp); \ GLOBAL_ATOM_DECL(enotsup); \ GLOBAL_ATOM_DECL(eor); \ @@ -4039,6 +4063,8 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(errqueue); \ GLOBAL_ATOM_DECL(esp_network_level); \ GLOBAL_ATOM_DECL(esp_trans_level); \ + GLOBAL_ATOM_DECL(ether); \ + GLOBAL_ATOM_DECL(eui64); \ GLOBAL_ATOM_DECL(events); \ GLOBAL_ATOM_DECL(explicit_eor); \ GLOBAL_ATOM_DECL(faith); \ @@ -4049,6 +4075,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(flowinfo); \ GLOBAL_ATOM_DECL(fragment_interleave); \ GLOBAL_ATOM_DECL(freebind); \ + GLOBAL_ATOM_DECL(frelay); \ GLOBAL_ATOM_DECL(get_peer_addr_info); \ GLOBAL_ATOM_DECL(hatype); \ GLOBAL_ATOM_DECL(hdrincl); \ @@ -4058,11 +4085,15 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(host); \ GLOBAL_ATOM_DECL(icmp); \ GLOBAL_ATOM_DECL(icmp6); \ + GLOBAL_ATOM_DECL(ieee802); \ + GLOBAL_ATOM_DECL(ieee1394); \ GLOBAL_ATOM_DECL(ifindex); \ GLOBAL_ATOM_DECL(igmp); \ GLOBAL_ATOM_DECL(implink); \ + GLOBAL_ATOM_DECL(index); \ GLOBAL_ATOM_DECL(inet); \ GLOBAL_ATOM_DECL(inet6); \ + GLOBAL_ATOM_DECL(infiniband); \ GLOBAL_ATOM_DECL(info); \ GLOBAL_ATOM_DECL(initmsg); \ GLOBAL_ATOM_DECL(invalid); \ @@ -4088,6 +4119,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(link1); \ GLOBAL_ATOM_DECL(link2); \ GLOBAL_ATOM_DECL(local); \ + GLOBAL_ATOM_DECL(localtlk); \ GLOBAL_ATOM_DECL(local_auth_chunks); \ GLOBAL_ATOM_DECL(loopback); \ GLOBAL_ATOM_DECL(lowdelay); \ @@ -4097,6 +4129,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(maxburst); \ GLOBAL_ATOM_DECL(maxseg); \ GLOBAL_ATOM_DECL(md5sig); \ + GLOBAL_ATOM_DECL(metricom); \ GLOBAL_ATOM_DECL(mincost); \ GLOBAL_ATOM_DECL(minttl); \ GLOBAL_ATOM_DECL(monitor); \ @@ -4111,6 +4144,8 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(multicast_loop); \ GLOBAL_ATOM_DECL(multicast_ttl); \ GLOBAL_ATOM_DECL(name); \ + GLOBAL_ATOM_DECL(netrom); \ + GLOBAL_ATOM_DECL(nlen); \ GLOBAL_ATOM_DECL(noarp); \ GLOBAL_ATOM_DECL(nodelay); \ GLOBAL_ATOM_DECL(nodefrag); \ @@ -4150,6 +4185,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(primary_addr); \ GLOBAL_ATOM_DECL(priority); \ GLOBAL_ATOM_DECL(promisc); \ + GLOBAL_ATOM_DECL(pronet); \ GLOBAL_ATOM_DECL(protocol); \ GLOBAL_ATOM_DECL(pup); \ GLOBAL_ATOM_DECL(raw); \ @@ -4197,6 +4233,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(set_peer_primary_addr); \ GLOBAL_ATOM_DECL(simplex); \ GLOBAL_ATOM_DECL(slave); \ + GLOBAL_ATOM_DECL(slen); \ GLOBAL_ATOM_DECL(sndbuf); \ GLOBAL_ATOM_DECL(sndbufforce); \ GLOBAL_ATOM_DECL(sndlowat); \ @@ -4216,6 +4253,8 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(true); \ GLOBAL_ATOM_DECL(trunc); \ GLOBAL_ATOM_DECL(ttl); \ + GLOBAL_ATOM_DECL(tunnel); \ + GLOBAL_ATOM_DECL(tunnel6); \ GLOBAL_ATOM_DECL(type); \ GLOBAL_ATOM_DECL(udp); \ GLOBAL_ATOM_DECL(unblock_source); \ @@ -4228,6 +4267,7 @@ static const struct in6_addr in6addr_loopback = GLOBAL_ATOM_DECL(user_timeout); \ GLOBAL_ATOM_DECL(use_ext_recvinfo); \ GLOBAL_ATOM_DECL(use_min_mtu); \ + GLOBAL_ATOM_DECL(void); \ GLOBAL_ATOM_DECL(v6only) @@ -4267,8 +4307,6 @@ ERL_NIF_TERM esock_atom_socket_tag; // This has a "special" name ('$socket') LOCAL_ATOM_DECL(closed); \ LOCAL_ATOM_DECL(closing); \ LOCAL_ATOM_DECL(code); \ - LOCAL_ATOM_DECL(connected); \ - LOCAL_ATOM_DECL(connecting); \ LOCAL_ATOM_DECL(cookie_life); \ LOCAL_ATOM_DECL(counter_wrap); \ LOCAL_ATOM_DECL(counters); \ @@ -4859,7 +4897,7 @@ ERL_NIF_TERM esock_socket_info_state(ErlNifEnv* env, SSDBG( descP, ("SOCKET", "esock_socket_info_state {%d} -> connecting" "\r\n", descP->sock) ); */ - TARRAY_ADD(estate, atom_connecting); + TARRAY_ADD(estate, esock_atom_connecting); } if ((state & ESOCK_STATE_CONNECTED) != 0) { @@ -4867,7 +4905,7 @@ ERL_NIF_TERM esock_socket_info_state(ErlNifEnv* env, SSDBG( descP, ("SOCKET", "esock_socket_info_state {%d} -> connected" "\r\n", descP->sock) ); */ - TARRAY_ADD(estate, atom_connected); + TARRAY_ADD(estate, esock_atom_connected); } if ((state & ESOCK_STATE_SELECTED) != 0) { @@ -5791,7 +5829,7 @@ ERL_NIF_TERM esock_open2(ErlNifEnv* env, * Before we do anything else, we try to retrieve domain, type and protocol * This information is either present in the eopts map or if not we need * to "get" it from the system (getsockopt). - * Note that its not possible to get all of these on all platoforms, + * Note that its not possible to get all of these on all platforms, * and in those cases the user *must* provide us with them (eopts). * * We try the system first (since its more reliable) and if that fails @@ -6160,8 +6198,8 @@ BOOLEAN_T esock_open_which_protocol(SOCKET sock, int* proto) /* We should really have another API, so that we can return errno... */ /* *** change network namespace *** - * Retreive the current namespace and set the new. - * Return result and previous namespace if successfull. + * Retrieve the current namespace and set the new. + * Return result and previous namespace if successful. */ #ifndef __WIN32__ static @@ -6729,7 +6767,7 @@ ERL_NIF_TERM nif_accept(ErlNifEnv* env, ref, descP->currentAcceptorP, descP->currentAcceptor.pid, - esock_make_monitor_term(env, &descP->currentAcceptor.mon), + ESOCK_MON2TERM(env, &descP->currentAcceptor.mon), descP->currentAcceptor.env, descP->currentAcceptor.ref) ); @@ -6789,9 +6827,8 @@ ERL_NIF_TERM esock_accept(ErlNifEnv* env, accRef, caller, save_errno); } else { /* We got an incoming connection */ - return - esock_accept_listening_accept(env, descP, sockRef, - accSock, caller); + return esock_accept_listening_accept(env, descP, sockRef, + accSock, caller); } } else { @@ -6802,16 +6839,20 @@ ERL_NIF_TERM esock_accept(ErlNifEnv* env, SSDBG( descP, ("SOCKET", "esock_accept_accepting -> check: " "is caller current acceptor:" - "\r\n Caller: %T" - "\r\n Current: %T" - "\r\n", caller, descP->currentAcceptor.pid) ); + "\r\n Caller: %T" + "\r\n Current: %T" + "\r\n Current Mon: %T" + "\r\n", + caller, + descP->currentAcceptor.pid, + ESOCK_MON2TERM(env, &descP->currentAcceptor.mon)) ); if (COMPARE_PIDS(&descP->currentAcceptor.pid, &caller) == 0) { SSDBG( descP, ("SOCKET", - "esock_accept_accepting {%d} -> current acceptor\r\n", - descP->sock) ); + "esock_accept_accepting {%d} -> current acceptor" + "\r\n", descP->sock) ); return esock_accept_accepting_current(env, descP, sockRef, accRef); @@ -6855,7 +6896,7 @@ ERL_NIF_TERM esock_accept_listening_error(ErlNifEnv* env, SSDBG( descP, ("SOCKET", - "esock_accept_listening_error {%d} -> would block\r\n", + "esock_accept_listening_error {%d} -> would block - retry\r\n", descP->sock) ); descP->currentAcceptor.pid = caller; @@ -6868,8 +6909,20 @@ ERL_NIF_TERM esock_accept_listening_error(ErlNifEnv* env, descP->currentAcceptor.ref = CP_TERM(descP->currentAcceptor.env, accRef); descP->currentAcceptorP = &descP->currentAcceptor; + + SSDBG( descP, + ("SOCKET", + "esock_accept_listening_error {%d} -> retry for: " + "\r\n Current Pid: %T" + "\r\n Current Mon: %T" + "\r\n", + descP->sock, + descP->currentAcceptor.pid, + ESOCK_MON2TERM(env, &descP->currentAcceptor.mon)) ); + res = esock_accept_busy_retry(env, descP, sockRef, accRef, NULL); } else { + SSDBG( descP, ("SOCKET", "esock_accept_listening {%d} -> errno: %d\r\n", @@ -6947,6 +7000,7 @@ ERL_NIF_TERM esock_accept_accepting_current(ErlNifEnv* env, /* *** esock_accept_accepting_current_accept *** + * * Handles when the current acceptor succeeded in its accept call - * handle the new connection. */ @@ -6967,6 +7021,12 @@ ERL_NIF_TERM esock_accept_accepting_current_accept(ErlNifEnv* env, if (esock_accept_accepted(env, descP, sockRef, accSock, descP->currentAcceptor.pid, &res)) { + ESOCK_ASSERT( DEMONP("esock_accept_accepting_current_accept -> " + "current acceptor", + env, descP, &descP->currentAcceptor.mon) == 0); + + MON_INIT(&descP->currentAcceptor.mon); + if (!activate_next_acceptor(env, descP, sockRef)) { SSDBG( descP, @@ -7059,7 +7119,7 @@ ERL_NIF_TERM esock_accept_accepting_current_error(ErlNifEnv* env, /* *** esock_accept_accepting_other *** * Handles when the another acceptor makes an attempt, which - * results (maybe) in the request beeing pushed onto the + * results (maybe) in the request being pushed onto the * acceptor queue. */ #ifndef __WIN32__ @@ -7100,9 +7160,13 @@ ERL_NIF_TERM esock_accept_busy_retry(ErlNifEnv* env, ESOCK_ASSERT( DEMONP("esock_accept_busy_retry - select failed", env, descP, &descP->currentAcceptor.mon) == 0); + + MON_INIT(&descP->currentAcceptor.mon); + /* It is very unlikely that a next acceptor will be able - * to do anything succesful, but we will clean the queue + * to do anything successful, but we will clean the queue */ + if (!activate_next_acceptor(env, descP, sockRef)) { SSDBG( descP, ("SOCKET", @@ -8353,7 +8417,7 @@ esock_sendfile(ErlNifEnv *env, if ((res < 0) && (error == EINVAL)) { /* On e.b SunOS 5.10 using sfv_len > file size - * lands here - we regard this as a succesful send. + * lands here - we regard this as a successful send. * All other causes for EINVAL are avoided, * except for .sfv_fd not seekable, which would * give bytes_sent == 0 that we would interpret @@ -9066,7 +9130,7 @@ ERL_NIF_TERM esock_recvmsg(ErlNifEnv* env, size_t bufSz = (bufLen != 0 ? bufLen : descP->rBufSz); size_t ctrlSz = (ctrlLen != 0 ? ctrlLen : descP->rCtrlSz); struct msghdr msgHdr; - struct iovec iov[1]; // Shall we always use 1? + SysIOVec iov[1]; // Shall we always use 1? ErlNifBinary data[1]; // Shall we always use 1? ErlNifBinary ctrl; ERL_NIF_TERM readerCheck; @@ -9535,7 +9599,7 @@ ERL_NIF_TERM esock_finalize_close(ErlNifEnv* env, #endif /* This nif is executed in a dirty scheduler just so that - * it can "hang" (whith minumum effect on the VM) while the + * it can "hang" (with minimum effect on the VM) while the * kernel writes our buffers. IF we have set the linger option * for this ({true, integer() > 0}). For this to work we must * be blocking... @@ -12903,7 +12967,7 @@ ERL_NIF_TERM esock_getopt_pktoptions(ErlNifEnv* env, "\r\n", descP->sock, keys[3], vals[3]) ); } - /* Guard agains cut-and-paste errors */ + /* Guard against cut-and-paste errors */ ESOCK_ASSERT( numKeys == NUM(vals) ); /* Make control message header map */ @@ -13050,13 +13114,28 @@ ERL_NIF_TERM esock_sockname(ErlNifEnv* env, if (! IS_OPEN(descP->readState)) return esock_make_error(env, atom_closed); + SSDBG( descP, + ("SOCKET", "esock_sockname {%d} -> open - try get sockname\r\n", + descP->sock) ); + sys_memzero((char*) saP, sz); if (sock_name(descP->sock, (struct sockaddr*) saP, &sz) < 0) { return esock_make_error_errno(env, sock_errno()); } else { ERL_NIF_TERM esa; + SSDBG( descP, + ("SOCKET", "esock_sockname {%d} -> " + "got sockname - try decode\r\n", + descP->sock) ); + esock_encode_sockaddr(env, saP, sz, &esa); + + SSDBG( descP, + ("SOCKET", "esock_sockname {%d} -> decoded: " + "\r\n %T\r\n", + descP->sock, esa) ); + return esock_make_ok2(env, esa); } } @@ -13128,14 +13207,29 @@ ERL_NIF_TERM esock_peername(ErlNifEnv* env, if (! IS_OPEN(descP->readState)) return esock_make_error(env, atom_closed); + SSDBG( descP, + ("SOCKET", "esock_peername {%d} -> open - try get peername\r\n", + descP->sock) ); + sys_memzero((char*) saP, sz); if (sock_peer(descP->sock, (struct sockaddr*) saP, &sz) < 0) { - return esock_make_error_errno(env, sock_errno()); + return esock_make_error_errno(env, sock_errno()); } else { - ERL_NIF_TERM esa; + ERL_NIF_TERM esa; + + SSDBG( descP, + ("SOCKET", "esock_peername {%d} -> " + "got peername - try decode\r\n", + descP->sock) ); + + esock_encode_sockaddr(env, saP, sz, &esa); + + SSDBG( descP, + ("SOCKET", "esock_peername {%d} -> decoded: " + "\r\n %T\r\n", + descP->sock, esa) ); - esock_encode_sockaddr(env, saP, sz, &esa); - return esock_make_ok2(env, esa); + return esock_make_ok2(env, esa); } } #endif // #ifndef __WIN32__ @@ -14085,9 +14179,8 @@ ERL_NIF_TERM encode_ioctl_ifraddr(ErlNifEnv* env, struct sockaddr* addrP) { ERL_NIF_TERM eaddr; - unsigned int sz = sizeof(ESockAddress); - esock_encode_sockaddr(env, (ESockAddress*) addrP, sz, &eaddr); + esock_encode_sockaddr(env, (ESockAddress*) addrP, -1, &eaddr); SSDBG( descP, ("SOCKET", "encode_ioctl_ifraddr -> done with" "\r\n Sock Addr: %T" @@ -14331,17 +14424,19 @@ ERL_NIF_TERM encode_ioctl_ifreq_sockaddr(ErlNifEnv* env, struct sockaddr* sa) ERL_NIF_TERM esa; if (sa != NULL) { - unsigned int sz = sizeof(ESockAddress); - esock_encode_sockaddr(env, (ESockAddress*) sa, sz, &esa); - + esock_encode_sockaddr(env, (ESockAddress*) sa, -1, &esa); + } else { - esa = esock_atom_undefined; + + esa = esock_atom_undefined; + } return esa; } + /* The ifreq structure *always* contain a name * and *one* other element. The second element * depend on the ioctl request. @@ -14628,6 +14723,7 @@ ERL_NIF_TERM esock_cancel_accept_current(ErlNifEnv* env, ESOCK_ASSERT( DEMONP("esock_cancel_accept_current -> current acceptor", env, descP, &descP->currentAcceptor.mon) == 0); + MON_INIT(&descP->currentAcceptor.mon); res = esock_cancel_read_select(env, descP, descP->currentAcceptor.ref); SSDBG( descP, @@ -15219,7 +15315,7 @@ ERL_NIF_TERM send_check_fail(ErlNifEnv* env, /* *** send_error_waiting_writers *** * - * Process all waiting writers when a fatal error has occured. + * Process all waiting writers when a fatal error has occurred. * All waiting writers will be "aborted", that is a * nif_abort message will be sent (with ref and reason). */ @@ -15253,7 +15349,7 @@ void send_error_waiting_writers(ErlNifEnv* env, /* *** send_check_retry *** * - * Processing done upon uncomplete or blocked send. + * Processing done upon incomplete or blocked send. * * We failed to write the *entire* packet (anything less * then size of the packet, which is 0 <= written < sizeof @@ -15517,7 +15613,7 @@ recv_update_current_reader(ErlNifEnv* env, /* *** recv_error_current_reader *** * * Process the current reader and any waiting readers - * when a read (fatal) error has occured. + * when a read (fatal) error has occurred. * All waiting readers will be "aborted", that is a * nif_abort message will be sent (with ref and reason). */ @@ -15688,7 +15784,7 @@ ERL_NIF_TERM recv_check_full(ErlNifEnv* env, /* Send up each chunk of data for each of the read * and let the erlang code assemble it: {more, Bin} * (when complete it should return {ok, Bin}). - * We need to read atleast one more time to be sure if its + * We need to read at least one more time to be sure if its * done... * * Also, we need to check if the rNumCnt has reached its max (rNum), @@ -15895,7 +15991,7 @@ ERL_NIF_TERM recv_check_fail(ErlNifEnv* env, /* *** recv_check_fail_econnreset *** * - * We detected that the socket was closed wile reading. + * We detected that the socket was closed while reading. * Inform current and waiting readers. */ #ifndef __WIN32__ @@ -15996,7 +16092,7 @@ ERL_NIF_TERM recv_check_fail_gen(ErlNifEnv* env, /* *** recv_check_partial *** * - * Handle a sucessful recv which only partly filled the specified buffer. + * Handle a successful recv which only partly filled the specified buffer. */ #ifndef __WIN32__ static @@ -16209,7 +16305,7 @@ ERL_NIF_TERM recvfrom_check_result(ErlNifEnv* env, } else { - /* +++ We sucessfully got a message - time to encode the address +++ */ + /* +++ We successfully got a message - time to encode the address +++ */ ERL_NIF_TERM eSockAddr; @@ -16316,7 +16412,7 @@ ERL_NIF_TERM recvmsg_check_result(ErlNifEnv* env, } else { - /* +++ We sucessfully got a message - time to encode it +++ */ + /* +++ We successfully got a message - time to encode it +++ */ res = recvmsg_check_msg(env, descP, read, msgHdrP, dataBufP, ctrlBufP, sockRef); @@ -16603,7 +16699,7 @@ void encode_cmsgs(ErlNifEnv* env, "\r\n %T: %T" "\r\n", descP->sock, keys[3], vals[3]) ); - /* Guard agains cut-and-paste errors */ + /* Guard against cut-and-paste errors */ ESOCK_ASSERT( numKeys == NUM(vals) ); ESOCK_ASSERT( MKMA(env, keys, vals, numKeys - (have_value ? 0 : 1), &cmsgHdr) ); @@ -17066,7 +17162,7 @@ BOOLEAN_T esock_cmsg_encode_recverr(ErlNifEnv *env, if (have_offender) { esock_encode_sockaddr(env, (ESockAddress *)offender, - (CHARP(sock_err) + dataLen ) - CHARP(offender), + (CHARP(sock_err) + dataLen) - CHARP(offender), &eSockAddr); } else { eSockAddr = esock_atom_undefined; @@ -17417,7 +17513,7 @@ BOOLEAN_T decode_cmsghdr_value(ErlNifEnv* env, return FALSE; } - // Succesful decode + // Successful decode type = cmsgSpecP->type; @@ -17517,7 +17613,7 @@ BOOLEAN_T decode_cmsghdr_data(ErlNifEnv* env, return FALSE; } - // Succesful decode + // Successful decode SSDBG( descP, ("SOCKET", @@ -19206,7 +19302,7 @@ ESockRequestQueueElement* qpop(ESockRequestQueue* q) ESockRequestQueueElement* e = q->first; if (e != NULL) { - /* Atleast one element in the queue */ + /* At least one element in the queue */ if (e == q->last) { /* Only one element in the queue */ q->first = q->last = NULL; @@ -19359,7 +19455,7 @@ int esock_monitor(const char* slogan, ("SOCKET", "esock_monitor {%d} [%T] %s: monitor ok: %T\r\n", descP->sock, esock_self(env), slogan, - esock_make_monitor_term(env, monP)) ); + ESOCK_MON2TERM(env, monP)) ); } return res; @@ -19379,7 +19475,7 @@ int esock_demonitor(const char* slogan, SSDBG( descP, ("SOCKET", "esock_demonitor {%d} [%T] %s: try demonitor %T\r\n", descP->sock, esock_self(env), slogan, - esock_make_monitor_term(env, monP)) ); + ESOCK_MON2TERM(env, monP)) ); res = enif_demonitor_process(env, descP, &monP->mon); esock_monitor_init(monP); @@ -20333,3 +20429,5 @@ int on_load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) * unload: NULL (not used) */ ERL_NIF_INIT(prim_socket, esock_funcs, on_load, NULL, NULL, NULL) + +#endif |