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.
