0
-static VALUE global_http_prefix;
0
-static VALUE global_request_method;
0
-static VALUE global_request_uri;
0
static VALUE global_fragment;
0
-static VALUE global_
request_path;
0
+static VALUE global_
path_info;
0
static VALUE global_query_string;
0
-static VALUE global_http_version;
0
static VALUE global_request_body;
0
+static VALUE global_request_method;
0
+static VALUE global_request_path;
0
+static VALUE global_request_uri;
0
static VALUE global_server_port;
0
-static VALUE global_path_info;
0
+static VALUE global_http_accept;
0
+static VALUE global_http_connection;
0
static VALUE global_http_content_length;
0
static VALUE global_http_content_type;
0
static VALUE global_http_content_type;
0
-static VALUE global_http_accept;
0
+static VALUE global_http_prefix;
0
+static VALUE global_http_version;
0
/* You don't want to run more than one server per Ruby VM. Really
0
* I'm making this explicit by not defining a Ebb::Server class but instead
0
@@ -134,16 +136,16 @@ VALUE env_field(struct ebb_env_item *item)
0
- case MONGREL_REQUEST_METHOD: return global_request_method;
0
- case MONGREL_REQUEST_URI: return global_request_uri;
0
- case MONGREL_FRAGMENT: return global_fragment;
0
- case MONGREL_REQUEST_PATH: return global_request_path;
0
- case MONGREL_QUERY_STRING: return global_query_string;
0
- case MONGREL_HTTP_VERSION: return global_http_version;
0
- case MONGREL_SERVER_PORT: return global_server_port;
0
case MONGREL_ACCEPT: return global_http_accept;
0
+ case MONGREL_CONNECTION: return global_http_connection;
0
case MONGREL_CONTENT_LENGTH: return global_http_content_length;
0
case MONGREL_CONTENT_TYPE: return global_http_content_type;
0
+ case MONGREL_FRAGMENT: return global_fragment;
0
+ case MONGREL_HTTP_VERSION: return global_http_version;
0
+ case MONGREL_QUERY_STRING: return global_query_string;
0
+ case MONGREL_REQUEST_METHOD: return global_request_method;
0
+ case MONGREL_REQUEST_PATH: return global_request_path;
0
+ case MONGREL_REQUEST_URI: return global_request_uri;
0
fprintf(stderr, "Unknown environ type: %d", item->type);
0
@@ -163,19 +165,21 @@ VALUE env_value(struct ebb_env_item *item)
0
VALUE client_env(VALUE _, VALUE rb_client)
0
- VALUE field, value,
hash = rb_hash_new();
0
+ VALUE field, value,
env = rb_hash_new();
0
Data_Get_Struct(rb_client, ebb_client, client);
0
for(i=0; i < client->env_size; i++) {
0
field = env_field(&client->env[i]);
0
value = env_value(&client->env[i]);
0
- rb_hash_aset(hash, field, value);
0
- //printf("(%s, %s)\n", StringValuePtr(field), StringValuePtr(value));
0
+ rb_hash_aset(env, field, value);
0
- rb_hash_aset(hash, global_path_info, rb_hash_aref(hash, global_request_path));
0
+ if(client->server->port)
0
+ rb_hash_aset(env, global_server_port, rb_str_new2(client->server->port));
0
+ rb_hash_aset(env, global_path_info, rb_hash_aref(env, global_request_path));
0
@@ -245,19 +249,20 @@ void Init_ebb_ext()
0
/** Defines global strings in the init method. */
0
#define DEF_GLOBAL(N, val) global_##N = rb_obj_freeze(rb_str_new2(val)); rb_global_variable(&global_##N)
0
- DEF_GLOBAL(http_prefix, "HTTP_");
0
- DEF_GLOBAL(request_method, "REQUEST_METHOD");
0
- DEF_GLOBAL(request_uri, "REQUEST_URI");
0
DEF_GLOBAL(fragment, "FRAGMENT");
0
- DEF_GLOBAL(
request_path, "REQUEST_PATH");
0
+ DEF_GLOBAL(
path_info, "PATH_INFO");
0
DEF_GLOBAL(query_string, "QUERY_STRING");
0
- DEF_GLOBAL(http_version, "HTTP_VERSION");
0
DEF_GLOBAL(request_body, "REQUEST_BODY");
0
+ DEF_GLOBAL(request_method, "REQUEST_METHOD");
0
+ DEF_GLOBAL(request_path, "REQUEST_PATH");
0
+ DEF_GLOBAL(request_uri, "REQUEST_URI");
0
DEF_GLOBAL(server_port, "SERVER_PORT");
0
- DEF_GLOBAL(path_info, "PATH_INFO");
0
+ DEF_GLOBAL(http_accept, "HTTP_ACCEPT");
0
+ DEF_GLOBAL(http_connection, "HTTP_CONNECTION");
0
DEF_GLOBAL(http_content_length, "HTTP_CONTENT_LENGTH");
0
DEF_GLOBAL(http_content_type, "HTTP_CONTENT_TYPE");
0
- DEF_GLOBAL(http_accept, "HTTP_ACCEPT");
0
+ DEF_GLOBAL(http_prefix, "HTTP_");
0
+ DEF_GLOBAL(http_version, "HTTP_VERSION");
0
rb_define_singleton_method(mFFI, "server_process_connections", server_process_connections, 0);
0
rb_define_singleton_method(mFFI, "server_listen_on_port", server_listen_on_port, 1);
Comments
No one has commented yet.