Changeset 645d9ed2 in mainline for kernel/generic/src/ipc


Ignore:
Timestamp:
2008-08-24T18:19:21Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
74965d2
Parents:
088ab05
Message:

Fix processing of answers to forwarded masqueraded calls.

Location:
kernel/generic/src/ipc
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ipc/ipc.c

    r088ab05 r645d9ed2  
    348348        spinlock_unlock(&oldbox->lock);
    349349
    350         if (mode & IPC_FF_ROUTE_FROM_ME)
     350        if (mode & IPC_FF_ROUTE_FROM_ME) {
     351                if (!call->data.caller_phone)
     352                        call->data.caller_phone = call->data.phone;
    351353                call->data.phone = newphone;
     354        }
    352355
    353356        return ipc_call(newphone, call);
     
    393396                request = list_get_instance(box->answers.next, call_t, link);
    394397                list_remove(&request->link);
    395                 atomic_dec(&request->data.phone->active_calls);
     398                if (request->data.caller_phone)
     399                        atomic_dec(&request->data.caller_phone->active_calls);
     400                else
     401                        atomic_dec(&request->data.phone->active_calls);
    396402        } else if (!list_empty(&box->calls)) {
    397403                /* Handle requests */
  • kernel/generic/src/ipc/ipcrsc.c

    r088ab05 r645d9ed2  
    171171
    172172        spinlock_lock(&TASK->lock);
    173        
    174173        for (i = 0; i < IPC_MAX_PHONES; i++) {
    175174                if (TASK->phones[i].state == IPC_PHONE_HUNGUP &&
     
    184183        spinlock_unlock(&TASK->lock);
    185184
    186         if (i >= IPC_MAX_PHONES)
     185        if (i == IPC_MAX_PHONES)
    187186                return -1;
     187
    188188        return i;
    189189}
Note: See TracChangeset for help on using the changeset viewer.