mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-21 10:11:30 +00:00
SendHeaders converted to QueryDatabase
This commit is contained in:
parent
6e7136ea18
commit
2bdc44dfb2
127
ucs/database.cpp
127
ucs/database.cpp
@ -288,110 +288,93 @@ void Database::SetChannelOwner(std::string channelName, std::string owner) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Database::SendHeaders(Client *c) {
|
void Database::SendHeaders(Client *client) {
|
||||||
|
|
||||||
int UnknownField2 = 25015275;
|
int unknownField2 = 25015275;
|
||||||
int UnknownField3 = 1;
|
int unknownField3 = 1;
|
||||||
|
int characterID = FindCharacter(client->MailBoxName().c_str());
|
||||||
|
|
||||||
int CharacterID = FindCharacter(c->MailBoxName().c_str());
|
_log(UCS__TRACE, "Sendheaders for %s, CharID is %i", client->MailBoxName().c_str(), characterID);
|
||||||
_log(UCS__TRACE, "Sendheaders for %s, CharID is %i", c->MailBoxName().c_str(), CharacterID);
|
|
||||||
if(CharacterID <= 0)
|
if(characterID <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
std::string query = StringFormat("SELECT `msgid`,`timestamp`, `from`, `subject`, `status` "
|
||||||
char errbuf[MYSQL_ERRMSG_SIZE];
|
"FROM `mail` WHERE `charid`=%i", characterID);
|
||||||
char* query = 0;
|
auto results = QueryDatabase(query);
|
||||||
MYSQL_RES *result;
|
if (!results.Success())
|
||||||
MYSQL_ROW row;
|
|
||||||
|
|
||||||
if (!RunQuery(query,MakeAnyLenString(&query, "select `msgid`,`timestamp`,`from`,`subject`, `status` from `mail` "
|
|
||||||
"where `charid`=%i", CharacterID),errbuf,&result)){
|
|
||||||
|
|
||||||
safe_delete_array(query);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
safe_delete_array(query);
|
char buffer[100];
|
||||||
|
|
||||||
char Buf[100];
|
int headerCountPacketLength = 0;
|
||||||
|
|
||||||
uint32 NumRows = mysql_num_rows(result);
|
sprintf(buffer, "%i", client->GetMailBoxNumber());
|
||||||
|
headerCountPacketLength += (strlen(buffer) + 1);
|
||||||
|
|
||||||
int HeaderCountPacketLength = 0;
|
sprintf(buffer, "%i", unknownField2);
|
||||||
|
headerCountPacketLength += (strlen(buffer) + 1);
|
||||||
|
|
||||||
sprintf(Buf, "%i", c->GetMailBoxNumber());
|
sprintf(buffer, "%i", unknownField3);
|
||||||
HeaderCountPacketLength += (strlen(Buf) + 1);
|
headerCountPacketLength += (strlen(buffer) + 1);
|
||||||
|
|
||||||
sprintf(Buf, "%i", UnknownField2);
|
sprintf(buffer, "%i", results.RowCount());
|
||||||
HeaderCountPacketLength += (strlen(Buf) + 1);
|
headerCountPacketLength += (strlen(buffer) + 1);
|
||||||
|
|
||||||
sprintf(Buf, "%i", UnknownField3);
|
EQApplicationPacket *outapp = new EQApplicationPacket(OP_MailHeaderCount, headerCountPacketLength);
|
||||||
HeaderCountPacketLength += (strlen(Buf) + 1);
|
|
||||||
|
|
||||||
sprintf(Buf, "%i", NumRows);
|
char *packetBuffer = (char *)outapp->pBuffer;
|
||||||
HeaderCountPacketLength += (strlen(Buf) + 1);
|
|
||||||
|
|
||||||
EQApplicationPacket *outapp = new EQApplicationPacket(OP_MailHeaderCount, HeaderCountPacketLength);
|
VARSTRUCT_ENCODE_INTSTRING(packetBuffer, client->GetMailBoxNumber());
|
||||||
|
VARSTRUCT_ENCODE_INTSTRING(packetBuffer, unknownField2);
|
||||||
char *PacketBuffer = (char *)outapp->pBuffer;
|
VARSTRUCT_ENCODE_INTSTRING(packetBuffer, unknownField3);
|
||||||
|
VARSTRUCT_ENCODE_INTSTRING(packetBuffer, results.RowCount());
|
||||||
VARSTRUCT_ENCODE_INTSTRING(PacketBuffer, c->GetMailBoxNumber());
|
|
||||||
VARSTRUCT_ENCODE_INTSTRING(PacketBuffer, UnknownField2);
|
|
||||||
VARSTRUCT_ENCODE_INTSTRING(PacketBuffer, UnknownField3);
|
|
||||||
VARSTRUCT_ENCODE_INTSTRING(PacketBuffer, NumRows);
|
|
||||||
|
|
||||||
_pkt(UCS__PACKETS, outapp);
|
_pkt(UCS__PACKETS, outapp);
|
||||||
|
|
||||||
c->QueuePacket(outapp);
|
client->QueuePacket(outapp);
|
||||||
|
|
||||||
safe_delete(outapp);
|
safe_delete(outapp);
|
||||||
|
|
||||||
int RowNum = 0;
|
int rowIndex = 0;
|
||||||
|
for(auto row = results.begin(); row != results.end(); ++row, ++rowIndex) {
|
||||||
|
int headerPacketLength = 0;
|
||||||
|
|
||||||
while((row = mysql_fetch_row(result))) {
|
sprintf(buffer, "%i", client->GetMailBoxNumber());
|
||||||
|
headerPacketLength += strlen(buffer) + 1;
|
||||||
|
sprintf(buffer, "%i", unknownField2);
|
||||||
|
headerPacketLength += strlen(buffer) + 1;
|
||||||
|
sprintf(buffer, "%i", rowIndex);
|
||||||
|
headerPacketLength += strlen(buffer) + 1;
|
||||||
|
|
||||||
|
headerPacketLength += strlen(row[0]) + 1;
|
||||||
|
headerPacketLength += strlen(row[1]) + 1;
|
||||||
|
headerPacketLength += strlen(row[4]) + 1;
|
||||||
|
headerPacketLength += GetMailPrefix().length() + strlen(row[2]) + 1;
|
||||||
|
headerPacketLength += strlen(row[3]) + 1;
|
||||||
|
|
||||||
int HeaderPacketLength = 0;
|
outapp = new EQApplicationPacket(OP_MailHeader, headerPacketLength);
|
||||||
|
|
||||||
sprintf(Buf, "%i", c->GetMailBoxNumber());
|
packetBuffer = (char *)outapp->pBuffer;
|
||||||
HeaderPacketLength = HeaderPacketLength + strlen(Buf) + 1;
|
|
||||||
sprintf(Buf, "%i", UnknownField2);
|
|
||||||
HeaderPacketLength = HeaderPacketLength + strlen(Buf) + 1;
|
|
||||||
sprintf(Buf, "%i", RowNum);
|
|
||||||
HeaderPacketLength = HeaderPacketLength + strlen(Buf) + 1;
|
|
||||||
|
|
||||||
HeaderPacketLength = HeaderPacketLength + strlen(row[0]) + 1;
|
VARSTRUCT_ENCODE_INTSTRING(packetBuffer, client->GetMailBoxNumber());
|
||||||
HeaderPacketLength = HeaderPacketLength + strlen(row[1]) + 1;
|
VARSTRUCT_ENCODE_INTSTRING(packetBuffer, unknownField2);
|
||||||
HeaderPacketLength = HeaderPacketLength + strlen(row[4]) + 1;
|
VARSTRUCT_ENCODE_INTSTRING(packetBuffer, rowIndex);
|
||||||
HeaderPacketLength = HeaderPacketLength + GetMailPrefix().length() + strlen(row[2]) + 1;
|
VARSTRUCT_ENCODE_STRING(packetBuffer, row[0]);
|
||||||
HeaderPacketLength = HeaderPacketLength + strlen(row[3]) + 1;
|
VARSTRUCT_ENCODE_STRING(packetBuffer, row[1]);
|
||||||
|
VARSTRUCT_ENCODE_STRING(packetBuffer, row[4]);
|
||||||
outapp = new EQApplicationPacket(OP_MailHeader, HeaderPacketLength);
|
VARSTRUCT_ENCODE_STRING(packetBuffer, GetMailPrefix().c_str());
|
||||||
|
packetBuffer--;
|
||||||
PacketBuffer = (char *)outapp->pBuffer;
|
VARSTRUCT_ENCODE_STRING(packetBuffer, row[2]);
|
||||||
|
VARSTRUCT_ENCODE_STRING(packetBuffer, row[3]);
|
||||||
VARSTRUCT_ENCODE_INTSTRING(PacketBuffer, c->GetMailBoxNumber());
|
|
||||||
VARSTRUCT_ENCODE_INTSTRING(PacketBuffer, UnknownField2);
|
|
||||||
VARSTRUCT_ENCODE_INTSTRING(PacketBuffer, RowNum);
|
|
||||||
VARSTRUCT_ENCODE_STRING(PacketBuffer, row[0]);
|
|
||||||
VARSTRUCT_ENCODE_STRING(PacketBuffer, row[1]);
|
|
||||||
VARSTRUCT_ENCODE_STRING(PacketBuffer, row[4]);
|
|
||||||
VARSTRUCT_ENCODE_STRING(PacketBuffer, GetMailPrefix().c_str()); PacketBuffer--;
|
|
||||||
VARSTRUCT_ENCODE_STRING(PacketBuffer, row[2]);
|
|
||||||
VARSTRUCT_ENCODE_STRING(PacketBuffer, row[3]);
|
|
||||||
|
|
||||||
_pkt(UCS__PACKETS, outapp);
|
_pkt(UCS__PACKETS, outapp);
|
||||||
|
|
||||||
c->QueuePacket(outapp);
|
client->QueuePacket(outapp);
|
||||||
|
|
||||||
safe_delete(outapp);
|
safe_delete(outapp);
|
||||||
|
|
||||||
RowNum++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mysql_free_result(result);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Database::SendBody(Client *c, int MessageNumber) {
|
void Database::SendBody(Client *c, int MessageNumber) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user