fix User-Agent header handling.
@@ -50,9 +50,11 @@ | ||
50 | 50 | http_connector_t *connector; |
51 | 51 | ID endpoint; |
52 | 52 | HTTP_STATUSCODE status; |
53 | + UB *useragent; | |
54 | + W useragent_len; | |
53 | 55 | }; |
54 | 56 | |
55 | -EXPORT bbsmnretriever_t* bbsmnretriever_new(http_connector_t *connector) | |
57 | +EXPORT bbsmnretriever_t* bbsmnretriever_new(http_connector_t *connector, UB *useragent, W useragent_len) | |
56 | 58 | { |
57 | 59 | bbsmnretriever_t *retriever; |
58 | 60 |
@@ -63,6 +65,8 @@ | ||
63 | 65 | retriever->connector = connector; |
64 | 66 | retriever->endpoint = -1; |
65 | 67 | retriever->status = 0; |
68 | + retriever->useragent = useragent; | |
69 | + retriever->useragent_len = useragent_len; | |
66 | 70 | |
67 | 71 | return retriever; |
68 | 72 | } |
@@ -120,7 +124,9 @@ | ||
120 | 124 | "Accept: */*\r\n" |
121 | 125 | "Referer: http://menu.2ch.net/\r\n" |
122 | 126 | "Accept-Language: ja\r\n" |
123 | -"User-Agent: Monazilla/1.00\r\n"; | |
127 | +"User-Agent: "; | |
128 | +LOCAL UB header_default_ua[] = "Monazilla/1.00"; | |
129 | +LOCAL UB header_crlf[] = "\r\n"; | |
124 | 130 | |
125 | 131 | EXPORT W bbsmnretriever_recievehttpevent(bbsmnretriever_t *retriever, bbsmncache_t *cache, http_connector_event *hevent) |
126 | 132 | { |
@@ -133,6 +139,12 @@ | ||
133 | 139 | if (hevent->type == HTTP_CONNECTOR_EVENTTYPE_SEND) { |
134 | 140 | http_connector_sendrequestline(connector, hevent->endpoint, path, strlen(path)); |
135 | 141 | http_connector_sendheader(connector, hevent->endpoint, header, strlen(header)); |
142 | + if (retriever->useragent != NULL) { | |
143 | + http_connector_sendheader(connector, hevent->endpoint, retriever->useragent, retriever->useragent_len); | |
144 | + } else { | |
145 | + http_connector_sendheader(connector, hevent->endpoint, header_default_ua, strlen(header_default_ua)); | |
146 | + } | |
147 | + http_connector_sendheader(connector, hevent->endpoint, header_crlf, strlen(header_crlf)); | |
136 | 148 | http_connector_sendheaderend(connector, hevent->endpoint); |
137 | 149 | http_connector_sendmessagebody(connector, hevent->endpoint, NULL, 0); |
138 | 150 | http_connector_sendmessagebodyend(connector, hevent->endpoint); |
@@ -33,7 +33,7 @@ | ||
33 | 33 | |
34 | 34 | typedef struct bbsmnretriever_t_ bbsmnretriever_t; |
35 | 35 | |
36 | -IMPORT bbsmnretriever_t* bbsmnretriever_new(http_connector_t *connector); | |
36 | +IMPORT bbsmnretriever_t* bbsmnretriever_new(http_connector_t *connector, UB *useragent, W useragent_len); | |
37 | 37 | IMPORT VOID bbsmnretriever_delete(bbsmnretriever_t *retriever); |
38 | 38 | IMPORT W bbsmnretriever_sendrequest(bbsmnretriever_t *retriever, bbsmncache_t *cache); |
39 | 39 | IMPORT Bool bbsmnretriever_iswaitingendpoint(bbsmnretriever_t *retriever, ID endpoint); |
@@ -88,6 +88,9 @@ | ||
88 | 88 | #define BCHANL_COMMONSTORAGE_EXTBBSLIST_RECTYPE 30 |
89 | 89 | #define BCHANL_COMMONSTORAGE_EXTBBSLIST_SUBTYPE 1 |
90 | 90 | |
91 | +LOCAL UB bchanl_httpheader_useragent[] = "Monazilla/1.00 (bchanl/0.101)"; | |
92 | +LOCAL W bchanl_httpheader_useragent_len = sizeof(bchanl_httpheader_useragent) - 1; | |
93 | + | |
91 | 94 | typedef struct bchanl_hmistate_t_ bchanl_hmistate_t; |
92 | 95 | struct bchanl_hmistate_t_ { |
93 | 96 | PTRSTL ptr; |
@@ -662,7 +665,7 @@ | ||
662 | 665 | if (cache == NULL) { |
663 | 666 | goto error_cache; |
664 | 667 | } |
665 | - retriever = bbsmnretriever_new(connector); | |
668 | + retriever = bbsmnretriever_new(connector, bchanl_httpheader_useragent, bchanl_httpheader_useragent_len); | |
666 | 669 | if (retriever == NULL) { |
667 | 670 | goto error_retriever; |
668 | 671 | } |
@@ -1274,7 +1277,7 @@ | ||
1274 | 1277 | goto error_http_connector; |
1275 | 1278 | } |
1276 | 1279 | |
1277 | - retriever = sbjtretriever_new(connector); | |
1280 | + retriever = sbjtretriever_new(connector, bchanl_httpheader_useragent, bchanl_httpheader_useragent_len); | |
1278 | 1281 | if (retriever == NULL) { |
1279 | 1282 | DP_ER("sbjtretriever_new error", 0); |
1280 | 1283 | goto error_retriever; |
@@ -50,9 +50,11 @@ | ||
50 | 50 | http_connector_t *connector; |
51 | 51 | ID endpoint; |
52 | 52 | HTTP_STATUSCODE status; |
53 | + UB *useragent; | |
54 | + W useragent_len; | |
53 | 55 | }; |
54 | 56 | |
55 | -EXPORT sbjtretriever_t* sbjtretriever_new(http_connector_t *connector) | |
57 | +EXPORT sbjtretriever_t* sbjtretriever_new(http_connector_t *connector, UB *useragent, W useragent_len) | |
56 | 58 | { |
57 | 59 | sbjtretriever_t *retriever; |
58 | 60 |
@@ -63,6 +65,8 @@ | ||
63 | 65 | retriever->connector = connector; |
64 | 66 | retriever->endpoint = -1; |
65 | 67 | retriever->status = 0; |
68 | + retriever->useragent = useragent; | |
69 | + retriever->useragent_len = useragent_len; | |
66 | 70 | |
67 | 71 | return retriever; |
68 | 72 | } |
@@ -125,7 +129,9 @@ | ||
125 | 129 | LOCAL UB header2[] = |
126 | 130 | "/\r\n" |
127 | 131 | "Accept-Language: ja\r\n" |
128 | -"User-Agent: Monazilla/1.00\r\n"; | |
132 | +"User-Agent: "; | |
133 | +LOCAL UB header_default_ua[] = "Monazilla/1.00"; | |
134 | +LOCAL UB header_crlf[] = "\r\n"; | |
129 | 135 | |
130 | 136 | EXPORT W sbjtretriever_recievehttpevent(sbjtretriever_t *retriever, sbjtcache_t *cache, http_connector_event *hevent) |
131 | 137 | { |
@@ -158,6 +164,12 @@ | ||
158 | 164 | http_connector_sendheader(connector, hevent->endpoint, "/", 1); |
159 | 165 | http_connector_sendheader(connector, hevent->endpoint, board, board_len); |
160 | 166 | http_connector_sendheader(connector, hevent->endpoint, header2, strlen(header2)); |
167 | + if (retriever->useragent != NULL) { | |
168 | + http_connector_sendheader(connector, hevent->endpoint, retriever->useragent, retriever->useragent_len); | |
169 | + } else { | |
170 | + http_connector_sendheader(connector, hevent->endpoint, header_default_ua, strlen(header_default_ua)); | |
171 | + } | |
172 | + http_connector_sendheader(connector, hevent->endpoint, header_crlf, strlen(header_crlf)); | |
161 | 173 | http_connector_sendheaderend(connector, hevent->endpoint); |
162 | 174 | http_connector_sendmessagebody(connector, hevent->endpoint, NULL, 0); |
163 | 175 | http_connector_sendmessagebodyend(connector, hevent->endpoint); |
@@ -33,7 +33,7 @@ | ||
33 | 33 | |
34 | 34 | typedef struct sbjtretriever_t_ sbjtretriever_t; |
35 | 35 | |
36 | -IMPORT sbjtretriever_t* sbjtretriever_new(http_connector_t *connector); | |
36 | +IMPORT sbjtretriever_t* sbjtretriever_new(http_connector_t *connector, UB *useragent, W useragent_len); | |
37 | 37 | IMPORT VOID sbjtretriever_delete(sbjtretriever_t *retriever); |
38 | 38 | IMPORT W sbjtretriever_sendrequest(sbjtretriever_t *retriever, sbjtcache_t *cache); |
39 | 39 | IMPORT Bool sbjtretriever_iswaitingendpoint(sbjtretriever_t *retriever, ID endpoint); |