View Single Post
  #12  
Old 01-06-2018, 12:21 AM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Do you mean the
Code:
void Client::SendBazaarResults(...)
..declaration?

The 'void' in that case just indicates the type of object that is expected to be returned once the function has reached a termination point.

For instance:
Code:
void Foo() {
    return;
}
..returns absolutely nothing.

Code:
short Foo() {
    short number = 12345;
    return number;
}
..returns an explicitly declared 'short-'sized value

Code:
short Foo() {
    return 12345;
}
..returns an implicitly converted (coerced) 'short-'sized value

Code:
const char* Foo() {
    return "Hello World!";
}
..returns a const char pointer to the address where "Hello World!" is stored
(known as a c-string and is essentially just an array of chars with a null terminator character at the end.)


In the case of the bazaar function, no return is expected. Any action is predicated on the values passed into the function and by the Client object itself.

I'm really only seeing one fail point in the generation code that would cause an early return:
Code:
if (!results.Success()) {
	return;
}
You've also got these two points:
Code:
if (results.RowCount() == static_cast<unsigned long>(RuleI(Bazaar, MaxSearchResults)))
	Message(15, "Your search reached the limit of %i results. Please narrow your search down by selecting more options.", RuleI(Bazaar, MaxSearchResults));

if(results.RowCount() == 0) {
	auto outapp2 = new EQApplicationPacket(OP_BazaarSearch, sizeof(BazaarReturnDone_Struct));
	BazaarReturnDone_Struct *brds = (BazaarReturnDone_Struct *)outapp2->pBuffer;
...

Even if all of the functional server code if working properly, there could still be an issue with the client translator function - if it has one.

(assuming RoF2...)

We want to look for this opcode
Code:
auto outapp = new EQApplicationPacket(OP_BazaarSearch, Size);
..in the translator.

(ENCODE tranlates server->client packets, DECODE translates client->server packets)

https://github.com/EQEmu/Server/blob.../rof2.cpp#L396


If you have query logging turned on, I'm pretty sure that gms receive the queries (or use to) that are generated.

You should be able to run those directly from HeidiSQL and see the results as well.


None of this really says how to fix any issue..but, it does give you most all of the places to look
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote