Systems other then Linux are more picky with the addr length passed to getnameinfo. They expect it to be set from the returned length of the call to getsockname. Also added a couple of dprints in error cases. Signed-off-by: Boaz Harrosh <bharrosh at panasas.com> --- usr/iscsi/iscsid.c | 28 +++++++++++++++++++++++----- 1 files changed, 23 insertions(+), 5 deletions(-) diff --git a/usr/iscsi/iscsid.c b/usr/iscsi/iscsid.c index bfaec87..dca926e 100644 --- a/usr/iscsi/iscsid.c +++ b/usr/iscsi/iscsid.c @@ -743,6 +743,7 @@ static void text_scan_text(struct iscsi_connection *conn) { char *key, *value, *data; int datasize; + int ret; data = conn->req.data; datasize = conn->req.datasize; @@ -760,22 +761,37 @@ static void text_scan_text(struct iscsi_connection *conn) blen = sizeof(buf); slen = sizeof(ss); - conn->tp->ep_getsockname(conn, (struct sockaddr *) &ss, - &slen); + ret = conn->tp->ep_getsockname(conn, + (struct sockaddr *) &ss, &slen); + if (ret) + eprintf("getsockname Faild=>%d\n", ret); + if (ss.ss_family == AF_INET6) { *p++ = '['; blen--; } +#ifndef __MAKE_TGT_ON_BSD__ slen = sizeof(ss); - getnameinfo((struct sockaddr *) &ss, slen, p, blen, - NULL, 0, NI_NUMERICHOST); +#else + slen = ((struct sockaddr *)&ss)->sa_len; +#endif + ret = getnameinfo((struct sockaddr *) &ss, slen, p, + blen, NULL, 0, NI_NUMERICHOST); + if (ret) { + eprintf("getnameinfo Faild=>%d: %s\n", + ret, gai_strerror(ret)); + /* Let failure show in target traces */ + strcpy(p, "getnameinfo_Faild"); + } p = buf + strlen(buf); if (ss.ss_family == AF_INET6) *p++ = ']'; + dprintf("getnameinfo => %s\n", buf); + sprintf(p, ":%d,1", ISCSI_LISTEN_PORT); target_list_build(conn, buf, strcmp(value, "All") ? value : NULL); @@ -2071,8 +2087,10 @@ again: case IOSTATE_TX_DATA: ret = do_send(conn, ddigest ? IOSTATE_TX_INIT_DDIGEST : IOSTATE_TX_END); - if (ret < 0) + if (ret < 0) { + dprintf("do_send => %d\n", ret); goto out; + } if (conn->tx_iostate != IOSTATE_TX_INIT_DDIGEST) break; case IOSTATE_TX_INIT_DDIGEST: -- 1.6.0.6 -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html |