recv gondja: errno=113 EHOSTUNREACH

Vajon előfordulhat-e, hogy azt mondja a 'read' (avagy 'recv'), hogy EHOSTUNREACH = No route to host?

A jelek szerint igen, meg is lepte a programocskámat... Most az egyszer nem tudom az egzotikus platformot hibáztatni, CentOs 6.4, x86_64

Asszem az lesz a legjobb megoldás, ha azt a default programágat, ahol az 'ez a hiba nem fordulhat elő' van, szépen kiszedem, és helyette az 'ezt a kapcsolatot megette a fene' nevű ágat használom az 'egyéb hiba' esetén...

Pillanatnyi állapot:
[code]
rc2 = soc_errno;
len = 0;
switch (rc2) {
case SCEWOULDBLOCK:
if (mcb.rdebuglevel>1) {
S3I_DebugLineT ("S3IR_read_soc(%d): WOULDBLOCK\n"
, (int)rdp->pio->sock);
}
rc = S_RD_NODATA; /* nincs mit olvasni */
break;

#ifdef SCEPIPE
case SCEPIPE: /* not in WinSock */
#endif
#ifdef SCETIMEDOUT
case SCETIMEDOUT: /* UNIX only */
#endif
#ifdef SCEIO
case SCEIO: /* Whatever it is... */
#endif
#ifdef WSAECONNABORTED
case WSAECONNABORTED: /* WinSock only */
#endif
case SCECONNRESET:
if (mcb.rdebuglevel) {
S3I_DebugLineT ("S3IR_read_soc(%d): EOF (errno=%d)\n",
(int)rdp->pio->sock, rc2);
}
rc = S_RD_EOF; /* EOF */
rdp->pio->last_errno= rc2;
} else {
rc2 = soc_errno;
len = 0;
switch (rc2) {
case SCEWOULDBLOCK:
if (mcb.rdebuglevel>1) {
S3I_DebugLineT ("S3IR_read_soc(%d): WOULDBLOCK\n"
, (int)rdp->pio->sock);
}
rc = S_RD_NODATA; /* nincs mit olvasni */
break;

#ifdef SCEPIPE
case SCEPIPE: /* not in WinSock */
#endif
#ifdef SCETIMEDOUT
case SCETIMEDOUT: /* UNIX only */
#endif
#ifdef SCEIO
case SCEIO: /* Whatever it is... */
#endif
#ifdef WSAECONNABORTED
case WSAECONNABORTED: /* WinSock only */
#endif
case SCECONNRESET:
if (mcb.rdebuglevel) {
S3I_DebugLineT ("S3IR_read_soc(%d): EOF (errno=%d)\n",
(int)rdp->pio->sock, rc2);
}
rc = S_RD_EOF; /* EOF */
rdp->pio->last_errno= rc2;
rdp->pio->ustate |= S3_USTATE_ERR;
rdp->pio->estate |= S3_ESTATE_ERR;
break;

default:
S3I_DebugLineT ("S3IR_read_soc(%d): egyeb hiba: %d %s\n",
(int)rdp->pio->sock, rc2, strerror (rc2));
exit (16);
rc = S_RD_ERROR;
rdp->pio->last_errno= rc2;
rdp->pio->ustate |= S3_USTATE_ERR;
rdp->pio->estate |= S3_ESTATE_ERR;
break;
}
[/code]

Hozzászólások

Egyebkent lehet, a "No route to host" az egy ICMP valasz azt hiszem, es lehet ily modon filterezni, hogy ez menjen vissza.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()