Ver código fonte

Assert NULL bug

zhangbo 3 anos atrás
pai
commit
f7a833a94f

+ 1 - 1
app/bmc/ipmb/IPMBIfc.c

@@ -329,7 +329,7 @@ ProcessIPMBReq ( MsgPkt_T* pReq)
 
     int i;
     for(i=0;i<ResPkt.Size;i++)
-        printf("%#x ", ResPkt.Data[i]);
+        printf("%02x ", ResPkt.Data[i]);
     printf("\n");
 	
     if (0 != RetVal)

+ 4 - 4
app/bmc/msghndlr/MsgHndlrTask.c

@@ -431,10 +431,10 @@ ProcessIPMIReq (MsgPkt_T* pReq, MsgPkt_T* pRes)
 					//pRes->Data[pRes->Size-1] = 0;
 					memcpy (&m_PendingBridgedResTbl[PBTbl][SeqNum].ResMsgHdr, pRes->Data, sizeof (IPMIUDSMsg_T));	
 					m_PendingBridgedResTbl[PBTbl][SeqNum].UDSSocket = pRes->Socket;
-					printf("log666 \n");
-					for(i=0;i<sizeof (IPMIUDSMsg_T);i++)
-						printf("%#x ", pRes->Data[i]);
-					printf("\n");
+					// printf("log666 \n");
+					// for(i=0;i<sizeof (IPMIUDSMsg_T);i++)
+					// 	printf("%#x ", pRes->Data[i]);
+					// printf("\n");
 				}
 				 m_PendingBridgedResTbl[PBTbl][SeqNum].ResDataOk = 1;
 				 break;    

+ 1 - 1
app/common_include/com_IPMIDefs.h

@@ -57,7 +57,7 @@
 #define MAX_SENSOR_NUMBERS      32
 #define DEFAULT_TIMEOUT			10
 #define MAX_USER_NUM			(10)
-#define MAX_SEL_RECORD			(100)
+#define MAX_SEL_RECORD			(50)		//(100)
 #define MAX_ID_STR_LEN  		16
 #define MAX_FRU_SDR_STR_SIZE 	40
 #define MAX_SENSOR_INFO_SIZE	(1024)

+ 1 - 1
app/goahead-3.6.5/src/action.c

@@ -29,7 +29,7 @@ static bool actionHandler(Webs *wp)
     WebsAction  fn;
 
     char *index = websGetVar(wp, "index", NULL);  
-    printf("---1111111111111111111111111111> wp.index = %s\n", index);
+//    printf("---1111111111111111111111111111> wp.index = %s\n", index);
     uint8_t indexInt = atoi(index);
     wp->index = indexInt;
 

+ 2 - 0
app/goahead-3.6.5/src/http.c

@@ -795,6 +795,8 @@ static void readEvent(Webs *wp)
         if (!bufGrow(rxbuf, (ME_GOAHEAD_LIMIT_BUFFER+1))) {
             websError(wp, HTTP_CODE_INTERNAL_SERVER_ERROR, "Cannot grow rxbuf");
             websPump(wp);
+            printf("jimbo exit goahead\n");
+            exit(0);        //jimbo add. 强制退出goahead,然后让damon.sh脚本重启goahead。
             return;
         }
     }

+ 2 - 0
app/goahead-3.6.5/src/socket.c

@@ -969,6 +969,8 @@ WebsSocket *socketPtr(int sid)
     if (sid < 0 || sid >= socketMax || socketList[sid] == NULL) {
         assert(NULL);
         errno = EBADF;
+        printf("jimbo exit goahead, sid %d, socketMax %d\n", sid, socketMax);
+        exit(0);
         return NULL;
     }
     assert(socketList[sid]);

+ 126 - 68
app/goahead-3.6.5/src/web_interface/src/dashboard.c

@@ -342,54 +342,54 @@ void getSensorInfo(Webs *wp){
             sprintf(minReading, "%.3f", pSensorBuff->min_reading);
 
             cJSON_AddItemToArray(pJsonArry,pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对对象*/
-            cJSON_AddNumberToObject(pJsonsub, "Num", pSensorBuff->sensor_num);  //sensorNum -> Num
-            cJSON_AddStringToObject(pJsonsub, "Nam", pSensorBuff->sensor_name); //sensorName -> Nam
-            cJSON_AddStringToObject(pJsonsub, "rad", reading);      //reading -> rad
-            cJSON_AddStringToObject(pJsonsub, "lnr", lownr);        //lownr -> lnr                                 
-            cJSON_AddStringToObject(pJsonsub, "lct", lowct);        //lowct -> lct
-            cJSON_AddStringToObject(pJsonsub, "lnc", lownc);        //lownc -> lnc                                                     
-            cJSON_AddStringToObject(pJsonsub, "hnc", highnc);       //highnc -> hnc           
-            cJSON_AddStringToObject(pJsonsub, "hct", highct);       //highct -> hct
-            cJSON_AddStringToObject(pJsonsub, "hnr", highnr);       //highnr -> hnr
-            cJSON_AddStringToObject(pJsonsub, "max", maxReading);   //maxReading -> max
-            cJSON_AddStringToObject(pJsonsub, "min", minReading);   //minReading -> min
-
-            // cJSON_AddNumberToObject(pJsonsub, "sensorNum", pSensorBuff->sensor_num); 
-            // cJSON_AddStringToObject(pJsonsub, "sensorName", pSensorBuff->sensor_name);
-            // cJSON_AddStringToObject(pJsonsub, "reading", reading);      /* 给对象增加内容 */    
-            // cJSON_AddStringToObject(pJsonsub, "lownr", lownr);                                        
-            // cJSON_AddStringToObject(pJsonsub, "lowct", lowct);   
-            // cJSON_AddStringToObject(pJsonsub, "lownc", lownc);                                                       
-            // cJSON_AddStringToObject(pJsonsub, "highnc", highnc);                 
-            // cJSON_AddStringToObject(pJsonsub, "highct", highct);   
-            // cJSON_AddStringToObject(pJsonsub, "highnr", highnr);  
-            // cJSON_AddStringToObject(pJsonsub, "maxReading", maxReading);  
-            // cJSON_AddStringToObject(pJsonsub, "minReading", minReading);  
+            // cJSON_AddNumberToObject(pJsonsub, "Num", pSensorBuff->sensor_num);  //sensorNum -> Num
+            // cJSON_AddStringToObject(pJsonsub, "Nam", pSensorBuff->sensor_name); //sensorName -> Nam
+            // cJSON_AddStringToObject(pJsonsub, "rad", reading);      //reading -> rad
+            // cJSON_AddStringToObject(pJsonsub, "lnr", lownr);        //lownr -> lnr                                 
+            // cJSON_AddStringToObject(pJsonsub, "lct", lowct);        //lowct -> lct
+            // cJSON_AddStringToObject(pJsonsub, "lnc", lownc);        //lownc -> lnc                                                     
+            // cJSON_AddStringToObject(pJsonsub, "hnc", highnc);       //highnc -> hnc           
+            // cJSON_AddStringToObject(pJsonsub, "hct", highct);       //highct -> hct
+            // cJSON_AddStringToObject(pJsonsub, "hnr", highnr);       //highnr -> hnr
+            // cJSON_AddStringToObject(pJsonsub, "max", maxReading);   //maxReading -> max
+            // cJSON_AddStringToObject(pJsonsub, "min", minReading);   //minReading -> min
+
+            cJSON_AddNumberToObject(pJsonsub, "sensorNum", pSensorBuff->sensor_num); 
+            cJSON_AddStringToObject(pJsonsub, "sensorName", pSensorBuff->sensor_name);
+            cJSON_AddStringToObject(pJsonsub, "reading", reading);      /* 给对象增加内容 */    
+            cJSON_AddStringToObject(pJsonsub, "lownr", lownr);                                        
+            cJSON_AddStringToObject(pJsonsub, "lowct", lowct);   
+            cJSON_AddStringToObject(pJsonsub, "lownc", lownc);                                                       
+            cJSON_AddStringToObject(pJsonsub, "highnc", highnc);                 
+            cJSON_AddStringToObject(pJsonsub, "highct", highct);   
+            cJSON_AddStringToObject(pJsonsub, "highnr", highnr);  
+            cJSON_AddStringToObject(pJsonsub, "maxReading", maxReading);  
+            cJSON_AddStringToObject(pJsonsub, "minReading", minReading);  
 
             switch(pSensorBuff->sensor_units[1])    //sensorUinits2 //uit
             {
-            case 0: cJSON_AddStringToObject(pJsonsub, "uit", "unspecified"); break;   //uint -> uit                 
-            case 1: cJSON_AddStringToObject(pJsonsub, "uit", "degree C"); break;
-            case 2: cJSON_AddStringToObject(pJsonsub, "uit", "degree F"); break;
-            case 3: cJSON_AddStringToObject(pJsonsub, "uit", "degree K"); break;
-            case 4: cJSON_AddStringToObject(pJsonsub, "uit", "Volts"); break;
-            case 5: cJSON_AddStringToObject(pJsonsub, "uit", "Amps"); break;
-            case 6: cJSON_AddStringToObject(pJsonsub, "uit", "Watts"); break;
-            case 18: cJSON_AddStringToObject(pJsonsub, "uit", "RPM"); break;
-            default: cJSON_AddStringToObject(pJsonsub, "uit", "unknown"); break;
+            case 0: cJSON_AddStringToObject(pJsonsub, "unit", "unspecified"); break;   //uint -> uit                 
+            case 1: cJSON_AddStringToObject(pJsonsub, "unit", "degree C"); break;
+            case 2: cJSON_AddStringToObject(pJsonsub, "unit", "degree F"); break;
+            case 3: cJSON_AddStringToObject(pJsonsub, "unit", "degree K"); break;
+            case 4: cJSON_AddStringToObject(pJsonsub, "unit", "Volts"); break;
+            case 5: cJSON_AddStringToObject(pJsonsub, "unit", "Amps"); break;
+            case 6: cJSON_AddStringToObject(pJsonsub, "unit", "Watts"); break;
+            case 18: cJSON_AddStringToObject(pJsonsub, "unit", "RPM"); break;
+            default: cJSON_AddStringToObject(pJsonsub, "unit", "unknown"); break;
             }
 
             switch(pSensorBuff->sensor_state)   //sta
             {                                       //state -> ste ;  status -> stu
-            case 0x1:  cJSON_AddStringToObject(pJsonsub, "ste", "ok"); cJSON_AddStringToObject(pJsonsub, "stu", "1"); break;
-            case 0x2:  cJSON_AddStringToObject(pJsonsub, "ste", "Upper Non-Critical"); cJSON_AddStringToObject(pJsonsub, "stu", "2"); break;    
-            case 0x4:  cJSON_AddStringToObject(pJsonsub, "ste", "Upper Critical Threshold");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;    
-            case 0x8:  cJSON_AddStringToObject(pJsonsub, "ste", "Lower Non-Critical");cJSON_AddStringToObject(pJsonsub, "stu", "2"); break;    
-            case 0x10:  cJSON_AddStringToObject(pJsonsub, "ste", "Lower Critical");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;    
-            case 0x20:  cJSON_AddStringToObject(pJsonsub, "ste", "Access failed");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;    
-            case 0x40:  cJSON_AddStringToObject(pJsonsub, "ste", "Upper Non-Recoverable");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;    
-            case 0x80:  cJSON_AddStringToObject(pJsonsub, "ste", "Lower Non-Recoverable");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;    
-            default:  cJSON_AddNumberToObject(pJsonsub, "ste", pSensorBuff->sensor_state);cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;      
+            case 0x1:  cJSON_AddStringToObject(pJsonsub, "state", "ok"); cJSON_AddStringToObject(pJsonsub, "status", "1"); break;
+            case 0x2:  cJSON_AddStringToObject(pJsonsub, "state", "Upper Non-Critical"); cJSON_AddStringToObject(pJsonsub, "status", "2"); break;    
+            case 0x4:  cJSON_AddStringToObject(pJsonsub, "state", "Upper Critical Threshold");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;    
+            case 0x8:  cJSON_AddStringToObject(pJsonsub, "state", "Lower Non-Critical");cJSON_AddStringToObject(pJsonsub, "status", "2"); break;    
+            case 0x10:  cJSON_AddStringToObject(pJsonsub, "state", "Lower Critical");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;    
+            case 0x20:  cJSON_AddStringToObject(pJsonsub, "state", "Access failed");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;    
+            case 0x40:  cJSON_AddStringToObject(pJsonsub, "state", "Upper Non-Recoverable");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;    
+            case 0x80:  cJSON_AddStringToObject(pJsonsub, "state", "Lower Non-Recoverable");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;    
+            default:  cJSON_AddNumberToObject(pJsonsub, "state", pSensorBuff->sensor_state);cJSON_AddStringToObject(pJsonsub, "status", "3"); break;      
             }
      
             pSensorBuff++;
@@ -487,25 +487,28 @@ void getAllBladeInfo(Webs *wp){
     //Close session
     LIBIPMI_CloseSession(&UDSSession );
     
-    char *pStr;
-    cJSON * root =  cJSON_CreateObject();
-    cJSON  *pJsonArry,*pJsonsub;
-    pJsonArry=cJSON_CreateArray();   /*创建数组*/
-    cJSON_AddItemToObject(root, "data", pJsonArry);//根节点下添加
-    cJSON_AddStringToObject(root, "msg", "");
-    cJSON_AddNumberToObject(root, "code", 200);
+    websSetStatus(wp, 200);
+    websWriteHeaders(wp, -1, 0);
+    websWriteEndHeaders(wp);
+    websWrite(wp, "{\"data\":[");
 
     int i;
     for(i=0;i<BLADE_NUMBERS;i++)
     {
-        cJSON_AddItemToArray(pJsonArry,pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对对象*/
-        cJSON_AddNumberToObject(pJsonsub, "present", pBladeStatus[i].present);  //0:不在位,1:在位
-        cJSON_AddNumberToObject(pJsonsub, "status", pBladeStatus[i].healthStatus); //0:灰色, 1: 绿色 2:红色
-        cJSON_AddNumberToObject(pJsonsub, "slot", pBladeStatus[i].slotID); 
-        cJSON_AddNumberToObject(pJsonsub, "power", pBladeStatus[i].pwrStatus); 
-        cJSON_AddStringToObject(pJsonsub, "name", pBladeStatus[i].bladeName); 
-        cJSON_AddNumberToObject(pJsonsub, "isChMC", pBladeStatus[i].isChMC); 
-
+        
+        if(i < BLADE_NUMBERS-1)
+        {
+            websWrite(wp, "{\"present\":%d,\"status\":%d,\"slot\":%d,\"power\":%d,\"name\":\"%s\",\"isChMC\":%d},",
+                pBladeStatus[i].present, pBladeStatus[i].healthStatus, pBladeStatus[i].slotID, 
+                pBladeStatus[i].pwrStatus, pBladeStatus[i].bladeName, pBladeStatus[i].isChMC);
+        }
+        else
+        {
+            websWrite(wp, "{\"present\":%d,\"status\":%d,\"slot\":%d,\"power\":%d,\"name\":\"%s\",\"isChMC\":%d}",
+                pBladeStatus[i].present, pBladeStatus[i].healthStatus, pBladeStatus[i].slotID, 
+                pBladeStatus[i].pwrStatus, pBladeStatus[i].bladeName, pBladeStatus[i].isChMC);
+        }
+        
         //将主模块的IPMB地址改成0x20
         if(pBladeStatus[i].isChMC)
         {
@@ -513,26 +516,81 @@ void getAllBladeInfo(Webs *wp){
             printf("Modify %d blade ipmb address to 0x20\n", i);
         }
     }
-  
-    pStr = cJSON_PrintUnformatted(root);
 
-    websSetStatus(wp, 200);
-    websWriteHeaders(wp, -1, 0);
-    websWriteEndHeaders(wp);
-    websWrite(wp, "%s", pStr);
+    websWrite(wp, "],\"msg\":\"\",\"code\":200}");
     websFlush(wp, 0);
     websDone(wp);
-    printf("cJSON:%s\n", pStr);
-
-    if(pStr)
-        wfree(pStr);
-    if(root)
-        cJSON_Delete(root);
+   
     if(pBladeStatus)
         wfree(pBladeStatus);
 
 }
 
+// void getAllBladeInfo(Webs *wp){
+//     uint16_t    wRet = LIBIPMI_E_SUCCESS;
+    
+//     IPMI20_UDS_SESSION_T    UDSSession;
+//     BladeStatus_T   *pBladeStatus = walloc(BLADE_NUMBERS*sizeof(BladeStatus_T));
+//     //Create session
+//     LIBIPMI_CreateSession(&UDSSession, DEFAULT_TIMEOUT);
+
+//     wRet = LIBIPMI_HL_GetAllBladeStatus(&UDSSession, gChassisManageEn, pBladeStatus, DEFAULT_TIMEOUT);
+//     if(wRet != 0)
+//     {
+//         printf("Get Blade status error!\n");
+//         websError(wp, 404, "Get Blade status error!");
+//         wfree(pBladeStatus);
+//         return;
+//     }
+//     //Close session
+//     LIBIPMI_CloseSession(&UDSSession );
+    
+//     char *pStr;
+//     cJSON * root =  cJSON_CreateObject();
+//     cJSON  *pJsonArry,*pJsonsub;
+//     pJsonArry=cJSON_CreateArray();   /*创建数组*/
+//     cJSON_AddItemToObject(root, "data", pJsonArry);//根节点下添加
+//     cJSON_AddStringToObject(root, "msg", "");
+//     cJSON_AddNumberToObject(root, "code", 200);
+
+//     int i;
+//     for(i=0;i<BLADE_NUMBERS;i++)
+//     {
+//         cJSON_AddItemToArray(pJsonArry,pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对对象*/
+//         cJSON_AddNumberToObject(pJsonsub, "present", pBladeStatus[i].present);  //0:不在位,1:在位
+//         cJSON_AddNumberToObject(pJsonsub, "status", pBladeStatus[i].healthStatus); //0:灰色, 1: 绿色 2:红色
+//         cJSON_AddNumberToObject(pJsonsub, "slot", pBladeStatus[i].slotID); 
+//         cJSON_AddNumberToObject(pJsonsub, "power", pBladeStatus[i].pwrStatus); 
+//         cJSON_AddStringToObject(pJsonsub, "name", pBladeStatus[i].bladeName); 
+//         cJSON_AddNumberToObject(pJsonsub, "isChMC", pBladeStatus[i].isChMC); 
+
+//         //将主模块的IPMB地址改成0x20
+//         if(pBladeStatus[i].isChMC)
+//         {
+//             gIPMBAddr[i] = 0x20;
+//             printf("Modify %d blade ipmb address to 0x20\n", i);
+//         }
+//     }
+  
+//     pStr = cJSON_PrintUnformatted(root);
+
+//     websSetStatus(wp, 200);
+//     websWriteHeaders(wp, -1, 0);
+//     websWriteEndHeaders(wp);
+//     websWrite(wp, "%s", pStr);
+//     websFlush(wp, 0);
+//     websDone(wp);
+//     printf("cJSON:%s\n", pStr);
+
+//     if(pStr)
+//         wfree(pStr);
+//     if(root)
+//         cJSON_Delete(root);
+//     if(pBladeStatus)
+//         wfree(pBladeStatus);
+
+// }
+
 //废弃
 void setBladeManage(Webs *wp){
     char *strEnable = websGetVar(wp, "enable", NULL);

+ 4 - 25
app/goahead-3.6.5/src/web_interface/src/remote_control.c

@@ -108,8 +108,6 @@ void getChassisStatus(Webs *wp)
     uint8_t target_addr;
     uint16_t wRet;
 
-    //wp->index = 1;
-
 	//Create session
     LIBIPMI_CreateSession(&UDSSession, DEFAULT_TIMEOUT);
     target_addr = gIPMBAddr[wp->index];
@@ -125,32 +123,13 @@ void getChassisStatus(Webs *wp)
     LIBIPMI_CloseSession(&UDSSession );
 
     
-    cJSON * root =  cJSON_CreateObject();
-    cJSON * data =  cJSON_CreateObject();
-    cJSON_AddItemToObject(root, "data", data);//根节点下添加
-    cJSON_AddStringToObject(root, "msg", "");
-    cJSON_AddNumberToObject(root, "code", 200);
-    if(chassisSta.power_state == 0)
-    {
-    	cJSON_AddStringToObject(data, "powerStatus", "off" );
-    }
-    else
-    {
-    	cJSON_AddStringToObject(data, "powerStatus", "on" );	
-    }
-
-    char *pStr;
-    pStr = cJSON_PrintUnformatted(root); 
     websSetStatus(wp, 200);
     websWriteHeaders(wp, -1, 0);
     websWriteEndHeaders(wp);
-    websWrite(wp, "%s", pStr);
+    if(chassisSta.power_state == 0)
+        websWrite(wp, "{\"data\":{\"powerStatus\":\"on\"},\"msg\":\"\",\"code\":200}");
+    else
+        websWrite(wp, "{\"data\":{\"powerStatus\":\"off\"},\"msg\":\"\",\"code\":200}");
     websFlush(wp, 0);	
     websDone(wp);
-    printf("cJSON:%s\n",pStr);
-
-    if(pStr)
-        wfree(pStr);
-    if(root)
-        cJSON_Delete(root);
 }

+ 2 - 0
app/goahead-3.6.5/src/web_interface/src/sel.c

@@ -267,6 +267,8 @@ void GetAllSELEntriesSorted(Webs *wp)
 
                 if(RecID == 0xffff) //last record
                     break;
+
+                usleep(1);
             }
         }
     }