equal
deleted
inserted
replaced
43 jfieldID psi_localportID; |
43 jfieldID psi_localportID; |
44 jfieldID psi_timeoutID; |
44 jfieldID psi_timeoutID; |
45 jfieldID psi_trafficClassID; |
45 jfieldID psi_trafficClassID; |
46 jfieldID psi_fdLockID; |
46 jfieldID psi_fdLockID; |
47 jfieldID psi_closePendingID; |
47 jfieldID psi_closePendingID; |
48 |
|
49 extern void setDefaultScopeID(JNIEnv *env, struct sockaddr *him); |
|
50 |
48 |
51 /* |
49 /* |
52 * file descriptor used for dup2 |
50 * file descriptor used for dup2 |
53 */ |
51 */ |
54 static int marker_fd = -1; |
52 static int marker_fd = -1; |
259 /* connect */ |
257 /* connect */ |
260 if (NET_InetAddressToSockaddr(env, iaObj, port, &sa, &len, |
258 if (NET_InetAddressToSockaddr(env, iaObj, port, &sa, &len, |
261 JNI_TRUE) != 0) { |
259 JNI_TRUE) != 0) { |
262 return; |
260 return; |
263 } |
261 } |
264 setDefaultScopeID(env, &sa.sa); |
|
265 |
262 |
266 if (trafficClass != 0 && ipv6_available()) { |
263 if (trafficClass != 0 && ipv6_available()) { |
267 NET_SetTrafficClass(&sa, trafficClass); |
264 NET_SetTrafficClass(&sa, trafficClass); |
268 } |
265 } |
269 |
266 |
507 /* bind */ |
504 /* bind */ |
508 if (NET_InetAddressToSockaddr(env, iaObj, localport, &sa, |
505 if (NET_InetAddressToSockaddr(env, iaObj, localport, &sa, |
509 &len, JNI_TRUE) != 0) { |
506 &len, JNI_TRUE) != 0) { |
510 return; |
507 return; |
511 } |
508 } |
512 setDefaultScopeID(env, &sa.sa); |
|
513 |
509 |
514 if (NET_Bind(fd, &sa, len) < 0) { |
510 if (NET_Bind(fd, &sa, len) < 0) { |
515 if (errno == EADDRINUSE || errno == EADDRNOTAVAIL || |
511 if (errno == EADDRINUSE || errno == EADDRNOTAVAIL || |
516 errno == EPERM || errno == EACCES) { |
512 errno == EPERM || errno == EACCES) { |
517 NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "BindException", |
513 NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "BindException", |