Rev 2677 | Rev 2934 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2677 | Rev 2745 | ||
|---|---|---|---|
| Line 162... | Line 162... | ||
| 162 | */ |
162 | */ |
| 163 | static inline int answer_preprocess(call_t *answer, ipc_data_t *olddata) |
163 | static inline int answer_preprocess(call_t *answer, ipc_data_t *olddata) |
| 164 | { |
164 | { |
| 165 | int phoneid; |
165 | int phoneid; |
| 166 | 166 | ||
| 167 | if (IPC_GET_RETVAL(answer->data) == EHANGUP) { |
167 | if ((native_t) IPC_GET_RETVAL(answer->data) == EHANGUP) { |
| 168 | /* In case of forward, hangup the forwared phone, |
168 | /* In case of forward, hangup the forwared phone, |
| 169 | * not the originator |
169 | * not the originator |
| 170 | */ |
170 | */ |
| 171 | spinlock_lock(&answer->data.phone->lock); |
171 | spinlock_lock(&answer->data.phone->lock); |
| 172 | spinlock_lock(&TASK->answerbox.lock); |
172 | spinlock_lock(&TASK->answerbox.lock); |
| Line 352... | Line 352... | ||
| 352 | * |
352 | * |
| 353 | * @param call Call structure with the answer. |
353 | * @param call Call structure with the answer. |
| 354 | */ |
354 | */ |
| 355 | static void process_answer(call_t *call) |
355 | static void process_answer(call_t *call) |
| 356 | { |
356 | { |
| 357 | if (IPC_GET_RETVAL(call->data) == EHANGUP && |
357 | if (((native_t) IPC_GET_RETVAL(call->data) == EHANGUP) && |
| 358 | (call->flags & IPC_CALL_FORWARDED)) |
358 | (call->flags & IPC_CALL_FORWARDED)) |
| 359 | IPC_SET_RETVAL(call->data, EFORWARD); |
359 | IPC_SET_RETVAL(call->data, EFORWARD); |
| 360 | 360 | ||
| 361 | if (call->flags & IPC_CALL_CONN_ME_TO) { |
361 | if (call->flags & IPC_CALL_CONN_ME_TO) { |
| 362 | if (IPC_GET_RETVAL(call->data)) |
362 | if (IPC_GET_RETVAL(call->data)) |