Skip to content

Commit 5393e43

Browse files
author
Eric Reed
committed
Corrected libuv UDP bindings.
1 parent 39a575f commit 5393e43

File tree

3 files changed

+47
-3
lines changed

3 files changed

+47
-3
lines changed

src/libstd/rt/uv/uvll.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,14 +201,14 @@ pub unsafe fn udp_send<T>(req: *uv_udp_send_t, handle: *T, buf_in: &[uv_buf_t],
201201
addr: *sockaddr_in, cb: *u8) -> c_int {
202202
let buf_ptr = vec::raw::to_ptr(buf_in);
203203
let buf_cnt = buf_in.len() as i32;
204-
return rust_uv_udp_send(req, handle, buf_ptr, buf_cnt, addr, cb);
204+
return rust_uv_udp_send(req, handle as *c_void, buf_ptr, buf_cnt, addr, cb);
205205
}
206206

207207
pub unsafe fn udp_send6<T>(req: *uv_udp_send_t, handle: *T, buf_in: &[uv_buf_t],
208208
addr: *sockaddr_in6, cb: *u8) -> c_int {
209209
let buf_ptr = vec::raw::to_ptr(buf_in);
210210
let buf_cnt = buf_in.len() as i32;
211-
return rust_uv_udp_send(req, handle, buf_ptr, buf_cnt, addr, cb);
211+
return rust_uv_udp_send(req, handle as *c_void, buf_ptr, buf_cnt, addr, cb);
212212
}
213213

214214
pub unsafe fn udp_recv_start(server: *uv_udp_t, on_alloc: *u8, on_recv: *u8) -> c_int {

src/rt/rust_uv.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,43 @@ rust_uv_tcp_getpeername6
293293
return uv_tcp_getpeername(handle, (sockaddr*)name, &namelen);
294294
}
295295

296+
extern "C" int
297+
rust_uv_udp_init(uv_loop_t* loop, uv_udp_t* handle) {
298+
return uv_udp_init(loop, handle);
299+
}
300+
301+
extern "C" int
302+
rust_uv_udp_bind(uv_udp_t* server, sockaddr_in* addr_ptr, unsigned flags) {
303+
return uv_udp_bind(server, *addr_ptr, flags);
304+
}
305+
306+
extern "C" int
307+
rust_uv_udp_bind6(uv_udp_t* server, sockaddr_in6* addr_ptr, unsigned flags) {
308+
return uv_udp_bind6(server, *addr_ptr, flags);
309+
}
310+
311+
extern "C" int
312+
rust_uv_udp_send(uv_udp_send_t* req, uv_udp_t* handle, uv_buf_t* buf_in,
313+
int buf_cnt, sockaddr_in* addr_ptr, uv_udp_send_cb cb) {
314+
return uv_udp_send(req, handle, buf_in, buf_cnt, *addr_ptr, cb);
315+
}
316+
317+
extern "C" int
318+
rust_uv_udp_send6(uv_udp_send_t* req, uv_udp_t* handle, uv_buf_t* buf_in,
319+
int buf_cnt, sockaddr_in6* addr_ptr, uv_udp_send_cb cb) {
320+
return uv_udp_send6(req, handle, buf_in, buf_cnt, *addr_ptr, cb);
321+
}
322+
323+
extern "C" int
324+
rust_uv_udp_recv_start(uv_udp_t* server, uv_alloc_cb on_alloc, uv_udp_recv_cb on_read) {
325+
return uv_udp_recv_start(server, on_alloc, on_read);
326+
}
327+
328+
extern "C" int
329+
rust_uv_udp_recv_stop(uv_udp_t* server) {
330+
return uv_udp_recv_stop(server);
331+
}
332+
296333
extern "C" int
297334
rust_uv_listen(uv_stream_t* stream, int backlog,
298335
uv_connection_cb cb) {

src/rt/rustrt.def.in

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,13 @@ rust_uv_tcp_connect
104104
rust_uv_tcp_bind
105105
rust_uv_tcp_connect6
106106
rust_uv_tcp_bind6
107+
rust_uv_udp_init
108+
rust_uv_udp_bind
109+
rust_uv_udp_bind6
110+
rust_uv_udp_send
111+
rust_uv_udp_send6
112+
rust_uv_udp_recv_start
113+
rust_uv_udp_recv_stop
107114
rust_uv_listen
108115
rust_uv_accept
109116
rust_uv_write
@@ -239,4 +246,4 @@ rust_valgrind_stack_deregister
239246
rust_take_env_lock
240247
rust_drop_env_lock
241248
rust_update_log_settings
242-
rust_get_num_cpus
249+
rust_get_num_cpus

0 commit comments

Comments
 (0)