• R/O
  • SSH
  • HTTPS

bchan: 提交


Commit MetaInfo

修訂523 (tree)
時間2012-07-08 19:35:15
作者ornse01

Log Message

fix User-Agent header handling.

Change Summary

差異

--- bchanl/trunk/src/bbsmenuretriever.c (revision 522)
+++ bchanl/trunk/src/bbsmenuretriever.c (revision 523)
@@ -50,9 +50,11 @@
5050 http_connector_t *connector;
5151 ID endpoint;
5252 HTTP_STATUSCODE status;
53+ UB *useragent;
54+ W useragent_len;
5355 };
5456
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)
5658 {
5759 bbsmnretriever_t *retriever;
5860
@@ -63,6 +65,8 @@
6365 retriever->connector = connector;
6466 retriever->endpoint = -1;
6567 retriever->status = 0;
68+ retriever->useragent = useragent;
69+ retriever->useragent_len = useragent_len;
6670
6771 return retriever;
6872 }
@@ -120,7 +124,9 @@
120124 "Accept: */*\r\n"
121125 "Referer: http://menu.2ch.net/\r\n"
122126 "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";
124130
125131 EXPORT W bbsmnretriever_recievehttpevent(bbsmnretriever_t *retriever, bbsmncache_t *cache, http_connector_event *hevent)
126132 {
@@ -133,6 +139,12 @@
133139 if (hevent->type == HTTP_CONNECTOR_EVENTTYPE_SEND) {
134140 http_connector_sendrequestline(connector, hevent->endpoint, path, strlen(path));
135141 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));
136148 http_connector_sendheaderend(connector, hevent->endpoint);
137149 http_connector_sendmessagebody(connector, hevent->endpoint, NULL, 0);
138150 http_connector_sendmessagebodyend(connector, hevent->endpoint);
--- bchanl/trunk/src/bbsmenuretriever.h (revision 522)
+++ bchanl/trunk/src/bbsmenuretriever.h (revision 523)
@@ -33,7 +33,7 @@
3333
3434 typedef struct bbsmnretriever_t_ bbsmnretriever_t;
3535
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);
3737 IMPORT VOID bbsmnretriever_delete(bbsmnretriever_t *retriever);
3838 IMPORT W bbsmnretriever_sendrequest(bbsmnretriever_t *retriever, bbsmncache_t *cache);
3939 IMPORT Bool bbsmnretriever_iswaitingendpoint(bbsmnretriever_t *retriever, ID endpoint);
--- bchanl/trunk/src/main.c (revision 522)
+++ bchanl/trunk/src/main.c (revision 523)
@@ -88,6 +88,9 @@
8888 #define BCHANL_COMMONSTORAGE_EXTBBSLIST_RECTYPE 30
8989 #define BCHANL_COMMONSTORAGE_EXTBBSLIST_SUBTYPE 1
9090
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+
9194 typedef struct bchanl_hmistate_t_ bchanl_hmistate_t;
9295 struct bchanl_hmistate_t_ {
9396 PTRSTL ptr;
@@ -662,7 +665,7 @@
662665 if (cache == NULL) {
663666 goto error_cache;
664667 }
665- retriever = bbsmnretriever_new(connector);
668+ retriever = bbsmnretriever_new(connector, bchanl_httpheader_useragent, bchanl_httpheader_useragent_len);
666669 if (retriever == NULL) {
667670 goto error_retriever;
668671 }
@@ -1274,7 +1277,7 @@
12741277 goto error_http_connector;
12751278 }
12761279
1277- retriever = sbjtretriever_new(connector);
1280+ retriever = sbjtretriever_new(connector, bchanl_httpheader_useragent, bchanl_httpheader_useragent_len);
12781281 if (retriever == NULL) {
12791282 DP_ER("sbjtretriever_new error", 0);
12801283 goto error_retriever;
--- bchanl/trunk/src/subjectretriever.c (revision 522)
+++ bchanl/trunk/src/subjectretriever.c (revision 523)
@@ -50,9 +50,11 @@
5050 http_connector_t *connector;
5151 ID endpoint;
5252 HTTP_STATUSCODE status;
53+ UB *useragent;
54+ W useragent_len;
5355 };
5456
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)
5658 {
5759 sbjtretriever_t *retriever;
5860
@@ -63,6 +65,8 @@
6365 retriever->connector = connector;
6466 retriever->endpoint = -1;
6567 retriever->status = 0;
68+ retriever->useragent = useragent;
69+ retriever->useragent_len = useragent_len;
6670
6771 return retriever;
6872 }
@@ -125,7 +129,9 @@
125129 LOCAL UB header2[] =
126130 "/\r\n"
127131 "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";
129135
130136 EXPORT W sbjtretriever_recievehttpevent(sbjtretriever_t *retriever, sbjtcache_t *cache, http_connector_event *hevent)
131137 {
@@ -158,6 +164,12 @@
158164 http_connector_sendheader(connector, hevent->endpoint, "/", 1);
159165 http_connector_sendheader(connector, hevent->endpoint, board, board_len);
160166 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));
161173 http_connector_sendheaderend(connector, hevent->endpoint);
162174 http_connector_sendmessagebody(connector, hevent->endpoint, NULL, 0);
163175 http_connector_sendmessagebodyend(connector, hevent->endpoint);
--- bchanl/trunk/src/subjectretriever.h (revision 522)
+++ bchanl/trunk/src/subjectretriever.h (revision 523)
@@ -33,7 +33,7 @@
3333
3434 typedef struct sbjtretriever_t_ sbjtretriever_t;
3535
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);
3737 IMPORT VOID sbjtretriever_delete(sbjtretriever_t *retriever);
3838 IMPORT W sbjtretriever_sendrequest(sbjtretriever_t *retriever, sbjtcache_t *cache);
3939 IMPORT Bool sbjtretriever_iswaitingendpoint(sbjtretriever_t *retriever, ID endpoint);
Show on old repository browser