Changeset 3987


Ignore:
Timestamp:
11/24/10 23:07:35 (13 years ago)
Author:
schlocke
Message:

cccam: fixed connection lost/reset/dups

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/module-cccam.c

    r3978 r3987  
    212212            close(cl->udp_fd);
    213213        cl->udp_fd = 0;
     214        cl->pfd = 0;
    214215    }
    215216
     
    31153116                    break; //Disconnect client
    31163117                }
    3117                 else
     3118                else if (cc->extended_mode) //special handling for "oscam"-cccam clients:
    31183119                {
    31193120                    if (cc_cmd_send(cl, NULL, 0, MSG_KEEPALIVE) < 0)
     
    31793180        cs_log("cccam: %d failed errno: %d (%s)", __LINE__, errno, strerror(
    31803181                errno));
    3181     cs_disconnect_client(cl);
    3182     if (cl->udp_fd) {
    3183         close(cl->udp_fd);
    3184         cl->udp_fd = 0;
    3185         cl->pfd = 0;
    3186     }
    31873182    cc_cleanup(cl);
    31883183    cs_debug_mask(D_FUT, "cc_srv_init out");
     3184    cs_disconnect_client(cl);
    31893185    return NULL; //suppress compiler warning
    31903186}
     
    32353231    if ((n = recv(handle, data, 16, MSG_WAITALL)) != 16) {
    32363232        int err = errno;
    3237         cs_log(
    3238                 "%s server does not return 16 bytes (n=%d, handle=%d, udp_fd=%d, errno=%d)",
     3233        cs_log("%s server does not return 16 bytes (n=%d, handle=%d, udp_fd=%d, errno=%d)",
    32393234                rdr->label, n, handle, cl->udp_fd, err);
    32403235        block_connect(rdr);
     
    34063401    //      loc_sa.sin_port = htons(rdr->l_port);
    34073402
     3403    if (cl->udp_fd)
     3404        cc_cli_close(cl, FALSE);
     3405       
    34083406    if ((cl->udp_fd = socket(PF_INET, SOCK_STREAM, p_proto)) <= 0) {
    34093407        cs_log("%s Socket creation failed (errno=%d, socket=%d)", rdr->label,
  • trunk/oscam-simples.c

    r3936 r3987  
    932932}
    933933
     934static char *netw_ext_prot[] = { "cccam", "cccam ext", "newcamd524" };
     935
    934936char *reader_get_type_desc(struct s_reader * rdr, int extended)
    935937{
     
    943945
    944946    if ((rdr->typ == R_NEWCAMD) && (rdr->ncd_proto == NCD_524))
    945         desc = "newcamd524";
     947        desc = netw_ext_prot[2];
    946948
    947949    else if (rdr->typ == R_CCCAM)
    948         desc = "cccam";
     950        desc = netw_ext_prot[0];
    949951
    950952    else if (rdr->client && rdr->client->cc && ((struct cc_data *)rdr->client->cc)->extended_mode) {
    951         if(extended)
    952             desc = "cccam ext";
    953         else
    954             desc = "cccam";
     953        desc = netw_ext_prot[extended];
    955954    }
    956955
     
    967966        case 'c'    :
    968967            if (cl->cc && ((struct cc_data *)cl->cc)->extended_mode) {
    969                 ctyp = "cccam ext";
     968                ctyp = netw_ext_prot[1];
    970969                break;
    971970            }
Note: See TracChangeset for help on using the changeset viewer.