aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hannes Magnusson <bjori@php.net>2015-10-06 15:26:41 -0700
committerGravatar Hannes Magnusson <bjori@php.net>2015-10-06 15:48:31 -0700
commitbd52ac4080bfa70d173d822702ee54d1b062dcda (patch)
tree6d1527d82c9ab094a2d804faca0ade25ccc0baca
parent1485683fcd725169a9b8d9cd3f1dbf1706da6045 (diff)
Fix #2275 (Make sure PHP example can be run with Apache)
Normal constants, like most other things, are cleaned up during RSHUTDOWN. We need to explicitly mark them as persistent using CONST_PERSISTENT
-rw-r--r--src/php/ext/grpc/php_grpc.c111
1 files changed, 70 insertions, 41 deletions
diff --git a/src/php/ext/grpc/php_grpc.c b/src/php/ext/grpc/php_grpc.c
index 0f730ea756..4ad78ea0a3 100644
--- a/src/php/ext/grpc/php_grpc.c
+++ b/src/php/ext/grpc/php_grpc.c
@@ -109,91 +109,120 @@ PHP_MINIT_FUNCTION(grpc) {
*/
/* Register call error constants */
grpc_init();
- REGISTER_LONG_CONSTANT("Grpc\\CALL_OK", GRPC_CALL_OK, CONST_CS);
- REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR", GRPC_CALL_ERROR, CONST_CS);
+ REGISTER_LONG_CONSTANT("Grpc\\CALL_OK", GRPC_CALL_OK,
+ CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR", GRPC_CALL_ERROR,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_ON_SERVER",
- GRPC_CALL_ERROR_NOT_ON_SERVER, CONST_CS);
+ GRPC_CALL_ERROR_NOT_ON_SERVER,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_ON_CLIENT",
- GRPC_CALL_ERROR_NOT_ON_CLIENT, CONST_CS);
+ GRPC_CALL_ERROR_NOT_ON_CLIENT,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_ALREADY_INVOKED",
- GRPC_CALL_ERROR_ALREADY_INVOKED, CONST_CS);
+ GRPC_CALL_ERROR_ALREADY_INVOKED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_INVOKED",
- GRPC_CALL_ERROR_NOT_INVOKED, CONST_CS);
+ GRPC_CALL_ERROR_NOT_INVOKED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_ALREADY_FINISHED",
- GRPC_CALL_ERROR_ALREADY_FINISHED, CONST_CS);
+ GRPC_CALL_ERROR_ALREADY_FINISHED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_TOO_MANY_OPERATIONS",
- GRPC_CALL_ERROR_TOO_MANY_OPERATIONS, CONST_CS);
+ GRPC_CALL_ERROR_TOO_MANY_OPERATIONS,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_INVALID_FLAGS",
- GRPC_CALL_ERROR_INVALID_FLAGS, CONST_CS);
+ GRPC_CALL_ERROR_INVALID_FLAGS,
+ CONST_CS | CONST_PERSISTENT);
/* Register flag constants */
REGISTER_LONG_CONSTANT("Grpc\\WRITE_BUFFER_HINT", GRPC_WRITE_BUFFER_HINT,
- CONST_CS);
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\WRITE_NO_COMPRESS", GRPC_WRITE_NO_COMPRESS,
- CONST_CS);
+ CONST_CS | CONST_PERSISTENT);
/* Register status constants */
- REGISTER_LONG_CONSTANT("Grpc\\STATUS_OK", GRPC_STATUS_OK, CONST_CS);
+ REGISTER_LONG_CONSTANT("Grpc\\STATUS_OK", GRPC_STATUS_OK,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_CANCELLED", GRPC_STATUS_CANCELLED,
- CONST_CS);
- REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNKNOWN", GRPC_STATUS_UNKNOWN, CONST_CS);
+ CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNKNOWN", GRPC_STATUS_UNKNOWN,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_INVALID_ARGUMENT",
- GRPC_STATUS_INVALID_ARGUMENT, CONST_CS);
+ GRPC_STATUS_INVALID_ARGUMENT,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_DEADLINE_EXCEEDED",
- GRPC_STATUS_DEADLINE_EXCEEDED, CONST_CS);
+ GRPC_STATUS_DEADLINE_EXCEEDED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_NOT_FOUND", GRPC_STATUS_NOT_FOUND,
- CONST_CS);
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_ALREADY_EXISTS",
- GRPC_STATUS_ALREADY_EXISTS, CONST_CS);
+ GRPC_STATUS_ALREADY_EXISTS,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_PERMISSION_DENIED",
- GRPC_STATUS_PERMISSION_DENIED, CONST_CS);
+ GRPC_STATUS_PERMISSION_DENIED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNAUTHENTICATED",
- GRPC_STATUS_UNAUTHENTICATED, CONST_CS);
+ GRPC_STATUS_UNAUTHENTICATED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_RESOURCE_EXHAUSTED",
- GRPC_STATUS_RESOURCE_EXHAUSTED, CONST_CS);
+ GRPC_STATUS_RESOURCE_EXHAUSTED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_FAILED_PRECONDITION",
- GRPC_STATUS_FAILED_PRECONDITION, CONST_CS);
- REGISTER_LONG_CONSTANT("Grpc\\STATUS_ABORTED", GRPC_STATUS_ABORTED, CONST_CS);
+ GRPC_STATUS_FAILED_PRECONDITION,
+ CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("Grpc\\STATUS_ABORTED", GRPC_STATUS_ABORTED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_OUT_OF_RANGE", GRPC_STATUS_OUT_OF_RANGE,
- CONST_CS);
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNIMPLEMENTED",
- GRPC_STATUS_UNIMPLEMENTED, CONST_CS);
+ GRPC_STATUS_UNIMPLEMENTED,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_INTERNAL", GRPC_STATUS_INTERNAL,
- CONST_CS);
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNAVAILABLE", GRPC_STATUS_UNAVAILABLE,
- CONST_CS);
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\STATUS_DATA_LOSS", GRPC_STATUS_DATA_LOSS,
- CONST_CS);
+ CONST_CS | CONST_PERSISTENT);
/* Register op type constants */
REGISTER_LONG_CONSTANT("Grpc\\OP_SEND_INITIAL_METADATA",
- GRPC_OP_SEND_INITIAL_METADATA, CONST_CS);
+ GRPC_OP_SEND_INITIAL_METADATA,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\OP_SEND_MESSAGE",
- GRPC_OP_SEND_MESSAGE, CONST_CS);
+ GRPC_OP_SEND_MESSAGE,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\OP_SEND_CLOSE_FROM_CLIENT",
- GRPC_OP_SEND_CLOSE_FROM_CLIENT, CONST_CS);
+ GRPC_OP_SEND_CLOSE_FROM_CLIENT,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\OP_SEND_STATUS_FROM_SERVER",
- GRPC_OP_SEND_STATUS_FROM_SERVER, CONST_CS);
+ GRPC_OP_SEND_STATUS_FROM_SERVER,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_INITIAL_METADATA",
- GRPC_OP_RECV_INITIAL_METADATA, CONST_CS);
+ GRPC_OP_RECV_INITIAL_METADATA,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_MESSAGE",
- GRPC_OP_RECV_MESSAGE, CONST_CS);
+ GRPC_OP_RECV_MESSAGE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_STATUS_ON_CLIENT",
- GRPC_OP_RECV_STATUS_ON_CLIENT, CONST_CS);
+ GRPC_OP_RECV_STATUS_ON_CLIENT,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_CLOSE_ON_SERVER",
- GRPC_OP_RECV_CLOSE_ON_SERVER, CONST_CS);
+ GRPC_OP_RECV_CLOSE_ON_SERVER,
+ CONST_CS | CONST_PERSISTENT);
/* Register connectivity state constants */
REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_IDLE",
- GRPC_CHANNEL_IDLE, CONST_CS);
+ GRPC_CHANNEL_IDLE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_CONNECTING",
- GRPC_CHANNEL_CONNECTING, CONST_CS);
+ GRPC_CHANNEL_CONNECTING, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_READY",
- GRPC_CHANNEL_READY, CONST_CS);
+ GRPC_CHANNEL_READY, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_TRANSIENT_FAILURE",
- GRPC_CHANNEL_TRANSIENT_FAILURE, CONST_CS);
+ GRPC_CHANNEL_TRANSIENT_FAILURE,
+ CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_FATAL_FAILURE",
- GRPC_CHANNEL_FATAL_FAILURE, CONST_CS);
+ GRPC_CHANNEL_FATAL_FAILURE,
+ CONST_CS | CONST_PERSISTENT);
grpc_init_call(TSRMLS_C);
grpc_init_channel(TSRMLS_C);