Thank you everyone for the help ... I've found the problem :)

Brian, thank you for the GNTP library reference ... doing a memcmp()
against the UPD packets it created helped to isolate the issue, which
was pretty straight forward once I noticed what the problem was.
Apparently gcc was padding the bytes on the struct I was using for the
registration packet, so the size of the packet I was sending over UDP
to Growl was incorrect (too large).  Of course there were some other
issues like with the lack of little-endian-to-big-endian conversion
issues, etc., but basically the memory layout of the structure itself
was mis-aligned.  Once I hard-coded in a size of only 25-bytes for the
struct, then everything started working ... so the memory layout at
the beginning of the struct was good, but the padding at the end was
throwing everything off.

This was definitely a bit confusing, as all the assertions, etc. were
good, but the memory alignment issues were definitely something I
should have been looking for.

I'll definitely be removing all the hard-coded references in my final
code ... the actual code I'm going to use will be a flexible C++
class, but I just wanted to make sure that I was getting the UDP
packet memory layout correct from the diagrams on the documentation
website.

Again, thank you all for your help,

Jason

-- 
You received this message because you are subscribed to the Google Groups 
"Growl Discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/growldiscuss?hl=en.

Reply via email to