Hello Iwata-san,

Thanks to removing the static arrays, the code got much smaller.  I'm happy 
with this result.


(1)
+      (<literal>&gt;</literal> for messages from client to server,
+      and <literal>&lt;</literal> for messages from server to client),

I think this was meant to say "> or <".  So, maybe you should remove "," at the 
end of the first line, and replace "and" with "or".


(2)
+               case 8 :        /* GSSENCRequest or SSLRequest */
+                       /* These messsage does not reach here. */

messsage does -> messages do


(3)
+       fprintf(f, "\tAuthentication");

Why don't you move this \t in each message type to the end of:

+       fprintf(conn->Pfdebug, "%s\t%s\t%d", timestr, prefix, length);

Plus, don't we say in the manual that fields (timestamp, direction, length, 
message type, and message content) are separated by a tab?
Also, the code doesn't seem to separate the message type and content with a tab.


(4)
Where did the processing for unknown message go in pqTraceOutputMessage()?  Add 
default label?


(5)
+               case 16:        /* CancelRequest */
+                       fprintf(conn->Pfdebug, "%s\t>\t%d\tCancelRequest", 
timestr, length);

I think this should follow pqTraceOutputMessage().  That is, each case label 
only print the message type name in case other message types are added in the 
future.



Regards
Takayuki Tsunakawa




Reply via email to