@@ -481,7 +481,7 @@ BOOL MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCTSTR lpszC
481481 {
482482 if (pSt_ProtocolHdr->byIsReply || (XENGINE_MQAPP_NETTYPE_HTTP == nNetType))
483483 {
484- pSt_ProtocolHdr->wReserve = 761 ;
484+ pSt_ProtocolHdr->wReserve = 751 ;
485485 ProtocolModule_Packet_Common (nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen);
486486 XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, nNetType);
487487 }
@@ -499,7 +499,7 @@ BOOL MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCTSTR lpszC
499499 {
500500 if (pSt_ProtocolHdr->byIsReply || (XENGINE_MQAPP_NETTYPE_HTTP == nNetType))
501501 {
502- pSt_ProtocolHdr->wReserve = 762 ;
502+ pSt_ProtocolHdr->wReserve = 752 ;
503503 ProtocolModule_Packet_Common (nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen);
504504 XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, nNetType);
505505 }
@@ -531,7 +531,7 @@ BOOL MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCTSTR lpszC
531531 {
532532 if (pSt_ProtocolHdr->byIsReply || (XENGINE_MQAPP_NETTYPE_HTTP == nNetType))
533533 {
534- pSt_ProtocolHdr->wReserve = 0 ;
534+ pSt_ProtocolHdr->wReserve = 761 ;
535535 ProtocolModule_Packet_Common (nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen);
536536 XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, nNetType);
537537 }
@@ -661,20 +661,39 @@ BOOL MessageQueue_TCP_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCTSTR lpszC
661661 }
662662 else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REQTOPICMODIFY == pSt_ProtocolHdr->unOperatorCode )
663663 {
664+ pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICMODIFY;
664665 XENGINE_MQTOPIC st_MQTopic;
665666 memset (&st_MQTopic, ' \0 ' , sizeof (XENGINE_MQTOPIC));
666667
667668 memcpy (&st_MQTopic, lpszMsgBuffer + sizeof (XENGINE_PROTOCOL_XMQ), sizeof (XENGINE_MQTOPIC));
669+ // 验证所有者
670+ XENGINE_DBTOPICOWNER st_DBOwner;
671+ memset (&st_DBOwner, ' \0 ' , sizeof (XENGINE_DBTOPICOWNER));
672+
673+ _tcscpy (st_DBOwner.tszUserName , tszUserName);
674+ _tcscpy (st_DBOwner.tszQueueName , st_MQProtocol.tszMQKey );
675+
676+ if (!DBModule_MQUser_OwnerQuery (&st_DBOwner))
677+ {
678+ if (pSt_ProtocolHdr->byIsReply || (XENGINE_MQAPP_NETTYPE_HTTP == nNetType))
679+ {
680+ pSt_ProtocolHdr->wReserve = 781 ;
681+ ProtocolModule_Packet_Common (nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen);
682+ XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, nNetType);
683+ }
684+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T (" %s消息端:%s,修改主题失败,可能用户不拥有主题,主题名称:%s,无法继续,错误:%lX" ), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey , DBModule_GetLastError ());
685+ return FALSE ;
686+ }
687+ // 修改主题
668688 if (!DBModule_MQData_ModifyTable (st_MQProtocol.tszMQKey , st_MQTopic.tszMQKey ))
669689 {
670- pSt_ProtocolHdr->wReserve = 781 ;
690+ pSt_ProtocolHdr->wReserve = 782 ;
671691 ProtocolModule_Packet_Common (nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen);
672692 XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, nNetType);
673693 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T (" %s消息端:%s,修改主题名称失败,原名称:%s,目标名:%s,错误:%lX" ), lpszClientType, lpszClientAddr, st_MQProtocol.tszMQKey , st_MQTopic.tszMQKey , DBModule_GetLastError ());
674694 return FALSE ;
675695 }
676696 pSt_ProtocolHdr->wReserve = 0 ;
677- pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_MQ_REPTOPICMODIFY;
678697
679698 ProtocolModule_Packet_Common (nNetType, pSt_ProtocolHdr, &st_MQProtocol, tszSDBuffer, &nSDLen);
680699 XEngine_MQXService_Send (lpszClientAddr, tszSDBuffer, nSDLen, nNetType);
0 commit comments