I was trying to pass custom non-global scoped data to my upgrade_cb for websockets (upgrade_cb is the name of the routine in test_upgrade.c). I noticed that the opaque MHD_UpgradeResponseHandle structure was passed as a pointer parameter to the callback, so I was trying to investigate its members to get some insight. That's when I realized that the members were not exported. Your answer provides the insight I needed regarding opacity, however I still need to pass in custom data to the upgrade callback.
The callback has the following parameters, and I'm guessing I'm supposed to be using extra_in to pass data into the callback:
static void
upgrade_cb
(
void *cls,
struct MHD_Connection *connection,
void *con_cls,
const char *extra_in,
size_t extra_in_size,
MHD_socket sock,
struct MHD_UpgradeResponseHandle *urh
);
However, the only time I see upgrade_cb referenced in test_upgrade.c is when it's used as follows: