mirror of
https://github.com/nginx/nginx.git
synced 2024-12-14 12:09:00 +08:00
afd7ec5357
*) Change: now the ngx_http_charset_module works for subrequests, if the response has no "Content-Type" header line. *) Bugfix: if the "proxy_pass" directive has no URI part, then the "proxy_redirect default" directive add the unnecessary slash in start of the rewritten redirect. *) Bugfix: the internal redirect always transform client's HTTP method to GET, now the transformation is made for the "X-Accel-Redirect" redirects only and if the method is not HEAD; the bug had appeared in 0.3.42. *) Bugfix: the ngx_http_perl_module could not be built, if the perl was built with the threads support; the bug had appeared in 0.3.46.
85 lines
2.2 KiB
C
85 lines
2.2 KiB
C
|
|
/*
|
|
* Copyright (C) Igor Sysoev
|
|
*/
|
|
|
|
|
|
#ifndef _NGX_MYSQL_H_INCLUDED_
|
|
#define _NGX_MYSQL_H_INCLUDED_
|
|
|
|
|
|
#include <ngx_config.h>
|
|
#include <ngx_core.h>
|
|
#include <ngx_event.h>
|
|
#include <ngx_event_connect.h>
|
|
|
|
|
|
typedef struct ngx_mysql_s ngx_mysql_t;
|
|
|
|
typedef void (*ngx_mysql_handler_pt)(ngx_mysql_t *m);
|
|
|
|
|
|
struct ngx_mysql_s {
|
|
ngx_peer_connection_t peer;
|
|
|
|
ngx_buf_t *buf;
|
|
ngx_pool_t *pool;
|
|
|
|
ngx_str_t *login;
|
|
ngx_str_t *passwd;
|
|
ngx_str_t *database;
|
|
|
|
ngx_str_t query;
|
|
|
|
ngx_uint_t pktn;
|
|
|
|
ngx_mysql_handler_pt handler;
|
|
void *data;
|
|
ngx_int_t state;
|
|
|
|
};
|
|
|
|
|
|
#define NGX_MYSQL_CMDPKT_LEN 5
|
|
|
|
|
|
#if (NGX_HAVE_LITTLE_ENDIAN && NGX_HAVE_NONALIGNED && 0)
|
|
|
|
#define ngx_m16toh(n) (*(uint32_t *) n & 0x0000ffff)
|
|
#define ngx_m24toh(n) (*(uint32_t *) n & 0x00ffffff)
|
|
#define ngx_m32toh(n) *(uint32_t *) n
|
|
|
|
#define ngx_htom16(n, m) *(uint16_t *) n = (uint16_t) ((m) & 0xffff)
|
|
|
|
#define ngx_htom24(n, m) (n)[0] = (u_char) ((m) & 0xff); \
|
|
(n)[1] = (u_char) (((m) >> 8) & 0xff); \
|
|
(n)[2] = (u_char) (((m) >> 16) & 0xff)
|
|
|
|
#define ngx_htom32(n, m) *(uint32_t *) (n) = (m)
|
|
|
|
#else
|
|
|
|
#define ngx_m16toh(n) (n[0] | n[1] << 8)
|
|
#define ngx_m24toh(n) (n[0] | n[1] << 8 | n[2] << 16)
|
|
#define ngx_m32toh(n) (n[0] | n[1] << 8 | n[2] << 16 | n[3] << 24)
|
|
|
|
#define ngx_htom16(n, m) (n)[0] = (u_char) (m); (n)[1] = (u_char) ((m) >> 8)
|
|
|
|
#define ngx_htom24(n, m) (n)[0] = (u_char) ((m) & 0xff); \
|
|
(n)[1] = (u_char) (((m) >> 8) & 0xff); \
|
|
(n)[2] = (u_char) (((m) >> 16) & 0xff)
|
|
|
|
#define ngx_htom32(n, m) (n)[0] = (u_char) ((m) & 0xff); \
|
|
(n)[1] = (u_char) (((m) >> 8) & 0xff); \
|
|
(n)[2] = (u_char) (((m) >> 16) & 0xff); \
|
|
(n)[3] = (u_char) (((m) >> 24) & 0xff)
|
|
|
|
#endif
|
|
|
|
|
|
ngx_int_t ngx_mysql_connect(ngx_mysql_t *m);
|
|
ngx_int_t ngx_mysql_query(ngx_mysql_t *m);
|
|
|
|
|
|
#endif /* _NGX_MYSQL_H_INCLUDED_ */
|