Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: src/native_client/src/trusted/desc/posix/nacl_desc_conn_cap.c

Issue 3076010: IMC: Remove ReturnCreatedDesc() method from effector object (Closed)
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2010 The Native Client Authors. All rights reserved. 2 * Copyright 2010 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can 3 * Use of this source code is governed by a BSD-style license that can
4 * be found in the LICENSE file. 4 * be found in the LICENSE file.
5 */ 5 */
6 6
7 /* 7 /*
8 * NaCl Service Runtime. I/O Descriptor / Handle abstraction. 8 * NaCl Service Runtime. I/O Descriptor / Handle abstraction.
9 * Connection capabilities. 9 * Connection capabilities.
10 */ 10 */
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 int NaClDescConnCapFdExternalize(struct NaClDesc *vself, 70 int NaClDescConnCapFdExternalize(struct NaClDesc *vself,
71 struct NaClDescXferState *xfer) { 71 struct NaClDescXferState *xfer) {
72 struct NaClDescConnCapFd *self; 72 struct NaClDescConnCapFd *self;
73 73
74 self = (struct NaClDescConnCapFd *) vself; 74 self = (struct NaClDescConnCapFd *) vself;
75 *xfer->next_handle++ = self->connect_fd; 75 *xfer->next_handle++ = self->connect_fd;
76 76
77 return 0; 77 return 0;
78 } 78 }
79 79
80 int NaClDescConnCapFdConnectAddr(struct NaClDesc *vself, 80 int NaClDescConnCapFdConnectAddr(struct NaClDesc *vself,
81 struct NaClDescEffector *effp) { 81 struct NaClDesc **result) {
82 struct NaClDescConnCapFd *self = (struct NaClDescConnCapFd *) vself; 82 struct NaClDescConnCapFd *self = (struct NaClDescConnCapFd *) vself;
83 NaClHandle sock_pair[2]; 83 NaClHandle sock_pair[2];
84 struct NaClDescImcDesc *connected_socket; 84 struct NaClDescImcDesc *connected_socket;
85 int retval;
86 char control_buf[CMSG_SPACE(sizeof(int))]; 85 char control_buf[CMSG_SPACE(sizeof(int))];
87 struct iovec iovec; 86 struct iovec iovec;
88 struct msghdr connect_msg; 87 struct msghdr connect_msg;
89 struct cmsghdr *cmsg; 88 struct cmsghdr *cmsg;
90 int sent; 89 int sent;
91 90
92 if (NaClSocketPair(sock_pair) != 0) { 91 if (NaClSocketPair(sock_pair) != 0) {
93 return -NACL_ABI_EMFILE; 92 return -NACL_ABI_EMFILE;
94 } 93 }
95 94
(...skipping 22 matching lines...) Expand all
118 } 117 }
119 118
120 connected_socket = malloc(sizeof(*connected_socket)); 119 connected_socket = malloc(sizeof(*connected_socket));
121 if (connected_socket == NULL || 120 if (connected_socket == NULL ||
122 !NaClDescImcDescCtor(connected_socket, sock_pair[1])) { 121 !NaClDescImcDescCtor(connected_socket, sock_pair[1])) {
123 NaClClose(sock_pair[1]); 122 NaClClose(sock_pair[1]);
124 free(connected_socket); 123 free(connected_socket);
125 return -NACL_ABI_ENOMEM; 124 return -NACL_ABI_ENOMEM;
126 } 125 }
127 126
128 retval = (*effp->vtbl->ReturnCreatedDesc)( 127 *result = (struct NaClDesc *) connected_socket;
129 effp, (struct NaClDesc *) connected_socket); 128 return 0;
130 if (retval < 0) {
131 /* connected_socket is fully constructed, so we cannot simply free
132 it at this point. */
133 NaClDescUnref((struct NaClDesc *) connected_socket);
134 }
135 return retval;
136 } 129 }
137 130
138 int NaClDescConnCapFdAcceptConn(struct NaClDesc *vself, 131 int NaClDescConnCapFdAcceptConn(struct NaClDesc *vself,
139 struct NaClDescEffector *effp) { 132 struct NaClDesc **result) {
140 UNREFERENCED_PARAMETER(vself); 133 UNREFERENCED_PARAMETER(vself);
141 UNREFERENCED_PARAMETER(effp); 134 UNREFERENCED_PARAMETER(result);
142 135
143 NaClLog(LOG_ERROR, "NaClDescConnCapFdAcceptConn: not IMC\n"); 136 NaClLog(LOG_ERROR, "NaClDescConnCapFdAcceptConn: not IMC\n");
144 return -NACL_ABI_EINVAL; 137 return -NACL_ABI_EINVAL;
145 } 138 }
146 139
147 struct NaClDescVtbl const kNaClDescConnCapFdVtbl = { 140 struct NaClDescVtbl const kNaClDescConnCapFdVtbl = {
148 NaClDescConnCapFdDtor, 141 NaClDescConnCapFdDtor,
149 NaClDescMapNotImplemented, 142 NaClDescMapNotImplemented,
150 NaClDescUnmapUnsafeNotImplemented, 143 NaClDescUnmapUnsafeNotImplemented,
151 NaClDescUnmapNotImplemented, 144 NaClDescUnmapNotImplemented,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 if (!NaClDescCtor(&conn_cap->base)) { 182 if (!NaClDescCtor(&conn_cap->base)) {
190 free(conn_cap); 183 free(conn_cap);
191 return -NACL_ABI_ENOMEM; 184 return -NACL_ABI_ENOMEM;
192 } 185 }
193 conn_cap->base.vtbl = &kNaClDescConnCapFdVtbl; 186 conn_cap->base.vtbl = &kNaClDescConnCapFdVtbl;
194 conn_cap->connect_fd = *xfer->next_handle; 187 conn_cap->connect_fd = *xfer->next_handle;
195 *xfer->next_handle++ = NACL_INVALID_HANDLE; 188 *xfer->next_handle++ = NACL_INVALID_HANDLE;
196 *result = &conn_cap->base; 189 *result = &conn_cap->base;
197 return 0; 190 return 0;
198 } 191 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698