diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2000-03-16 13:35:20 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2000-03-16 13:35:20 +0000 |
commit | b070d1dce08a924cfdae5b5304318a990ebb73c8 (patch) | |
tree | adbee9f1271b251af595e3a1ac42c545f02d3237 /otherlibs/win32unix/sendrecv.c | |
parent | 3375e52091a4274b9503be74351a4aada59a94db (diff) |
MAJ portage Win32
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@2962 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'otherlibs/win32unix/sendrecv.c')
-rw-r--r-- | otherlibs/win32unix/sendrecv.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/otherlibs/win32unix/sendrecv.c b/otherlibs/win32unix/sendrecv.c index 62c862d6b..46ae14fa0 100644 --- a/otherlibs/win32unix/sendrecv.c +++ b/otherlibs/win32unix/sendrecv.c @@ -48,20 +48,22 @@ value unix_recvfrom(value sock, value buff, value ofs, value len, value flags) / char iobuf[UNIX_BUFFER_SIZE]; value res; value adr = Val_unit; + union sock_addr_union addr; + socklen_param_type addr_len; Begin_roots2 (buff, adr); numbytes = Long_val(len); if (numbytes > UNIX_BUFFER_SIZE) numbytes = UNIX_BUFFER_SIZE; - sock_addr_len = sizeof(sock_addr); + addr_len = sizeof(sock_addr); enter_blocking_section(); ret = recvfrom((SOCKET) Handle_val(sock), iobuf, (int) numbytes, convert_flag_list(flags, msg_flag_table), - &sock_addr.s_gen, &sock_addr_len); + &addr.s_gen, &addr_len); leave_blocking_section(); if (ret == -1) unix_error(WSAGetLastError(), "recvfrom", Nothing); bcopy(iobuf, &Byte(buff, Long_val(ofs)), ret); - adr = alloc_sockaddr(); + adr = alloc_sockaddr(&addr, addr_len); res = alloc_small(2, 0); Field(res, 0) = Val_int(ret); Field(res, 1) = adr; @@ -91,8 +93,10 @@ value unix_sendto_native(value sock, value buff, value ofs, value len, value fla int ret; long numbytes; char iobuf[UNIX_BUFFER_SIZE]; + union sock_addr_union addr; + socklen_param_type addr_len; - get_sockaddr(dest); + get_sockaddr(dest, &addr, &addr_len); numbytes = Long_val(len); if (numbytes > UNIX_BUFFER_SIZE) numbytes = UNIX_BUFFER_SIZE; bcopy(&Byte(buff, Long_val(ofs)), iobuf, numbytes); @@ -100,7 +104,7 @@ value unix_sendto_native(value sock, value buff, value ofs, value len, value fla ret = sendto((SOCKET) Handle_val(sock), iobuf, (int) numbytes, convert_flag_list(flags, msg_flag_table), - &sock_addr.s_gen, sock_addr_len); + &addr.s_gen, addr_len); leave_blocking_section(); if (ret == -1) unix_error(WSAGetLastError(), "sendto", Nothing); return Val_int(ret); |