Skip to content

Commit 85e26ef

Browse files
olsonjefferybrson
authored andcommitted
fixing libuv stuff in win32 (see #2064) .. pass sockaddr_in by-ref, for now
1 parent ab1efb9 commit 85e26ef

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

src/libstd/uv.rs

+13-9
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,8 @@ native mod rustrt {
340340
-> sockaddr_in;
341341
fn rust_uv_tcp_connect(connect_ptr: *uv_connect_t,
342342
tcp_handle_ptr: *uv_tcp_t,
343-
++addr: sockaddr_in,
344-
after_cb: *u8) -> libc::c_int;
343+
++after_cb: *u8,
344+
++addr: *sockaddr_in) -> libc::c_int;
345345
fn rust_uv_write(req: *libc::c_void, stream: *libc::c_void,
346346
++buf_in: *uv_buf_t, buf_cnt: libc::c_int,
347347
cb: *u8) -> libc::c_int;
@@ -405,13 +405,14 @@ mod direct {
405405
}
406406
unsafe fn tcp_connect(connect_ptr: *uv_connect_t,
407407
tcp_handle_ptr: *uv_tcp_t,
408-
address: sockaddr_in,
409-
after_connect_cb: *u8)
408+
addr_ptr: *sockaddr_in,
409+
++after_connect_cb: *u8)
410410
-> libc::c_int {
411-
io::println(#fmt("b4 native tcp_connect--addr port: %u",
412-
address.sin_port as uint));
411+
let address = *addr_ptr;
412+
io::println(#fmt("b4 native tcp_connect--addr port: %u cb: %u",
413+
address.sin_port as uint, after_connect_cb as uint));
413414
ret rustrt::rust_uv_tcp_connect(connect_ptr, tcp_handle_ptr,
414-
address, after_connect_cb);
415+
after_connect_cb, addr_ptr);
415416
}
416417

417418
// TODO github #1402 -- the buf_in is a vector of pointers
@@ -1185,16 +1186,19 @@ fn impl_uv_tcp_request() unsafe {
11851186
io::println("sucessful tcp_init_result");
11861187

11871188
io::println("building addr...");
1188-
let addr = direct::ip4_addr("173.194.33.40", 80);
1189+
let addr = direct::ip4_addr("74.125.227.16", 80);
1190+
let addr_ptr = ptr::addr_of(addr);
11891191
io::println(#fmt("after build addr in rust. port: %u",
11901192
addr.sin_port as uint));
11911193
//let addr: *libc::c_void = ptr::addr_of(addr_val) as
11921194
// *libc::c_void;
11931195

11941196
// this should set up the connection request..
1197+
io::println(#fmt("before calling tcp_connect .. connect cb ptr: %u ",
1198+
on_connect_cb as uint));
11951199
let tcp_connect_result = direct::tcp_connect(
11961200
connect_req_ptr, tcp_handle_ptr,
1197-
addr, on_connect_cb);
1201+
addr_ptr, on_connect_cb);
11981202
if (tcp_connect_result == 0i32) {
11991203
// not set the data on the connect_req
12001204
// until its initialized

src/rt/rust_uv.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -293,17 +293,19 @@ extern "C" uv_err_t
293293
rust_uv_last_error(uv_loop_t* loop) {
294294
return uv_last_error(loop);
295295
}
296-
297296
extern "C" int
298297
rust_uv_tcp_connect(uv_connect_t* connect_ptr,
299298
uv_tcp_t* tcp_ptr,
300-
struct sockaddr_in addr,
301-
uv_connect_cb cb) {
299+
uv_connect_cb cb,
300+
sockaddr_in* addr_ptr) {
302301
//return uv_tcp_connect(connect_ptr, tcp_ptr, addr, cb);
303302
printf("inside rust_uv_tcp_connect\n");
304303
//sockaddr_in addr_tmp = *((sockaddr_in*)addr_ptr);
305304
//sockaddr_in addr = addr_tmp;
305+
sockaddr_in addr = *addr_ptr;
306306
printf("before tcp_connect .. port: %d\n", addr.sin_port);
307+
//int result = uv_tcp_connect(connect_ptr, tcp_ptr, loc_addr, cb);
308+
printf("before tcp_connect.. tcp stream: %lu cb ptr: %lu\n", (unsigned long int)tcp_ptr, (unsigned long int)cb);
307309
int result = uv_tcp_connect(connect_ptr, tcp_ptr, addr, cb);
308310
printf ("leaving rust_uv_tcp_connect.. and result: %d\n",
309311
result);

0 commit comments

Comments
 (0)