< prev index next >

src/java.base/unix/native/libnet/net_util_md.c

Print this page
rev 14618 : 8158023: SocketExceptions contain too little information sometimes


 255 
 256 int cmpScopeID (unsigned int scope, struct sockaddr *him) {
 257     struct sockaddr_in6 *hext = (struct sockaddr_in6 *)him;
 258     return hext->sin6_scope_id == scope;
 259 }
 260 
 261 #else
 262 
 263 int getScopeID (struct sockaddr *him) {
 264     struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)him;
 265     return him6->sin6_scope_id;
 266 }
 267 
 268 int cmpScopeID (unsigned int scope, struct sockaddr *him) {
 269     struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)him;
 270     return him6->sin6_scope_id == scope;
 271 }
 272 
 273 #endif
 274 
 275 
 276 void
 277 NET_ThrowByNameWithLastError(JNIEnv *env, const char *name,
 278                    const char *defaultDetail) {
 279     char errmsg[255];
 280     sprintf(errmsg, "errno: %d, error: %s\n", errno, defaultDetail);
 281     JNU_ThrowByNameWithLastError(env, name, errmsg);
 282 }
 283 
 284 void
 285 NET_ThrowCurrent(JNIEnv *env, char *msg) {
 286     NET_ThrowNew(env, errno, msg);
 287 }
 288 
 289 void
 290 NET_ThrowNew(JNIEnv *env, int errorNumber, char *msg) {
 291     char fullMsg[512];
 292     if (!msg) {
 293         msg = "no further information";
 294     }
 295     switch(errorNumber) {
 296     case EBADF:
 297         jio_snprintf(fullMsg, sizeof(fullMsg), "socket closed: %s", msg);
 298         JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", fullMsg);
 299         break;
 300     case EINTR:
 301         JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException", msg);
 302         break;
 303     default:




 255 
 256 int cmpScopeID (unsigned int scope, struct sockaddr *him) {
 257     struct sockaddr_in6 *hext = (struct sockaddr_in6 *)him;
 258     return hext->sin6_scope_id == scope;
 259 }
 260 
 261 #else
 262 
 263 int getScopeID (struct sockaddr *him) {
 264     struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)him;
 265     return him6->sin6_scope_id;
 266 }
 267 
 268 int cmpScopeID (unsigned int scope, struct sockaddr *him) {
 269     struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)him;
 270     return him6->sin6_scope_id == scope;
 271 }
 272 
 273 #endif
 274 









 275 void
 276 NET_ThrowCurrent(JNIEnv *env, char *msg) {
 277     NET_ThrowNew(env, errno, msg);
 278 }
 279 
 280 void
 281 NET_ThrowNew(JNIEnv *env, int errorNumber, char *msg) {
 282     char fullMsg[512];
 283     if (!msg) {
 284         msg = "no further information";
 285     }
 286     switch(errorNumber) {
 287     case EBADF:
 288         jio_snprintf(fullMsg, sizeof(fullMsg), "socket closed: %s", msg);
 289         JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", fullMsg);
 290         break;
 291     case EINTR:
 292         JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException", msg);
 293         break;
 294     default:


< prev index next >