make ah available in http callback properly

Signed-off-by: Andy Green <andy.green@linaro.org>
This commit is contained in:
Andy Green 2013-11-09 11:40:32 +08:00
parent cc13c6f187
commit 84fd949e05
2 changed files with 13 additions and 7 deletions

View file

@ -137,9 +137,12 @@ libwebsocket_read(struct libwebsocket_context *context,
/* union transition */
memset(&wsi->u, 0, sizeof(wsi->u));
wsi->mode = LWS_CONNMODE_HTTP_SERVING_ACCEPTED;
wsi->state = WSI_STATE_HTTP;
/* expose it at the same offset as u.hdr */
wsi->u.http.ah = ah;
n = 0;
if (wsi->protocol->callback)
n = wsi->protocol->callback(context, wsi,
@ -149,6 +152,8 @@ libwebsocket_read(struct libwebsocket_context *context,
/* now drop the header info we kept a pointer to */
if (ah)
free(ah);
/* not possible to continue to use past here */
wsi->u.http.ah = NULL;
if (n) {
lwsl_info("LWS_CALLBACK_HTTP closing\n");

View file

@ -306,12 +306,6 @@ struct libwebsocket_context {
* other APIs to get information out of it.
*/
struct _lws_http_mode_related {
int fd;
unsigned long filepos;
unsigned long filelen;
};
struct lws_fragments {
unsigned short offset;
unsigned short len;
@ -330,6 +324,13 @@ struct allocated_headers {
#endif
};
struct _lws_http_mode_related {
struct allocated_headers *ah; /* mirroring _lws_header_related */
int fd;
unsigned long filepos;
unsigned long filelen;
};
struct _lws_header_related {
struct allocated_headers *ah;
short lextable_pos;