Rev 3394 | Rev 3438 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3394 | Rev 3395 | ||
|---|---|---|---|
| Line 199... | Line 199... | ||
| 199 | answerbox_t *callerbox = call->callerbox; |
199 | answerbox_t *callerbox = call->callerbox; |
| 200 | 200 | ||
| 201 | call->flags |= IPC_CALL_ANSWERED; |
201 | call->flags |= IPC_CALL_ANSWERED; |
| 202 | 202 | ||
| 203 | if (call->flags & IPC_CALL_FORWARDED) { |
203 | if (call->flags & IPC_CALL_FORWARDED) { |
| 204 | if (call->data.caller_phone) { |
204 | if (call->caller_phone) { |
| 205 | /* Demasquerade the caller phone. */ |
205 | /* Demasquerade the caller phone. */ |
| 206 | call->data.phone = call->data.caller_phone; |
206 | call->data.phone = call->caller_phone; |
| 207 | } |
207 | } |
| 208 | } |
208 | } |
| 209 | 209 | ||
| 210 | spinlock_lock(&callerbox->lock); |
210 | spinlock_lock(&callerbox->lock); |
| 211 | list_append(&call->link, &callerbox->answers); |
211 | list_append(&call->link, &callerbox->answers); |
| Line 358... | Line 358... | ||
| 358 | spinlock_lock(&oldbox->lock); |
358 | spinlock_lock(&oldbox->lock); |
| 359 | list_remove(&call->link); |
359 | list_remove(&call->link); |
| 360 | spinlock_unlock(&oldbox->lock); |
360 | spinlock_unlock(&oldbox->lock); |
| 361 | 361 | ||
| 362 | if (mode & IPC_FF_ROUTE_FROM_ME) { |
362 | if (mode & IPC_FF_ROUTE_FROM_ME) { |
| 363 | if (!call->data.caller_phone) |
363 | if (!call->caller_phone) |
| 364 | call->data.caller_phone = call->data.phone; |
364 | call->caller_phone = call->data.phone; |
| 365 | call->data.phone = newphone; |
365 | call->data.phone = newphone; |
| 366 | } |
366 | } |
| 367 | 367 | ||
| 368 | return ipc_call(newphone, call); |
368 | return ipc_call(newphone, call); |
| 369 | } |
369 | } |