From: Robert W. <wrw...@us...> - 2007-08-23 20:02:18
|
Update of /cvsroot/linuxisns/isnsNT/isnsserver/src In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv24581/src Modified Files: iSNSLinux.c iSNScomm.c iSNSparse.c iSNStrcv.c Log Message: fixed error in rcv buffer pointers Index: iSNSparse.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSparse.c,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** iSNSparse.c 23 Aug 2007 02:50:20 -0000 1.22 --- iSNSparse.c 23 Aug 2007 20:02:11 -0000 1.23 *************** *** 70,85 **** key_index[ii] = NULL; ! if ((msg->hdr.type > ISNS_END_VALID_REQ_FUNC_ID) ! && (msg->hdr.type < ISNS_START_VALID_RES_FUNC_ID)) ! return (SUCCESS); - if (msg->hdr.type == ISNS_HEART_BEAT) - return (SUCCESS); switch (msg->hdr.type) { case ISNS_REG_DEV_ATTR_REQ: case ISNS_ESI: - case ISNS_ESI_RSP: - case ISNS_SCN_RES: case ISNS_SCN: case ISNS_DEV_GET_NXT_REQ: --- 70,86 ---- key_index[ii] = NULL; ! //if ((msg->hdr.type > ISNS_END_VALID_REQ_FUNC_ID) ! // && (msg->hdr.type < ISNS_START_VALID_RES_FUNC_ID)) ! // return (SUCCESS); ! // ! //if (msg->hdr.type == ISNS_HEART_BEAT) ! // return (SUCCESS); switch (msg->hdr.type) { + case ISNS_HEART_BEAT: + return (SUCCESS); case ISNS_REG_DEV_ATTR_REQ: case ISNS_ESI: case ISNS_SCN: case ISNS_DEV_GET_NXT_REQ: *************** *** 96,101 **** --- 97,117 ---- case ISNS_DD_GET_NXT_ISCSI_MEMBER_REQ: case ISNS_ENTITY_GET_NXT_PORTAL_REQ: + + case ISNS_REG_DEV_ATTR_RES: case ISNS_DEV_ATTR_QRY_RES: + case ISNS_DEV_GET_NXT_RES: case ISNS_DEREG_DEV_RES: + case ISNS_SCN_REG_RES: + case ISNS_SCN_DEREG_RES: + case ISNS_SCN_EVENT_RES: + case ISNS_SCN_RES: + case ISNS_REG_DD_RES: + case ISNS_DEREG_DD_RES: + case ISNS_REG_DDS_RES: + case ISNS_DEREG_DDS_RES: + case ISNS_ESI_RSP: + case ISNS_DDS_GET_NXT_MEMBER_RES: + case ISNS_DD_GET_NXT_ISCSI_MEMBER_RES: + case ISNS_ENTITY_GET_NXT_PORTAL_RES: parse_status = ISNSProfileKeysAttr (msg, attr_index, &num_attrs, key_index, &num_keys, (ISNS_Attr **)src_attr); *************** *** 104,112 **** break; default: ! if (msg->hdr.type & 0x8000) ! return (SUCCESS); ! parse_status = ERROR; ! __LOG_ERROR ("ISNSParseMSG error for msg->hdr.type=0x%x\n",msg->hdr.type); break; } --- 120,127 ---- break; default: ! //if (msg->hdr.type & 0x8000) ! // return (SUCCESS); parse_status = ERROR; ! __LOG_ERROR ("ISNSParseMSG error for msg->hdr.type=0x%x unimplemented message type\n",msg->hdr.type); break; } Index: iSNScomm.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNScomm.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** iSNScomm.c 7 Aug 2007 14:41:47 -0000 1.11 --- iSNScomm.c 23 Aug 2007 20:02:11 -0000 1.12 *************** *** 397,400 **** --- 397,402 ---- char dot_not_addr[INET_ADDR_LEN]; + __DEBUG (sns_comm_debug &1,ISNSSendMsg_TCP); + SNSConvertPayloadHTON(&p_md->msg); *************** *** 419,422 **** --- 421,425 ---- } + __DEBUG (sns_comm_debug &1,ISNSSendMsg_TCP finished); return (SUCCESS); } Index: iSNSLinux.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSLinux.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** iSNSLinux.c 23 Aug 2007 02:50:20 -0000 1.14 --- iSNSLinux.c 23 Aug 2007 20:02:11 -0000 1.15 *************** *** 211,216 **** } ! rc = mkdir("/var/opt/isns",0777); ! rc = chdir("/var/opt/isns"); if (daemon_state == TRUE) --- 211,216 ---- } ! rc = mkdir("/var/isns",0777); ! rc = chdir("/var/isns"); if (daemon_state == TRUE) Index: iSNStrcv.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNStrcv.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** iSNStrcv.c 23 Aug 2007 02:50:21 -0000 1.7 --- iSNStrcv.c 23 Aug 2007 20:02:11 -0000 1.8 *************** *** 227,237 **** /* Parse Msg */ ! while (pending>=sizeof(SNS_Msg_Hdr)) { p_msg=(struct sns_msg_hdr *)&buffer[startIndex]; msg_size=sizeof(SNS_Msg_Hdr)+ntohs(p_msg->msg_len); ! if (pending<msg_size) break; p_msg->type = ntohs (p_msg->type); --- 227,242 ---- /* Parse Msg */ ! __DEBUG(sns_tcp_debug &1,"recvsize:%i pending:%i",i,pending); ! ! while ( pending >= sizeof(SNS_Msg_Hdr) ) { p_msg=(struct sns_msg_hdr *)&buffer[startIndex]; msg_size=sizeof(SNS_Msg_Hdr)+ntohs(p_msg->msg_len); ! if ( pending < msg_size) ! { ! __DEBUG(sns_tcp_debug &1,"pending:%i is less than msg_size:%i",pending,msg_size); break; + } p_msg->type = ntohs (p_msg->type); *************** *** 250,258 **** memcpy(&md.msg, p_msg, msg_size); ! __DEBUG(sns_tcp_debug &1, (TCP rcv size %d), msg_size); while (!sns_ready) { sleep(1); } SendIPCMessage(SNS_EP, (void *)&md, sizeof(SNS_Msg_Cb) + sizeof(SNS_Msg_Hdr) + p_msg->msg_len, 0); --- 255,264 ---- memcpy(&md.msg, p_msg, msg_size); ! __DEBUG(sns_tcp_debug &1, (ISNSPDU rcv size %d), msg_size); while (!sns_ready) { sleep(1); } + __DEBUG(sns_tcp_debug &1,SendIPCMessage msg_len:%i,p_msg->msg_len); SendIPCMessage(SNS_EP, (void *)&md, sizeof(SNS_Msg_Cb) + sizeof(SNS_Msg_Hdr) + p_msg->msg_len, 0); *************** *** 266,269 **** --- 272,285 ---- endIndex=0; } + else + { + __DEBUG(sns_tcp_debug &1,??? pending non-zero:%i,pending); + /* copy buffer from StartIndex begining of buffer with size of pending */ + memcpy(buffer, &buffer[startIndex], pending); + + /* set endIndex=pending set startIndex = 0 */ + endIndex = pending; + startIndex = 0; + } } |