- Timestamp:
- 10/13/08 19:09:27 (5 years ago)
- Location:
- lang/cplusplus/llv8call/branches/unixsocket
- Files:
-
- 2 modified
-
ext/socket/socket.cc (modified) (3 diffs)
-
t/100_socket/05_unix_socket.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/cplusplus/llv8call/branches/unixsocket/ext/socket/socket.cc
r21241 r21243 119 119 120 120 String::Utf8Value path(args->Get(Int32::New(0))); 121 if ((unsigned int)path.length() >= sizeof(addr->sun_path)) { 122 ThrowException(String::New("path too long")); 123 return; 124 } 121 125 addr->sun_family = AF_UNIX; 122 puts(*path);123 strncpy(addr->sun_path, *path, 104);126 memcpy(addr->sun_path, *path, path.length()); 127 addr->sun_path[path.length()] = '\0'; 124 128 puts(addr->sun_path); 125 *len = sizeof(sockaddr_un);129 *len = path.length() + (sizeof(*addr) - sizeof(addr->sun_path)); 126 130 } 127 131 break; … … 260 264 ARG_array(addrsrc, 0); 261 265 _gen_sockaddr(addrsrc, family, &addr, &len); 266 printf("connect: FAMILY: %d, %d, %s, %d\n", family, len, addr.un.sun_path, addr.un.sun_family); 262 267 if (connect(sock, (sockaddr*)&addr, len) == 0) { 263 268 return Undefined(); … … 276 281 _flags = flags; 277 282 } 278 char * buf = new char [len]; 283 char * buf = new char [len+1]; 284 assert(sock); 285 printf("FOOEEE %d, %d, %d\n", sock, len, _flags); 279 286 ssize_t size = recv(sock, buf, len, _flags); 280 287 if (size >= 0) { -
lang/cplusplus/llv8call/branches/unixsocket/t/100_socket/05_unix_socket.js
r21241 r21243 5 5 var Socket = org.coderepos.socket.Socket; 6 6 var POSIX = org.coderepos.posix; 7 var Temp = org.coderepos.fs.Temp;8 7 9 8 var pid = POSIX.fork(); 10 var tmpfile = Temp.tempfile(); 9 var sockfile = "t/100_socket/unix.sock"; 10 if (File.access(sockfile, File.R_OK)) { 11 File.remove(sockfile); 12 } 11 13 12 14 if (Socket.AF_UNIX) { 13 15 if (pid == 0) { 14 16 // child(client) 15 POSIX.sleep( 3);17 POSIX.sleep(1); 16 18 var sock = new Socket(Socket.AF_UNIX); 17 sock.connect([ tmpfile]);19 sock.connect([sockfile]); 18 20 sock.send("ABCDEFGHIJ"); 21 p("SENT"); 19 22 sock.close(); 20 23 exit(0); … … 26 29 p(Socket.AF_UNIX); 27 30 p(sock); 28 sock.bind([tmpfile]); 31 sock.bind([sockfile]); 32 sock.listen(1); 33 POSIX.sleep(3); 29 34 is(sock.recv(10), "ABCDEFGHIJ"); 30 35 sock.close(); 31 File.remove( tmpfile);36 File.remove(sockfile); 32 37 } else { 33 38 throw "Cannot fork";
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)