@@ -84,10 +84,16 @@ impl<Ctx: WorkerCtx> HostWasmRpc for DurableWorkerCtx<Ctx> {
8484 let args = self . get_arguments ( ) . await ?;
8585 let env = self . get_environment ( ) . await ?;
8686 let wasi_config_vars = self . wasi_config_vars ( ) ;
87+ let own_worker_id = self . owned_worker_id ( ) . clone ( ) ;
8788
8889 let entry = self . table ( ) . get ( & self_) ?;
8990 let payload = entry. payload . downcast_ref :: < WasmRpcEntryPayload > ( ) . unwrap ( ) ;
9091 let remote_worker_id = payload. remote_worker_id ( ) . clone ( ) ;
92+
93+ if remote_worker_id == own_worker_id {
94+ return Err ( anyhow ! ( "RPC calls to the same agent are not supported" ) ) ;
95+ }
96+
9197 let connection_span_id = payload. span_id ( ) . clone ( ) ;
9298
9399 Self :: add_self_parameter_if_needed ( & mut function_params, payload) ;
@@ -220,10 +226,16 @@ impl<Ctx: WorkerCtx> HostWasmRpc for DurableWorkerCtx<Ctx> {
220226 let args = self . get_arguments ( ) . await ?;
221227 let env = self . get_environment ( ) . await ?;
222228 let wasi_config_vars = self . wasi_config_vars ( ) ;
229+ let own_worker_id = self . owned_worker_id ( ) . clone ( ) ;
223230
224231 let entry = self . table ( ) . get ( & self_) ?;
225232 let payload = entry. payload . downcast_ref :: < WasmRpcEntryPayload > ( ) . unwrap ( ) ;
226233 let remote_worker_id = payload. remote_worker_id ( ) . clone ( ) ;
234+
235+ if remote_worker_id == own_worker_id {
236+ return Err ( anyhow ! ( "RPC calls to the same agent are not supported" ) ) ;
237+ }
238+
227239 let connection_span_id = payload. span_id ( ) . clone ( ) ;
228240
229241 Self :: add_self_parameter_if_needed ( & mut function_params, payload) ;
@@ -325,6 +337,7 @@ impl<Ctx: WorkerCtx> HostWasmRpc for DurableWorkerCtx<Ctx> {
325337 let args = self . get_arguments ( ) . await ?;
326338 let env = self . get_environment ( ) . await ?;
327339 let wasi_config_vars = self . wasi_config_vars ( ) ;
340+ let own_worker_id = self . owned_worker_id ( ) . clone ( ) ;
328341
329342 let begin_index = self
330343 . begin_function ( & DurableFunctionType :: WriteRemote )
@@ -333,6 +346,11 @@ impl<Ctx: WorkerCtx> HostWasmRpc for DurableWorkerCtx<Ctx> {
333346 let entry = self . table ( ) . get ( & this) ?;
334347 let payload = entry. payload . downcast_ref :: < WasmRpcEntryPayload > ( ) . unwrap ( ) ;
335348 let remote_worker_id = payload. remote_worker_id ( ) . clone ( ) ;
349+
350+ if remote_worker_id == own_worker_id {
351+ return Err ( anyhow ! ( "RPC calls to the same agent are not supported" ) ) ;
352+ }
353+
336354 let connection_span_id = payload. span_id ( ) . clone ( ) ;
337355
338356 Self :: add_self_parameter_if_needed ( & mut function_params, payload) ;
0 commit comments