|
|
|
@ -34,6 +34,7 @@ |
|
|
|
|
#import <XCTest/XCTest.h> |
|
|
|
|
#import <netinet/in.h> |
|
|
|
|
#import <sys/socket.h> |
|
|
|
|
#import <sys/fcntl.h> |
|
|
|
|
|
|
|
|
|
#import <Cronet/Cronet.h> |
|
|
|
|
#import <grpc/grpc.h> |
|
|
|
@ -187,6 +188,19 @@ unsigned int parse_h2_length(const char *field) { |
|
|
|
|
grpc_metadata_array_init(&request_metadata_recv); |
|
|
|
|
grpc_call_details_init(&call_details); |
|
|
|
|
|
|
|
|
|
int sl = socket(AF_INET, SOCK_STREAM, 0); |
|
|
|
|
GPR_ASSERT(sl >= 0); |
|
|
|
|
|
|
|
|
|
// Make an TCP endpoint to accept the connection |
|
|
|
|
struct sockaddr_in s_addr; |
|
|
|
|
memset(&s_addr, 0, sizeof(s_addr)); |
|
|
|
|
s_addr.sin_family = AF_INET; |
|
|
|
|
s_addr.sin_addr.s_addr = htonl(INADDR_ANY); |
|
|
|
|
s_addr.sin_port = htons(port); |
|
|
|
|
GPR_ASSERT(-1 != fcntl(sl, F_SETFL, fcntl(sl, F_GETFL, 0) | O_NONBLOCK)); |
|
|
|
|
GPR_ASSERT(0 == bind(sl, (struct sockaddr *)&s_addr, sizeof(s_addr))); |
|
|
|
|
GPR_ASSERT(0 == listen(sl, 5)); |
|
|
|
|
|
|
|
|
|
memset(ops, 0, sizeof(ops)); |
|
|
|
|
op = ops; |
|
|
|
|
op->op = GRPC_OP_SEND_INITIAL_METADATA; |
|
|
|
@ -226,17 +240,10 @@ unsigned int parse_h2_length(const char *field) { |
|
|
|
|
|
|
|
|
|
dispatch_async( |
|
|
|
|
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ |
|
|
|
|
int sl = socket(AF_INET, SOCK_STREAM, 0); |
|
|
|
|
GPR_ASSERT(sl >= 0); |
|
|
|
|
|
|
|
|
|
// Make and TCP endpoint to accept the connection |
|
|
|
|
struct sockaddr_in s_addr; |
|
|
|
|
memset(&s_addr, 0, sizeof(s_addr)); |
|
|
|
|
s_addr.sin_family = AF_INET; |
|
|
|
|
s_addr.sin_addr.s_addr = htonl(INADDR_ANY); |
|
|
|
|
s_addr.sin_port = htons(port); |
|
|
|
|
GPR_ASSERT(0 == bind(sl, (struct sockaddr *)&s_addr, sizeof(s_addr))); |
|
|
|
|
GPR_ASSERT(0 == listen(sl, 5)); |
|
|
|
|
fd_set fs; |
|
|
|
|
FD_ZERO(&fs); |
|
|
|
|
FD_SET(sl, &fs); |
|
|
|
|
select(sl + 1, &fs, NULL, NULL, NULL); |
|
|
|
|
int s = accept(sl, NULL, NULL); |
|
|
|
|
GPR_ASSERT(s >= 0); |
|
|
|
|
|
|
|
|
|