diff --git a/src/core/net.c b/src/core/net.c index dbd9e4f4..40cb8c28 100644 --- a/src/core/net.c +++ b/src/core/net.c @@ -311,7 +311,9 @@ JANET_NO_RETURN static void janet_sched_accept(JanetStream *stream, JanetFunctio static int net_sched_accept_impl(NetStateAccept *state, JanetFiber *fiber, Janet *err) { SOCKET lsock = as_socket(state->lstream->handle); + PRINT_SOCKET_DEBUG("lsock" lsock); SOCKET asock = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED); + PRINT_SOCKET_DEBUG("asock" asock); if (asock == INVALID_SOCKET) { *err = janet_ev_lasterr(); return 1; @@ -861,6 +863,7 @@ JANET_CORE_FN(cfun_net_listen, #else sfd = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol); #endif + PRINT_SOCKET_DEBUG("listen", sfd); if (!JSOCKVALID(sfd)) continue; const char *err = serverify_socket(sfd, reuse, reuse); if (NULL != err) { @@ -956,7 +959,10 @@ JANET_CORE_FN(cfun_net_getsockname, if (js->flags & JANET_STREAM_CLOSED) janet_panic("stream closed"); struct sockaddr_storage ss = { 0 }; socklen_t slen = sizeof(ss); - if (getsockname(as_socket(js->handle), (struct sockaddr *) &ss, &slen)) { + PRINT_HANDLE_DEBUG("getsockname", js->handle); + JSock sock = as_socket(js->handle); + PRINT_SOCKET_DEBUG("getsockname", sock); + if (getsockname(sock, (struct sockaddr *) &ss, &slen)) { janet_panicf("Failed to get localname on %v: %V", argv[0], janet_ev_lasterr()); } janet_assert(slen <= (socklen_t) sizeof(ss), "socket address truncated"); @@ -971,7 +977,10 @@ JANET_CORE_FN(cfun_net_getpeername, if (js->flags & JANET_STREAM_CLOSED) janet_panic("stream closed"); struct sockaddr_storage ss = { 0 }; socklen_t slen = sizeof(ss); - if (getpeername(as_socket(js->handle), (struct sockaddr *)&ss, &slen)) { + PRINT_HANDLE_DEBUG("getpeername", js->handle); + JSock sock = as_socket(js->handle); + PRINT_SOCKET_DEBUG("getpeername", sock); + if (getpeername(sock, (struct sockaddr *)&ss, &slen)) { janet_panicf("Failed to get peername on %v: %V", argv[0], janet_ev_lasterr()); } janet_assert(slen <= (socklen_t) sizeof(ss), "socket address truncated"); @@ -1250,7 +1259,10 @@ static const JanetMethod net_stream_methods[] = { }; static JanetStream *make_stream(JSock sock, uint32_t flags) { - return janet_stream(as_handle(sock), flags | JANET_STREAM_SOCKET | JANET_STREAM_NODUPS, net_stream_methods); + PRINT_SOCKET_DEBUG("make stream socket before", sock); + JanetStream *ret = janet_stream(as_handle(sock), flags | JANET_STREAM_SOCKET | JANET_STREAM_NODUPS, net_stream_methods); + PRINT_HANDLE_DEBUG("make stream handle after", ret->handle); + return ret; } void janet_lib_net(JanetTable *env) { diff --git a/src/core/util.h b/src/core/util.h index 50177bff..f515b522 100644 --- a/src/core/util.h +++ b/src/core/util.h @@ -266,4 +266,12 @@ void janet_lib_filewatch(JanetTable *env); void janet_lib_ffi(JanetTable *env); #endif +#define PRINT_SOCKET_DEBUG(stage, s) \ + printf("[%s] Raw Socket Value: 0x%llX | Size of type: %zu bytes\n", \ + stage, (unsigned long long)(s), sizeof(s)) + +#define PRINT_HANDLE_DEBUG(stage, h) \ + printf("[%s] Raw Handle Value: 0x%llX | Size of type: %zu bytes\n", \ + stage, (unsigned long long)(uintptr_t)(h), sizeof(h)) + #endif